请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问撮合系统如何做到高可用的?Disruptor在撮合系统中作用是什么?

老师,请问撮合系统目前已经做到高可用了吗?Distuptor在系统中作用是什么?哪里体现出其高性能的?期望老师抽空解答下,谢谢您

正在回答 回答被采纳积分+3

3回答

提问者 superzjcy 2020-12-30 10:23:33

老师还有几个问题想请教下。

  1. 这两天看了下disruptor原理,想请教下老师之前生产环境撮合系统也是和项目中一样的用法吗?根据老师的经验使用了disruptor和不使用,在生产环境性能提升有多少倍?我本地用BlockingQueue对比,大概3倍左右。

  2. 老师过往的生产环境通常同时撮合的订单量大概有多大?TPS大概是多少呢?挺好奇生产环境的数据。

  3. 关于raft协议,我最近也快速学习了下。因为raft是强领导型的协议。一切已leader为主。写入的确认需要过半。随着节点增多,写入的tps应该是比较受影响?

  4. 老师之前的生产环境的排队机也是基于raft协议的吗?生产环境集群节点大概多少?写入的TPS是多少呢?

1 回复 有任何疑惑可以回复我~
提问者 superzjcy 2020-12-29 12:00:24

谢谢老师的解答。不过以下问题还是没有弄明白。

  1. 目前只看到了排队机的高可用,撮合的高可用具体是怎么做的呢?

  2. 为啥需要在排队机进行定序处理?我理解是撮合那边会进行价格优先,时间优先的排序处理。

  3. 排队机是会向所有网关去抓取订单吗?

  4. 排队机到网关的物理距离也是不一样的,公平性具体体现在同一个频率去抓取订单?

0 回复 有任何疑惑可以回复我~
  • Gudy #1
    1.撮合的高可用是通过排队机来辅助的,撮合核心的首要任务是高效,所以它不做任何高可用的处理,一旦挂了,从排队机拉数据重算。
    2.排队机就是专门给撮合核心定序的,撮合只是进行撮,其他逻辑一概不管。
    3.是的。
    4.排队机是按照固定频率扫面所有网关的,在收集所有数据后统一排序,这对所有网关都是公平的
    回复 有任何疑惑可以回复我~ 2020-12-29 16:40:09
  • 提问者 superzjcy #2
    谢谢老师,目前在撮合中没有看到如果挂了具体怎么处理的代码,这部分是没有实现吧?我目前想到的解决方案是基于raft选举机制,只有主去撮合,如果主挂了,新的主去排队机拉数据,重新撮合,同时每笔撮合完成的订单需要从排队机删除,对吧
    回复 有任何疑惑可以回复我~ 2020-12-29 19:31:13
  • 我觉得可以这样理解,排队机除了定序,还承担了存储作用。
    存储的数据就是定序后的全量委托单,
    这部分需要高可用,原因是万一宕机,可以重新根据撮合进度重放订单数据恢复。
    而撮合在这个地方是每个撮合同时处理一个标的委托单,把撮合结果持久化并返回上游以后将排队机中撮合完成的订单清理,(也可以不清理)
    本课程的撮合与排队机是分别部署的,也就是存储与计算分离,实际上撮合与定序也可以放在一起,也就是撮合自己定序后持久化数据,再转发给撮合流程,那么高可用就变成了整体的高可用。
    而本身撮合业务就是一个强顺序性,一致性的业务,所以也就不可能同时有多个撮合对一个标的进行撮合业务,
    回复 有任何疑惑可以回复我~ 2022-02-18 21:03:20
Gudy 2020-12-29 09:48:50
  1. 撮合部分实现了高可用

  2. disruptor可以理解为一个高性能队列

  3. 高性能提现在数据的编解码还有撮合数据结构的设计

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信