一、引出问题
分布之后问题来了,以前的单一系统,所有服务都在同一个机器,在同一个内存里面,直接调用即可;但现在分布在不同的jvm中,怎么调用呢?或者说数据怎么传输? –消息中间件应运而生!
二、中间件:将具体业务和底层逻辑解耦的软件,解决的就是分布式系统之间消息传递的问题。
一个消息需要有一个生产者生产消息,一个消费者接收处理消息,由生产者来指定消费者,保证消息能到达消费者处。
消息中间件就是处于消息传输的过程中的一个节点。生产者将消息发送到消息中间件,消息中间件进行落库处理(中间件会把消息当作队列保存下来),消费者开启消息监听,以此从消息中间件中获取传给自己的消息。
例子:
我是做网上商城的,有一个短信系统,当客户下了一个订单之后,通知客户你下单成功。
当订单量比较小的时候,只需要调用发送短信的接口就可以了。
但是如果订单量大了之后呢,并且短信发送晚个一两分钟也没有什么问题,那么就可以使用消息中间件:把待发送的短信发送到消息队列里面,短信系统从消息队列中取出短信进行发送就可以了。
而且还有一个好处:如果短信系统挂掉了,短信消息保存在消息中间件里面不会丢失,等短信系统恢复了之后,继续短信发送即可。
现在常用的消息中间件由:ActiveMQ,RabbitMQ,Kafka
常用的消息中间件对比可参考以下链接
https://my.oschina.net/blogByRzc/blog/3012251
网上资料参考总结,不知出处具体链接,如有疑问可私信告知修改。