《分布式消息中间件实践》-倪炜 读书笔记

一、消息队列

为什么:解耦、流量削峰、日志收集、事务一致性

 

二、消息协议

AMQP

MQTT

 

《分布式消息中间件实践》-倪炜 读书笔记_第1张图片

 

STOMP:文本

XMPP:xml

JMS:java 与平台无关;点对点/发布订阅两种模式

 

三、RabbitMQ(基于AMQP协议)

《分布式消息中间件实践》-倪炜 读书笔记_第2张图片

《分布式消息中间件实践》-倪炜 读书笔记_第3张图片

《分布式消息中间件实践》-倪炜 读书笔记_第4张图片

 

实例

《分布式消息中间件实践》-倪炜 读书笔记_第5张图片

 

异步处理:收到消息后才采取业务措施

《分布式消息中间件实践》-倪炜 读书笔记_第6张图片

 

实践建议

1、虚拟主机:服务器区分不同业务队列

《分布式消息中间件实践》-倪炜 读书笔记_第7张图片

2、消息保存

disk:主动声明要写入磁盘

内存:内存满写入

Queue、Message、Exchange持久化:通过响应速度判断是否开启

3、消息确认模式(发送->Broker的确认)

普通确认:串行

批量确认:多条消息

异步确认:通过回调 确认发送成功 返回的是消息id

4、消费者应答(到消费者的确认)

1、回执:自动:发送给消费者后把消息从Broker队列删除 手动:消费者发送主动ack

2、拒绝消息:消费者处理失败/不能处理,发送拒绝指令,删除/重新入队

3、消息预取:消费者预取多条消息数量

5、流控机制

通过信用组MoreCreditAfter控制生产者发送数量,进行阻塞

6、通道

不同线程配置不同通道。每个连接多个通道

总结:高可用高可靠;但是吞吐量不行

《分布式消息中间件实践》-倪炜 读书笔记_第8张图片

 

四 ActiveMQ(JMS)

《分布式消息中间件实践》-倪炜 读书笔记_第9张图片

 

《分布式消息中间件实践》-倪炜 读书笔记_第10张图片

基本概念

《分布式消息中间件实践》-倪炜 读书笔记_第11张图片

实例:基于主题

《分布式消息中间件实践》-倪炜 读书笔记_第12张图片

可创建多个主题消费者

《分布式消息中间件实践》-倪炜 读书笔记_第13张图片

基于ActiveMQ的分布式事务:需要操作不同服务器的数据库

解决方案:每个数据库添加事务表。可以理解为消息缓存在数据库事务表中,定时从中取事务,宕机只会事务回滚/重启会重新操作

《分布式消息中间件实践》-倪炜 读书笔记_第14张图片

实践建议

1、消息转发模式

持久化(可靠性好) 非持久化(性能好)

2、消息积压

1、设置过期时间

2、死信队列:一直不能处理的消息

3、消息事务

4、应答模式

自动确认、客户端手动确认、批量确认、单条确认

5、发送优化

同步/异步发送

流量控制如设置队列内存

6、消费优化

消息预取

慢速消费者:等待消息限制/消息丢弃策略

7、消息协议

8、消息持久化

《分布式消息中间件实践》-倪炜 读书笔记_第15张图片

 

五、Kafka

《分布式消息中间件实践》-倪炜 读书笔记_第16张图片

六、RocketMQ

《分布式消息中间件实践》-倪炜 读书笔记_第17张图片

 

《分布式消息中间件实践》-倪炜 读书笔记_第18张图片

整个下来通过网络资源整理学习,并且完善了一些代码,程序员挺累的

如果觉得不错可以点歌关注吧~

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java)