Rxjs 中频交易系统的干扰器与反应式体系结构
我正在尝试为我正在开发的中频交易系统选择合适的体系结构。目前,我从Web套接字或Rest接收消息,并在那里处理它们。有时它包括IO操作(即额外的rest请求),所以它的工作速度非常慢,我想所有其他消息都在WebSocket客户端的实现中得到缓冲。这种幼稚的方法看起来不太具有可扩展性Rxjs 中频交易系统的干扰器与反应式体系结构,rxjs,reactive,disruptor-pattern,rx.net,lmax,Rxjs,Reactive,Disruptor Pattern,Rx.net,Lmax,我正在尝试为我正在开发的中频交易系统选择合适的体系结构。目前,我从Web套接字或Rest接收消息,并在那里处理它们。有时它包括IO操作(即额外的rest请求),所以它的工作速度非常慢,我想所有其他消息都在WebSocket客户端的实现中得到缓冲。这种幼稚的方法看起来不太具有可扩展性 我一直在阅读处理交易消息的成熟体系结构,目前,我的选择范围已缩小到干扰程序和反应式编程。我想征求你的意见哪一个是更好的选择。具体而言,我关注两种情况: 消息处理程序之间的逻辑依赖关系。当我连接到一个特定的交易所时,
我一直在阅读处理交易消息的成熟体系结构,目前,我的选择范围已缩小到干扰程序和反应式编程。我想征求你的意见哪一个是更好的选择。具体而言,我关注两种情况:
我想你应该看看。它的设计非常类似于Disruptor,您可以使用不同的配置在多个主题中分割消息。取决于您喜欢低延迟还是高吞吐量。它还支持动态压缩消息,以减少带宽使用,或者允许您将一个主题内的消息拆分到多个分区中,每个分区可能托管在不同的计算机上。这对于负载平衡非常有用。 当然,复制是受支持的,因此如果您的一台机器崩溃,系统将保持正常工作 要阅读和处理卡夫卡消息,可以使用多种模式。默认情况下(至少在使用C++ LabdKaFaClient)时,允许您进行轮询,但是您可以很容易地在上面设置基于回调的系统。您也可以使用反应式系统,它非常自然地映射到Kafka所拥有的主题/分区概念 总之: 要处理(1)个场景,您可以根据不同主题的紧急程度来拆分消息,并让优先级更高的线程处理更重要的消息(还可以设置kafka以减少这些主题的延迟)
为了处理您的(2)个场景,librdkafka(C++)提供了一种方法,可以在应用程序跟上时暂时暂停主题。我强烈建议对这两个原型进行模拟。纯粹从stackoverflow的答案(也就是“一定要选择X”)来驱动应用程序的架构是很高的风险的。