默认
打赏 发表评论 10
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
引用:just fine 发表于 2021-04-18 21:54
写扩散的时候需要写两份,通常同步和漫游的使用不同的存储系统,如何保障事务呢?

如果要保证数据的强一致,通常就会牺牲系统的性能。个人认为可以换个思路,消息到来先入mq,由消费者来落地到不同的存储系统,并提供最终一致性保障。个人看法,希望可以起到抛砖引玉的作用
评论 10
引用:JackJiang 发表于 2021-04-23 11:40
引入mq起到了什么作用?

针对楼主的问题,mq在此是否可以起到类似预写日志的作用。入mq成功,则可以认为发送成功,由消费者存储到不同的存储系统。如果消费者处理失败(1.消费者异常,2.存储系统异常,3.网络异常),对于异常1,消费者恢复后可以从上次ack的位置继续消费,问题由系统内部消化。
如果不使用mq,发送成功的判定标准就变成了:1.消费者正常(在此指消息处理服务器) 2.所有存储系统存储成功。那么当出现异常导致数据不一致时,相应的错误由发送方感知,并依赖发送方进行重试,在重试期间(可能很短,极端情况下可能会较长)会出现数据的不一致。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部