lesson-消息队列详解和其分布式架构
2020-12-30 11:30:38 0 举报
MQ消息队列详解和分布式架构
作者其他创作
大纲/内容
削峰
mq3单机扛10w/s存储1亿数据
partition1partition3
pagecache
5.消费
生产者
更新出货单
积分系统
消费者1促销
topic_order
1w请求
未解耦
促销系统
messageQueue1
订单系统500请求每秒
同步
付款系统
pagecache 3w
consumequeue
磁盘
1.请求
系统B
producer
123
送优惠券
broker1
topic1
messageQueue4
机器总数/2+1机器总数必须为基数
250w
mq
mappedByteBuffer.map()mmap
$MQ_HOME/store/consumequeue/${topic}/${messsageQueue}
ack
10w并发
宕机
broker2
partition2partition1
未削峰
0.1ms写到缓存
thread2
长链接
msg5
broker数据
系统A
4. commit or rollback
term2: 投票同步index更高的机器master
基于长连接和长轮询批量消息 可设置或者业务逻辑上保证消息消费的幂等性零拷贝 transferto()
host3
cache静态页
第三方短信通知系统100ms~3s
NameServer每隔10s检查是否有broker超过120s没有发送心跳
thread后台
msg1
consumeQueue0
db16核32Gssd硬盘5000/qps
消费者仓储
consumeQueue
2
仓储系统
每隔30s发一次心跳
每秒有5000/qps
请求
mq2单机扛10w/s存储1亿数据
nginx
2F+1其中F是最大可以出问题的机器数量
前端系统
CDN北京
slave mq1单机扛10w/s存储1亿数据休眠6s
CDN上海
10w
系统C
mqID: message queue1
脑裂
os page cache8k
6.返回结果800ms
queue3
dledgercommitlogstatus: uncommitted
broker
thread1
messageQueue3
msg1 offset
增加积分
cannal/databus
dledger
订单系统
注册
gateway
masterslave mq1单机扛10w/s存储1亿数据
thread->直接返回ack
路由数据的缓存
offset
nettynio socketchannel
CDN广州
3.更新库存100ms
nameserver
4.更新数据200ms
查询订单数据
系统E2
10ms
已解耦
回调函数
消费索引
系统D
partition3partition2
term2
term1: 选票: 机器数量/2+1
lua脚本
订单db
3.更新数据200ms
秒杀订单系统
异步刷盘
msg3
hash%2
broker slave2
2.更新订单30ms
msg4
秒杀场景iPhone11 3000 1w部便宜量少并发大定时发布
订单db5000请求每秒
1000w消息
Broker1master mq1单机扛10w/s存储1亿数据(宕机)休眠2s
普通订单系统
order
生产10w/s
slave mq1单机扛10w/s存储1亿数据休眠4s
假如高峰期时候有1000w用户访问
queue1
4.返回结果210ms
topic
host1candidate
系统E
3.更新数据库
half_topic
dledgercommitlogstatus: uncommitted->committed
系统A一个机器能够扛200~300/qps
consumeQueue1
大数据系统
slave mq1单机扛10w/s存储1亿数据
2.ack
os
queueId%consumerNum
1. half消息
20台db
messageQueue2
库存
第三方物流系统
4.写订单消息到mq20ms
pull定时
config
nginx集群
3
商品系统
200台服务器订单集群
store_group
库存系统
thread->等待->返回ack
消费者2促销
消息丢失了怎么办消息重复发送了怎么办?消息的顺序变化了怎么办消息积压太多怎么办
通知系统
商品db5000请求每秒
通知
大数据db
message queue2
3.发送数据10ms
os thread
market_group
5.更新数据200ms
op_discard
先更新订单数据库还是线写mq
通知下单成功
6.更新数据200ms
commitlog 7w
eureka
term1send
唤醒
db
2.更新数据200ms
host2master
消费者3促销
queue4
msg2
topic_store
broker slave1
提前渲染好秒杀的商品静态页
consumer
异步
顺序写msg5
库存db
消费者0促销
写入msg5的物理位置
Broker1master mq1单机扛10w/s存储1亿数据(宕机)
普通的订单流程下订单扣减库存更新订单写mq返回订单
系统D13
queue2
redis
每秒有5000/qps低谷的时候可能最多50/qps
某一个topic的某一个queue
0 条评论
回复 删除
下一页