作者,你好,首先非常感谢你开源代码,这里有个疑问需要咨询下你,MatchExecutor.doMatch 中,其实是你核心的撮合逻辑,其中如果中间出现问题,如何保证数据的一致性呢? 比如代码中在撮合一笔成功后会发送一条撮合记录mq ( matchDetailHandler.sendTradeRecord) , 但是如果在之后的代码逻辑中出现问题,比如系统突然挂掉,导致从outMap中并没有移除对应的对手单,这会不会有问题呢?
价格撮合就是会出现类似的问题,所以要采用价格撮合的话,就必须有消息消费完回执,再消费下一个消息,如果出了问题,就的有日志对账系统,根据日志做数据补偿机制。这也是采用价格撮合提升性能的最大弊端。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
比如交易走到out处理了,挂了,就处理out中的数据处理。如果在matchHandler中就挂了,直接重发mq消息好了。当然处理的方案比较多。
就像订单薄撮合,你在撮合后,没发出去交易记录一样,也得监听补发消息。
比如交易走到out处理了,挂了,就处理out中的数据处理。如果在matchHandler中就挂了,直接重发mq消息好了。当然处理的方案比较多。
就像订单薄撮合,你在撮合后,没发出去交易记录一样,也得监听补发消息。
@kinbug 看了你的回复,其实说的还是比较笼统,代码上能有提现吗? 我这边没想到什么好的方案,麻烦不吝赐教
比如交易走到out处理了,挂了,就处理out中的数据处理。如果在matchHandler中就挂了,直接重发mq消息好了。当然处理的方案比较多。
就像订单薄撮合,你在撮合后,没发出去交易记录一样,也得监听补发消息。
@kinbug 我们可以拿一个场景来说, 就没有做响应的补偿
这个你用rocketmq事务发生消息的方法吧,这版代码是木有的
登录 后才可以发表评论