gpt4 book ai didi

c# - 为 WPF 应用程序设计大容量市场数据服务

转载 作者:行者123 更新时间:2023-11-30 17:10:37 25 4
gpt4 key购买 nike

我想创建自己的小型项目,其中包含供 WPF 应用程序使用的虚构大量数据(期权交易),以便更好地理解设计实时系统的设计概念和注意事项,并希望了解使用了何种技术和方法。请不要提及像 Tibco 这样的第三方解决方案——这是为了学习目的。我的意图是 WPF 应用程序每 5 秒刷新一次 UI

在设计我虚构的市场数据服务器时,考虑到高容量性能是一个标准,我想到了一些快速的想法 - 多播 UDP(这是不是太低级/一个糟糕的方向?),一种使用队列的消息传递架构例如 MSMQ 或 RabbitMQ,客户端应用程序通过 WCF TCP 绑定(bind)或 Web 服务向远程服务主机发起请求。

我的一个想法是客户维护自己的本地队列并订阅定价服务器使用消息传递解决方案广播的主题?或者,也许服务器会将数据平等地广播给所有客户端,然后将其留给客户端在本地过滤和整理数据?根据人们的经验,每种方法的优缺点是什么,还有我在这里错过的任何其他方法吗?我想这归结为 - 客户端应该提取数据还是服务器应该将数据推送给他们?

另一个问题是 - 这些消息将采用什么有线格式?我主要习惯于使用丰富的业务对象类,分为存储库层、域模型(具有验证和工作流逻辑的方法)和简单的服务层。我是否仍然可以利用这种方法并仍然保持我的性能目标,或者我是否需要创建一种更轻量级的数据有效负载格式?

最佳答案

在深入到网络级优化之前,我会从较高层开始设计这样的系统。

RabbitMQ 为路由消息提供了不同类型的交换。向每个客户端广播所有消息(扇出交换)的方法在 RabbitMQ 服务器端速度稍快,但这仅适用于低容量消息,并且前提是客户端通过高速链路(例如本地千兆以太网)连接。相反,使用直接或局部交换可能会显着降低您的网络延迟。您可以在 RabbitMQ 网站上阅读有关交换类型的更多信息。

你的最后一个问题是关于线格式的。理论上,RabbitMQ 允许任何字符串(甚至二进制)有效载荷,因此它是试图将更多信息压缩到更少字节中的问题。根据我的经验,只要您的消息不是通过网络数据包 MTU,压缩或选择巧妙的编码方案的 yield 都是微不足道的。

一般来说,想想您在每次优化上花费了多少时间,以及预期的投资返回率是多少。 IMO 一些优化比其他优化更有用。如果我是你,我会非常仔细地查看 RabbitMQ 配置参数。例如,看看您是否可以使用每个进程的消息队列设置 rabbit MQ 服务器。

关于c# - 为 WPF 应用程序设计大容量市场数据服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993097/

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