通讯分类

  1. 从通讯模式角度考虑

    1
    2
    3
    4
              一对一                一对多
    同步 请求响应模式,最常见 \

    异步 通知/请求 异步响应 发布订阅/发布异步响应
  2. 从通讯协议角度

  • REST API (以http协议的角度设计一个REST风格的API)
  • RPC: Dubbo(Alibaba), dubbox(Dangdang), Motan(Sina Weibo), Thrift(Facebook, Apache), gRPC(Google)
  • MQ: RabbitMQ, Kafka, Rocket, etc.

如何选择RPC框架

  • I/O, 线程调度模型
  • 序列化方式
    • 可读: XML, json, fastjson
    • binary: jdk自带的
  • 多语言
  • 服务治理, e.g. 服务发现,监控(如果有,一般支持集群部署,高可用)

RPC框架的结构图,此处省略

流行的RPC框架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

RPC Dubbo Motan Thrift gRPC
-----------------------------------------------------------
开发语言 Java Java 跨语言 跨语言

服务治理 √ √ x x

多种序列化 √ √ 只支持thrift 只支持protobuf

多种注册中心 √ √ x x

管理中心 √ √ x x

跨语言通讯 x x √ √

整体性能 3 4 5 3
-----------------------------------------------------------