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

一、消息队列

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

 

二、消息协议

AMQP

MQTT

 

 

STOMP:文本

XMPP:xml

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

 

三、RabbitMQ(基于AMQP协议)

 

实例

 

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

 

实践建议

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

2、消息保存

disk:主动声明要写入磁盘

内存:内存满写入

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

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

普通确认:串行

批量确认:多条消息

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

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

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

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

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

5、流控机制

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

6、通道

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

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

 

四 ActiveMQ(JMS)

 

基本概念

实例:基于主题

可创建多个主题消费者

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

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

实践建议

1、消息转发模式

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

2、消息积压

1、设置过期时间

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

3、消息事务

4、应答模式

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

5、发送优化

同步/异步发送

流量控制如设置队列内存

6、消费优化

消息预取

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

7、消息协议

8、消息持久化

 

五、Kafka

六、RocketMQ

 

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

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

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值