请稍等 ...
×

采纳答案成功!

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

关于排队机内存定序

请教下老师实际生产环境定序逻辑是否也是如课程中提到的这样的方式呢 ?这里有两个小问题,可能问的不太专业,还请麻烦您看下

1.关于定序操作在内存中完成的疑问:排队机leader节点会从各个gateway 收集委托订单数据(gateway-1,gateway-2…gateway-N),如果订单量比较大,比如收集到 gateway-M 的时候,有没有可能出现排队机内存不够的问题,造成无法继续完成后续收集的任务,或者实际排队机内存超级大,生产中根本不需要考虑这个问题 ?

2.排队机定序操作在在内存中排序的过程中,排队机进程crash掉了或者断电重启等造成本次定序失败,后续排队机集群重新选择一个新的leader的再去(gateway-1,gateway-2…gateway-N)收集委托订单,但是此时以前定序失败的那些委托订单已经找不回来了,因为之前那个排队机拉取委托单的时候,gateway的内存队列已经清空了,那么这种情况需要如何处理呢,如何重新来处理以前定序失败的那些老的委托单呢。实际您的架构设计这块是采用怎样的一个补偿方案呢?

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

1回答

Gudy 2023-10-19 15:36:01
  1. 排队机是内存和磁盘相结合的,它主要作用是给委托订单打上编号(这个编号是全局递增的)并发给撮合模块,之后排队机就会把这个单子写磁盘,写数据库或者写到其他非易失的存储介质中,因此不需要很大的内存。

  2. raft排队机其实不存在单点失效的问题,因为一笔委托能成功进排队机,raft集群已经把这笔委托同步到所有的排队机了,所以一台坏了不会导致以前的委托订单。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕少4057723 #1
    谢谢回复
    1.
    抱歉可能我的问题没有描述清楚,我的意思是排队机从网关抓取订单在内存中排序的时候,举个例子网关中有1万笔订单,排队机内存只能完成1千笔订单的排序,是否会出现内存不够用无法完成当前所有排序的情况 ?
    
    
    2.
    我理解的关于 排队机异常问题是:
    排队机按照 抓单-->定序-->insertToKvStore(入库)    进行处理
    也就是说一笔委托能成功进排队机的前提是调用 insertToKvStore 入库才算是完成其他raft节点的同步哦,如果在排序之后但在调用insertToKvStore之前,也就是说还没有机会入库呢,系统crash 了,那以前的委托订单会有丢失呢 ?
    回复 有任何疑惑可以回复我~ 2023-10-19 15:51:49
  • 提问者 慕少4057723 #2
    请教老师,raft 一致性我理解是只有数据在大部分节点完成同步了,此时就是真正写入成功了哦
    
    但是排队机的逻辑是  抓单-->定序-->insertToKvStore(入库) ,所以我的问题是抓单-->定序完成了但在insertToKvStore之前,节点crash 了,此时实际上数据还只是在leader节点,并没有完成同步呢吧,所以这种情况下以前的委托订单是否会丢失呢?
    回复 有任何疑惑可以回复我~ 2023-10-19 16:19:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信