我是否应该在“股票交易”系统中使用共享内存来分离“市场数据接收器”部分
本文关键字:内存 分离 共享 部分 接收器 数据 系统 是否 股票交易 交易 | 更新日期: 2023-09-27 18:27:42
我的交易系统由两部分组成
- "UDP 军事广播市场数据接收器" - 仅从 UDP 组播接收市场数据,没有其他内容(订单簿、订单、最佳买入价/卖出价等(
- "主系统" - 使用市场数据,计算新订单,发送订单等。
这些系统连接得很好 - 典型场景是这样的:
- "UDP" -> "Main" Apple BID/ASK 500.1/500.2
- Main sends order № 1122 Apple BUY 555
- "UDP" -> "Main" Order № 1122 Executed
- Main send order № 1123 Apple SELL 505
- "UDP" -> "Main" Order №1123 Registered, Ammount 1, Executed 0, Left 1
">UDP"部分不知道"主要"的存在。"主要"使用"UDP">
我想将它们作为单独的项目,因为理论上我可以运行"UDP"本身而不运行"Main"。或者我可以运行几个"主"实例。
因此,"UDP"应该产生一些其他人可以使用的可写存储。
但是"Main"和"UDP"是紧密相连的 - 它们使用相同的类和相同的结构来表示Quotes
等。
而且我也不能有性能惩罚,性能非常重要,我需要一些与在应用程序内存储数据一样快的东西。
我应该使用"共享内存"还是其他技术,或者最好将所有内容都放在一个项目中?
我认为我的问题很普遍,因为许多不同的市场数据适配器已经由不同的公司编写,所以应该有一些"默认"解决方案。
如果你真的需要性能,解决方案是使用具有明确分离层的单个项目。无论您选择哪种"分离"解决方案,总会有一些开销。
另一方面,解绑可以帮助您扩展应用程序,也许有一天"主要"可能不在"Udp"所在的同一台计算机上。看看.NetRemoting
来实现这一目标。
希望这有帮助。