消息中间件的作用就是用来异步化并发能力的一个载体,不仅如此,它仍然需要在架构上保证很多能力,高可用,高并发,可扩展,可靠性,完整性,保证顺序等,光是这些都已经让各种设计者比较头疼了; 更有一些变态的需求,例如慢消费,不可重复等需要花的设计代价是相当高的,所以不要盲目的迷信开源大牛,对于很多机制,几乎都要重建;建立一个符合所有业务,好用,通用的私有云,没那么简单。
如果说一个支付系统每天要处理亿级业务单的话,那么消息中间件的处理能力至少得达到近百亿,因为很多系统都是依赖于中间件的集群能力,并且要保证不能出错,so,让我们从架构的一些层面上来一点点来分析中间件是怎么做到的?
高可用 ( High Availability )
高可用是一个永恒的话题,这个也是在金融界是否靠谱的一个衡量标准,要知道,金融界的架构师们会想方设法的让数据不会丢失,哪怕是一条数据,但是事实上,这个东西从理论上来讲,得靠人品。。。这个不是忽悠。
举一个例子来说,互联网数据架构中一份数据至少要存三份才叫高保证,但是事实上,谷歌的比利时数据中心在8.13日遭到雷劈后数据中心永久丢失0.000001%,不到0.05%的磁盘未能修复,这里要说的是,天时地利人和很重要,极限条件下没有什么不可能,一定会有架构漏洞,下面看一下mq高可用的一般做法:
下图是activemq的 HA 方案: