一 消息中间件介绍
消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
概念图:
二 消息中间件的使用场景
王阿姨是小军的妈妈。
王阿姨希望小军多读书,常寻找好书给小军看,之前的方式是这样:王阿姨问小军什么时候有空,把书给小军送去,并亲眼监督小军读完书才走。久而久之,两人都觉得麻烦。
后来的方式改成了:王阿姨对小军说「我放到书架上的书你都要看」,然后王阿姨每次发现不错的书都放到书架上,小军则看到书架上有书就拿下来看。
书架就是一个消息队列,王阿姨是生产者,小军是消费者。
这带来的好处有:
1.王阿姨想给小军书的时候,不必问小军什么时候有空,亲手把书交给他了,王阿姨只把书放到书架上就行了。这样王阿姨小军的时间都更自由。
2.王阿姨相信小军的读书自觉和读书能力,不必亲眼观察小军的读书过程,王阿姨只要做一个放书的动作,很节省时间。
3.当明天有另一个爱读书的小伙伴小强加入,王阿姨仍旧只需要把书放到书架上,小军和小强从书架上取书即可(唔,姑且设定成多个人取一本书可以每人取走一本吧,可能是拷贝电子书或复印,暂不考虑版权问题)。
4.书架上的书放在那里,小军阅读速度快就早点看完,阅读速度慢就晚点看完,没关系,比起王阿姨把书递给小军并监督小军读完的方式,小军的压力会小一些。
这就是消息队列的四大好处:
1.解耦
每个成员不必受其他成员影响,可以更独立自主,只通过一个简单的容器来联系。
王阿姨甚至可以不知道从书架上取书的是谁,小军也可以不知道往书架上放书的人是谁,在他们眼里,都只有书架,没有对方。
毫无疑问,与一个简单的容器打交道,比与复杂的人打交道容易一万倍,王阿姨小军可以自由自在地追求各自的人生。
2.提速
王阿姨选择相信「把书放到书架上,别的我不问」,为自己节省了大量时间。
王阿姨很忙,只能抽出五分钟时间,但这时间足够把书放到书架上了。
3.广播
王阿姨只需要劳动一次,就可以让多个孩子有书可读,这大大地节省了她的时间,也让新的孩子的加入成本很低。
4.削峰
假设小军读书很慢,如果采用王阿姨每给一本书都监督小军读完的方式,小军有压力,王阿姨也不耐烦。
反正王阿姨给书的频率也不稳定,如果今明两天连给了五本,之后隔三个月才又给一本,那小军只要在三个月内从书架上陆续取走五本书读完就行了,压力就不那么大了。
当然,使用消息队列也有其成本:
1.