我正在尝试决定使用哪种技术将我的实时市场数据广播到我的交易策略中。场景如下,
我有多个交易策略订阅不同的代码,当收到某个代码的市场数据时,我会将这个代码的市场数据广播到策略。监听交易策略将根据收到的市场数据采取行动。
我有两种类型的实现,
1) 是使用类似Messenger
提供的类的事件总线mvvmlight
,
2) 另一种方法是使用消息队列系统,例如ZeroMQ
( NetMQ
)
注意市场数据api和交易策略都在同一台机器上,所以不涉及网络。
哪个更适合我的情况?
我正在尝试决定使用哪种技术将我的实时市场数据广播到我的交易策略中。场景如下,
我有多个交易策略订阅不同的代码,当收到某个代码的市场数据时,我会将这个代码的市场数据广播到策略。监听交易策略将根据收到的市场数据采取行动。
我有两种类型的实现,
1) 是使用类似Messenger
提供的类的事件总线mvvmlight
,
2) 另一种方法是使用消息队列系统,例如ZeroMQ
( NetMQ
)
注意市场数据api和交易策略都在同一台机器上,所以不涉及网络。
哪个更适合我的情况?
为了分发市场数据,ZeroMQ (NetMQ) 中的 Pub-Sub 模式更好。
恕我直言,首先应定义“适用性”的指标,否则该问题没有任何理由。
如果是我的项目,
我会权衡以下因素: -故障安全架构
的
概念能力( N + M )
- 两者ZeroMQ
+nanomsg
都有能力
- 性能可扩展性的线性- ZeroMQ
+nanomsg
在这方面非常出色
- 代码库
- 语言绑定的宽度(以增加经济性ROI)
- 适应成本 + 学习曲线(整个团队/公司/第 3 方供应商)
PUB/SUB
最好的选择吗?记住光荣的马斯洛之锤:
“当你拥有的唯一工具是一把锤子时,每一个问题都开始像钉子一样。
虽然PUB/SUB
最初可能会引起您的注意,但您稍后可能会意识到由于SUB
-side 过滤,它对性能具有毁灭性的影响。
如果您在测试中不这样做,很高兴在架构到位后不要在后期遇到这个问题......