背景
我们一直在努力寻找“高性能”应用的解决方案。该应用程序基本上是一个高吞吐量的内存管理器,可以同步回写到磁盘。其“读取”和“写入”速度非常快,大约每秒处理3000个事务。我们尽可能地使用内存来处理数据,但最终数据会过时并需要刷新到磁盘,这就导致了一个巨大的“瓶颈”。该应用程序是多线程的,有约50个线程。没有IPC(进程间通信)。
尝试
我们最初用Java编写了这个应用程序,在某个负载下它运行得很好,但达到瓶颈后就无法跟上速度了。 然后我们尝试使用C#,但遇到了相同的瓶颈。 我们尝试使用未托管的代码(C#),尽管在初始测试中使用MMF(内存映射文件)非常快,但在生产中,读取却很慢(使用Views)。 我们尝试过CouchBase,但我们遇到了高网络利用率的问题。这可能是我们配置不良!
额外信息:在我们的Java尝试中(非MMF),我们的带有需要刷新到磁盘的信息队列的线程达到了无法跟上“写入”到磁盘的程度。 在我们的C#内存映射文件方法中,问题在于读取非常慢,而写入却完美工作。由于某种原因,Views很慢!
问题
所以问题是,当您打算传输大量数据时,是否可以有人提供可能有助于解决问题的方法或架构设计?我知道这似乎有点宽泛,但我认为高性能、高吞吐量的特定性质应该可以缩小答案范围。
有人可以证明在这个级别上使用Couchbase、MongoDB或Cassandra吗?其他的想法或解决方案也将不胜感激。