udp怎么保证不丢包_MQ不丢消息,究竟是怎么实现的?
(1)SendMsg(bytes[] msg);
(2)SendCallback();
蓝色MQ核心集群又分为四个部分:
(1)MQ-server
(2)zk;
(3)db;
(4)管理后台web;
黄色接收方也由两部分构成:(1)业务接收方;(2)MQ-client-receiver;其中后者向前者提供了两个核心API:
(1)RecvCallback(bytes[] msg);
(2)SendAck();
MQ是一个系统间解耦的利器,它能够很好的解除发布订阅者之间的耦合,它将上下游的消息投递解耦成两个部分,如架构图中的1箭头和2箭头:
箭头1:发送方将消息投递给MQ,上半场;箭头2:MQ将消息投递给接收方,下半场;MQ消息可靠投递核心流程如何?MQ既然将消息投递拆成了上下半场,为了保证消息的可靠投递,上下半场都必须保证消息必达。MQ消息投递上半场,MQ-client-sender到MQ-server流程见上图1-3:(1)MQ-client将消息发送给MQ-server;画外音:此时业务方调用API:SendMsg。(2)MQ-server将消息落地,落地后即为发送成功;(3)MQ-server将应答发送给MQ-client;画外音:此时回调业务API:SendCallback。MQ消息投递下半场,MQ-server到MQ-client-receiver流程见上图4-6:(4)MQ-server将消息发送给MQ-client;画外音:此时回调业务API:RecvCallback。(5)MQ-client回复应答给MQ-server;画外音:此时业务方主动调用API:SendAck。(6)MQ-server收到ack,将之前已经落地的消息删除,完成消息的可靠投递;如果消息丢了怎么办?MQ消息投递的上下半场,都可以出现消息丢失,为了保证消息可达性,MQ需要进行超时和重传。上半场如何实施超时与重传?MQ上半场的1或者2或者3如果丢失或者超时,MQ-client-sender内的timer会重发消息,直到期望收到3,如果重传N次后还未收到,则SendCallback回调发送失败,需要注意的是,这个过程中MQ-server可能会收到同一条消息的多次重发。下半场如何实施超时与重传?MQ下半场的4或者5或者6如果丢失或者超时,MQ-server内的timer会重发消息,直到收到5并且成功执行6,这个过程可能会重发很多次消息。画外音:一般采用指数退避的策略,先隔x秒重发,2x秒重发,4x秒重发,以此类推。需要注意的是,这个过程中MQ-client-receiver也可能会收到同一条消息的多次重发。总结MQ是系统之间的解耦利器,MQ为了保证消息必达,架构设计方向为:(1)消息收到先落地;(2)消息超时、重传、确认保证消息必达;遗留问题:上半场,MQ-server可能收到重复的消息;下半场,MQ-client-receiver,也就是消息接收方可能收到重复的消息,怎么办?画外音:如何去重,如何幂等设计,听玄姐直播为你解答。事件:《RocketMQ企业级应用及定制化开发实践》人物:奈学教育CEO,玄姐时间:6.4、6.5、6.6三天,20:00-22:00画外音:每天两小时直播,免费,有没有诚意?如何参加?
扫码加小助手,获取直播地址,送架构师成长地图
内容大纲如何?
(1)MQ企业级应用场景分析;
(2)常见MQ选型对比;
(3)MQ高可用及水平扩展架构;
(4)MQ存储原理深度剖析;
(5)MQ服务注册与服务发现深度剖析;
(6)MQ负载均衡架构深度剖析;
(7)MQ事务消息实现原理;
(8)MQ延时消息架构原理;
(9)RocketMQ定制化开发实践;
(10)作业题及讲解;
连续3天(6.4/6.5/6.6),每天2小时(20:00-22:00),玄姐免费直播,MQ,干货多多,阅读原文,获取直播地址,只能帮你到这里了,一起学习吧。
udp怎么保证不丢包_MQ不丢消息,究竟是怎么实现的?相关推荐
- linux6.5系统间歇性丢包,路由器经常丢包、掉线解决方法大全
路由器老掉线是经常出现的问题,你上网都可能遇到:丢包.上网慢.掉线.上不去网.不能浏览网页.卡.信号差.误码率高.信号延迟.连接失败.不稳定.上不去.死机.无故中断等现象,这到底是怎么回事,如何解决这 ...
- linux查看mysql丢包_Linux 网卡丢包严重
annotatedClasses和component-scan冲突吗 annotatedClasses:配置在sessionFactory下面表示的是,哪些实体需要映射,代码如下: [BZOJ2793 ...
- linux 系统 UDP 丢包问题分析思路
转自:http://cizixs.com/2018/01/13/linux-udp-packet-drop-debug?hmsr=toutiao.io&utm_medium=toutiao.i ...
- Linux系统 UDP 丢包问题分析思路和修改网卡缓存
最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,我在排查过程中基本都是通过使用 tcpdump 在出现问题的各个环节上进行抓包.分析在那个环节出现问题.针对性去排查解决问题 ...
- UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?
关注.星标公众号,直达精彩内容 素材来源:https://blog.csdn.net/LearnLHC/article/details/115268028 整理:技术让梦想更伟大 | 李肖遥 一.UD ...
- UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?UDP 的应用场景
目录 一.UDP 报文格式 二.UDP 分片 1.UDP 有发送缓存区吗? 1>.先说结论: 2>.逐步分析: 2.UDP 分片 1>.UDP 包最佳传输大小 2>.分片问题 ...
- UDP的Socket发送数据,出现连续丢包现象(一)
UDP丢包原因 一.主要丢包原因 1.接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种 ...
- udp丢包原因和解决
一.主要丢包原因 1.接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种情况可以修改接收 ...
- UDP主要丢包原因及具体问题分析
转载:https://www.cnblogs.com/Zhaols/p/6105926.html 一.主要丢包原因 1.接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时 ...
最新文章
- Paddle Lite端侧部署
- Linux wc命令详解
- python对MySQL进行添加修改删除以及字符串的操作
- jQuery源码学习视频
- RPL的故事 ——《x86汇编语言:从实模式到保护模式》读书笔记31
- VirtualBox虚拟机安装CentOS 7
- HEVC/H265 HM10.0 分析(三)TAppDecTop.cpp
- 留给华为、小米、OPPO 们的时间不多了!
- laravel改代码没变化_菜鸡程序员是如何写代码的?
- cognos报表制作学习(一)cognos如何新建普通的reportstudio报表
- 源码剖析panic与recover,看不懂你打我好了!
- S7-200 SMART间接寻址功能说明(指针的使用)
- 微信公共平台 首次关注 自动回复消息
- 使用PRSice进行多基因风险评分分析
- Sencha Cmd 优化 Sencha Ext JS/7.5.12
- matlab均方根误差
- Win10桌面布局-透明剧中任务栏
- Infragistsitcs NetAdvantage WebCombo 控件
- Python学习——02-Python基础——【4-文件处理与三元运算】
- mongodb4.0学习总结二(read concern)