这是我参与「第五届青训营 」笔记创作活动的第10天。
消息队列
消息队列总述
消息队队列使用场景:
- 同一客户端流程不同操作处理
- 高并发请求
- 异步处理
- 及时响应
- 日志
是什么:
- 解耦
- 削峰
- 异步
- 日志处理
Kafka
基本概念:
- Producer
- Cluster
- Consumer
- Topic
- Partition
功能场景:
- 数据迁移
- Offset
- Partition选主
逻辑疏通:
- Producer端逻辑
- Broker端逻辑
- Boncumer端逻辑
BMQ
- kafka问题
- 停机问题
- 扩缩容问题
- BMQ架构
- 读写分离
- 独立的Control和Candidate
- 工作模式
- Broker
- Proxy
- HDFS
- MetaSorage
- 多机房容灾机制
- 镜像
RocketMQ
-
使用场景
- 低延迟、实时场景
-
与Kafka在概念上的对比
-
架构介绍
- Producer
- Broker
- Naeserver
- Consumer
-
处理流程
RPC
RPC基本概念
RPC的概念模型:User、User-Stub、RPC-Runtime、Server-Stub、Server
-
IDL(Interface Definition Language) 文件:RPC接口配置文件
- Thrift
- Protobuf
-
生成代码
-
编解码(序列化/反序列化
-
通信协议
- 应用层协议
-
网络通信
-
IO 网络模型
- blocking IO
- unblocking IO
- IO multiplexing
- signal driven IO
- asynchronous IO
-
传输层协议
- TCP
- UDP
-
RPC的分层设计
-
编解码层
-
数据格式:
-
语言特定格式
-
文本格式
-
二进制编码
- TLV 编码:Thrift 使用 TLV 编码
- Varint 编码:Protobuf 使用 Varint 编码
-
-
选项:
- 兼容性
- 通用型
- 性能
-
-
传输协议层
-
消息切分
- 特殊结束符
- 变长协议:length+body
-
协议构造
- 以 Thrift 的 THeader 协议为例讲解
-
-
网络通信层
-
网络库
-
核心指标
- 吞吐高
- 延迟低
-
RPC的核心指标
-
稳定性
-
保障策略
- 熔断
- 限流
- 超时
-
请求成功率
- 负载均衡
- 重试
-
长尾请求
- BackupRequest
-
-
易用性
- 开箱即用
- 周边工具
- 扩展性
-
观测性
- Log
- Metric
- Tracing
- 内置观测性服务
- 高性能
个人总结
消息队列作为服务到存储的中间层,解决了大规模应用的响应问题,加中间层、解耦、异步的思想也是工程化的精髓; RPC作为系统内不同服务的通信方式,解决了分布式服务的高性能通信问题,极大的推动了大规模应用软件的发展。