您的位置:首页 > 其它

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

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

1、可靠性要求

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

对于交易类:必须100%可靠。

对于其他,则保证4个9或者5个9的可靠。4个9是工业级别标准。

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

措施:最终一致性事务,不一致补偿机制和ack。

业务操作和发送消息在一个事务里,消息发送成功需要ack机制,此时是需要阻塞的。

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

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

4、最后设计方案

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

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

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

*路漫漫其修远兮!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  异步-并发