如何在异步处理提高并发的情况下保持100%可靠?
2015-05-14 21:26
225 查看
例如在交易之类的场景,如果通过使用消息队列等方式进行异步处理,来提高并发的同时,怎样保证该业务100%可靠?
对于交易类:必须100%可靠。
对于其他,则保证4个9或者5个9的可靠。4个9是工业级别标准。
业务操作和发送消息在一个事务里,消息发送成功需要ack机制,此时是需要阻塞的。
* 理论大家都会说,真正到了实现的时候,就困难重重 *
目前比较好的消息中间是:Kafka和阿里的RocketMQ(前身MetaQ)。
*路漫漫其修远兮!
1、可靠性要求
业务是否真的需要保证100%可靠?还是只要满足4个9可靠即可?对于交易类:必须100%可靠。
对于其他,则保证4个9或者5个9的可靠。4个9是工业级别标准。
2、如何在高可用情况下保证100%可靠?
措施:最终一致性事务,不一致补偿机制和ack。业务操作和发送消息在一个事务里,消息发送成功需要ack机制,此时是需要阻塞的。
3、如果消息在消息队列里丢失,该如何操作?
消息复制,比如才用多消息队列保存消息。并且消息必须持久化。4、最后设计方案
多个本地事务代替分布式事务,各个节点用消息复制和持久化方式保证消息不丢,各个节点之间的最终一致性使用幂等消息来保证,幂等消息可以多次重试。* 理论大家都会说,真正到了实现的时候,就困难重重 *
目前比较好的消息中间是:Kafka和阿里的RocketMQ(前身MetaQ)。
*路漫漫其修远兮!
相关文章推荐
- php大型网站如何提高性能和并发访问
- 如何在系统休眠的情况下保持特殊设备供电(如GPS供电)
- 如何提高服务器并发处理能力
- 源码解读如何提高RGW最大并发数
- 服务器如何提高并发量
- 使用Google的开源TCMalloc库,提高MySQL在高并发情况下的性能
- 现代软件工程系列 学生的精彩文章 (3) 如何在Bug 不断的情况下还能保持平常心... [zz]
- 什么是并发?如何提高并发?
- 如何提高服务器并发处理能力
- 使用Google的开源TCMalloc库,提高MySQL在高并发情况下的性能[修改]
- 现代软件工程系列 学生的精彩文章 (3) 如何在Bug 不断的情况下还能保持平常心... [zz]
- 如何提高服务器并发处理能力
- 高并发,如何提高并发量
- 浅谈如何提高服务器并发处理能力
- 深入分析虚拟机创建对象的两种方式以及如何在并发情况下实现线程安全
- 如何提高服务器并发处理能力
- Go 自带的 http/server.go 的连接解析 与 如何结合 master-worker 并发模式,提高单机并发能力
- 使用Google的开源TCMalloc库,提高MySQL在高并发情况下的性能
- 如何处理高并发情况下的DB插入
- 使用Google的开源TCMalloc库,提高MySQL在高并发情况下的性能