高并发架构实战 Day35

从功能支持、迭代速度、灵活性上考虑,大多数消息队列的核心通信协议都会优先考虑自定义的私有协议。

私有协议的设计主要考虑网络通信协议选择、应用通信协议设计、编解码实现三个方面。

网络通信协议选型,基于可靠、低延时的需求,大部分情况下应该选择 TCP。

应用通信协议设计,分为请求协议和返回协议两方面。协议应该包含协议头和协议体两部分。协议头主要包含一些通用的信息,协议体包含请求维度的信息。

编解码,也叫序列化和反序列化。在实现上分为自定义实现和使用现成的编解码框架两个路径。

其中最重要的是应用通信协议部分的设计选型,这部分需要设计协议头和协议体。重要的是要思考协议头和协议体里面分别要放什么,放多了浪费带宽影响传输性能,放少了无法满足业务需求,需要频繁修改协议内容。另外,每个字段的类型也有讲究,需要尽量降低每次通信的数据大小。

所以应用通信协议的内容设计是非常考验技术功底或者经验的。有一个技巧是,如果需要实现自定义的协议,可以去参考一下业界主流的协议实现,看看都包含哪些元素,各自踩过什么坑。总结分析后,这样一般能设计出一个相对较好的消息队列。

相关推荐
杨文说AI与数字化10 分钟前
把模型依赖做成可替换的组件:三层适配 + 一套回归评估
后端
IT_陈寒27 分钟前
Vue的这个响应式陷阱我居然现在才发现
前端·人工智能·后端
WL学习笔记1 小时前
使用string类
c++·后端·string类
飞鸟真人1 小时前
IM网关系列(九)单账号流量统计:滑动窗口桶方案设计与Go实现
后端·golang
武子康2 小时前
Embedding 替换怎么评测:把索引成本算进成功任务
人工智能·后端·agent
大哥43094 小时前
on-failure 不扛重启:一次 Docker restart 策略的反直觉排查
后端
房西杭4 小时前
GM指令:仓库扩容、清空仓库(行会仓库 + 个人仓库,Lua + proto + GMMgr注册)
后端
大哥43094 小时前
不报错 ≠ 生效:三类"静默失效"缺陷与它们的共同指纹
后端
房西杭4 小时前
整理背包 SortBag 完整实现逻辑
后端
Marcus学原理4 小时前
Playwright 入门:让浏览器自动完成重复操作
后端