RPC&kafka | 青训营笔记

60 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第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作为系统内不同服务的通信方式,解决了分布式服务的高性能通信问题,极大的推动了大规模应用软件的发展。

参考文章

青训营 kafka科普