交易环节消息中间件
问题考虑
不能丢消息
丢消息意味着掉单,意味着支付成功但是没给人家出票,这是不能接受的。
稳定
消息中间件一旦出问题,交易不能进行,也是严重的故障。
性能
典型的消息中间件包含 3 部分
producer(发布者)、broker(消息中间件)、consumer(消费者),是一个比较简单的模型,下图展示了把消息发送给 consumer 的全过程。
Producer 发布端设计
一致性、容灾、性能
分布式事务一致性
上图是一个订票的订单服务,生成的新订单。
如果订单持久化成功(上面的红框 ),消息发送失败( 下面的红框 )。那么用户看到下单成功,假设代理商服务订阅这个消息是否给用户出票,那么现在的情况就是票没出来,这会引起用户投诉。
但是如果先发消息,然后再持久化订单,那可能就是订单出票了,但其实这个订单还没下呢&#