如何在异步处理提高并发的情况下保持100%可靠?

例如在交易之类的场景,如果通过使用消息队列等方式进行异步处理,来提高并发的同时,怎样保证该业务100%可靠?

1、可靠性要求

业务是否真的需要保证100%可靠?还是只要满足4个9可靠即可?

  • 对于交易类:必须100%可靠。
  • 对于其他,则保证4个9或者5个9的可靠。4个9是工业级别标准。

2、如何在高可用情况下保证100%可靠?

措施:最终一致性事务,不一致补偿机制和ack。
业务操作和发送消息在一个事务里,消息发送成功需要ack机制,此时是需要阻塞的。

3、如果消息在消息队列里丢失,该如何操作?

消息复制,比如才用多消息队列保存消息。并且消息必须持久化。

4、最后设计方案

多个本地事务代替分布式事务,各个节点用消息复制和持久化方式保证消息不丢,各个节点之间的最终一致性使用幂等消息来保证,幂等消息可以多次重试。

* 理论大家都会说,真正到了实现的时候,就困难重重 *

目前比较好的消息中间是:Kafka和阿里的RocketMQ(前身MetaQ)。

*路漫漫其修远兮!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值