gpt4 book ai didi

c# - 高性能开发

转载 作者:可可西里 更新时间:2023-11-01 09:13:50 25 4
gpt4 key购买 nike

背景

我们一直在非常努力地尝试为“高性能”应用程序提出解决方案。该应用程序基本上是一个高吞吐量的内存管理器,可以同步回磁盘。 “读取”和“写入”非常高,每秒大约 3000 个事务。我们尝试在内存中做尽可能多的事情,但最终数据会变得陈旧,需要刷新到磁盘,这就是随之而来的巨大“瓶颈”。该应用程序是多线程的,大约有 50 个线程。没有IPC(进程间通信)

尝试

我们最初是用 Java 编写的,它运行得很好,直到达到一定的负载,遇到了瓶颈,它就跟不上了。然后我们在C#中尝试,同样遇到了瓶颈。我们使用非托管代码 (C#) 进行了尝试,虽然在初始测试中使用 MMF(内存映射文件)速度非常快,但在生产中,读取速度很慢(正在使用 View )。我们确实尝试过 CouchBase,但我们无意中遇到了围绕高网络利用率的问题。这可能是我们的配置不当!

额外信息:在我们的 Java 尝试(非 MMF)中,我们的线程和需要刷新到磁盘的信息队列构建到无法跟上“写入”的程度到磁盘。在我们的 C# 内存映射文件方法中,问题是 READS 非常慢,而 WRITES 工作得很好。出于某种原因,View 很慢!

问题

所以问题是,您打算传输大量数据的情况;有人可以协助提供可能提供帮助的可能方法或架构设计吗?我知道这似乎有点宽泛,但我认为高性能、高吞吐量的具体性质应该缩小答案范围。

谁能保证在这样的水平上使用 Couchbase、MongoDB 或 Cassandra?其他想法或解决方案将不胜感激。

最佳答案

首先,我想明确表示,我几乎没有(如果有的话)构建高性能、可扩展应用程序的经验。

Martin Fowler 描述了 LMAX 架构,该架构允许应用程序在单个线程上每秒处理大约 600 万个订单。我不确定它是否可以帮助您(因为您似乎需要移动大量数据),但也许您可以从中获得一些想法:http://martinfowler.com/articles/lmax.html

架构基于Event Sourcing这通常用于提供(相对)简单的可扩展性。

关于c# - 高性能开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12000635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com