一张图读懂RocketMq原理
2021-07-18 07:43:55 0 举报
AI智能生成
通晓RocketMq原理
作者其他创作
大纲/内容
使用场景
系统间通信
异步
解耦
削峰填谷
底层原理
Producer
数据存储机制
主从原理
Raft算法
Leader选举
多副本同步机制
Consumer
一个Topic
多个MessageQueue
多个ConsumeQueue
一个MessageQueue只能被一台机器消费,但一台机器可以消费多个MessageQueue
Broker会存储每个消费组的消费offset,下次消费直接从offset位置读取
如果消费组中出现机器宕机或者扩容加机器,实会进入一个rabalance的环节,也就是说重新给各个消费机器均匀分配他们要处理的MessageQueue
主从读写负载均衡
Commit Log利用Page Cache实现写磁盘,异步刷盘,os cache对于CommitLog而言,主要是提升文件写入性能,当你不停的写入的时候,很多最新写入的数据都会先停留在os cache里,当消费者读取的数据不在Master的os Cache中时,Master会认为自己的负载较高,让消费者下次从Flower读取消息
存储优化
Commit Log利用Page Cache实现写磁盘,异步刷盘
mmap技术,实现零拷贝,但限制文件大小为1.5-2G,所依RocketMQ限制Commit Log文件大小为1G
os cache对于CommitLog而言,主要是提升文件写入性能,当你不停的写入的时候,很多最新写入的数据都会先停留在os cache里,比如这可能有10GB~20GB的数据,之后os会自动把cache里的比较旧的一些数据刷入磁盘里,腾出来空间给更新写入的数据放在os cache里,所以大部分数据可能多达几个TB都是在磁盘上的
Consume Queue文件大小5.6M,可以全部读入Page Cache,相当于在内存读取
网络通讯优化
让多组不同的线程来完成各自的工作,每组线程都不会影响到其他线程,任何一个环节在执行的时候,都不会影响其他线程池在其他环节进行请求的处理
集群架构
NameServer
DeLedger
客户端集群部署
集群化部署
压测
多机器多线程压测
观察RocketMq的TPS
观察机器的cpu,磁盘,网络,内存负载
生产级参数调整
os内核参数
jvm参数
中间件核心参数
可视化监控
RocketMq控制台
服务器滋生监控:zabbix
秒杀场景
读(静态化)
多级缓存
CDN缓存
Nginx Lua缓存
redis缓存
写(异步)
秒杀答题(业务优化)
扣库存
redis
下订单
写入rocketMq
避免数据库抗高并发请求
独立部署秒杀系统
0 条评论
下一页