MQ的两种工作模式
1.点对点模式
一对一模式,消费者主动拉取数据,数据被拉取后MQ会将此数据删除
如上图所示,Consumer(消费者)拉取数据 A ,当 Consumer 给 Broker 发送确认消费A数据报文以后,Briker 会将 A 数据消除。
2.发布订阅模式
2.1 拉取模式
一对多,Consumer消费数据后,数据不会被删除
如上图所示,Producer(生产者)发布数据到 Broker ,消费者1/2/3 去 Broker 拉取数据,拉取的数据如图所示,当 Consumer1 拉取 A 数据后,A 数据并不会被 Broker 删除,而是可以继续被 Consumer2/3 拉取。
拉取模式的优缺点:
优点:
消费者程序可以根据自身的硬件配置去broker消费,不会被配置低的消费者所影响。
缺点:
消费者需要长期执行一个进程来询问broker是否有数据。
2.2 推送模式
如上图所示,Broker 会主动将数据推送给 Consumer(消费者)
缺点:
Consumer方面:
每个消费者所接收数据的性能有所不同,Consumer1 5MB/s 、 Consumer2 10MB/s、Consumer3 3MB/s,
此时如果 Broker 以 10MB/s 发送数据的话, Consumer1与Consumer3则会由于带宽不足导致系统线路故障等情况。
如果 Broker 以3MB/s 发送数据的话,Consumer1与Consumer2 会造成大量的资源浪费。
Broker方面:
Broker内部也需要维护一个订阅者列表,当订阅者较多时,可能会很占用内存从而影响Broker的性能。
优点:
无需客户端主动拉去数据,而是由服务端主动发送数据
典型的应用场景就是我们的"公众号"等业务
交流平台,
有不当,望指出
有建议,请提出