.net - 每秒能够处理 40,000 条消息的系统的模式和技术

标签 .net hardware design-patterns failover high-load

我们需要构建一个每秒能够处理 40,000 条消息的系统。
在任何软件或硬件故障的情况下都不会丢失任何消息。

每条消息大小约为 2-4Kb。

消息的处理包括验证消息、进行一些简单的算术计算、将结果保存到数据库以及(有时)向其他系统发送通知。

优选的软件技术是.Net。

哪些软件和硬件模式最适合此类任务?

它需要多少硬件?

最佳答案

  • 消息队列。您的流程听起来像是它的主要目标。
  • 集群/负载平衡。
  • 简化您的代码

  • 我要做的第一件事是排队通知。然后我将所有不需要返回值的数据库写入排队。然后我会考虑扩大规模。

    其他注意事项:
    * 避免使用一个笨重的框架,它在幕后做的工作比你可能需要的要多。
    * 尽可能使用缓存和静态变量。

    每秒 40,000 条消息是可行的,但是当您将 IO 添加到混合中时,即使在具有大量内存的超快速硬件上也可能无法预测。尽可能多地进行带外处理。如果失败,请查看您是否可以运行多个线程(在多核或多进程机器上)并在需要时查看集群中的多个服务器。

    编辑:

    在这样的场景中,我怎么强调负载测试的好处都不为过。做一个简单的原型(prototype)和负载测试。完善原型(prototype),直到获得所需的结果。然后基于原型(prototype)构建最终解决方案。在您测试所需的性能水平之前,您只能猜测解决方案。

    关于.net - 每秒能够处理 40,000 条消息的系统的模式和技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874093/

    相关文章:

    c# - 可观察集合问题

    c# - 当 DataSource 是 BindingList 时过滤 BindingSource

    c# - Excel进程没有关闭

    c++ - GetVolumeNameForVolumeMountPoint 返回 false

    c++ - 允许每个时间步将多种类型转换为文本

    c# - 日期时间转换和解析 DateTime.Now.ToString ("MM/dd/yyyy hh:mm:ss.fff")

    c++ - 利用 sandy bridge 的硬件真随机数生成器?

    Android 和手写笔检测

    c# - 多阶段状态的嵌套类

    php - 在存储库模式中保存关系的好方法是什么?