SOAP

  • 基于 XML
  • 成熟全面
  • 通常用于金融领域和支付网关
  • SOAP 过于复杂和冗杂,不适合高性能应用

Restful

  • 基于 JSON
  • 基于 HTTP
  • 简单,易于实施
  • 通常用在 Web 场景
  • 不适用于实时、高度关联的数据模型下的操作

GraphQL

  • GraphQL 允许客户端只请求他们需要的数据
  • 难于学习
  • 服务端需要做大量的适配改造

GRPC

grpc 是一个开源高性能的 rpc 框架,由谷歌在 2016 年研发。

gprc 的生态非常完善:

使用 Protobuf,protobuf 是一个语言无关,平台无关的编码方案

  • protobuf 支持强类型的 schema 定义

  • grpc 方法也通过 proto 文件定义

通常用于微服务场景中服务间的通信 不适用于浏览器场景,因为浏览器的兼容性不是很好

protocolbuf 是一个非常紧凑的二进制编码格式,比 json 速度更快。

grpc 基于 http2 构建,因此性能非常优秀。

grpc 调用过程:

  1. 当订单服务发起一个对于支付服务的 gRpc 调用时,它会调用由 grpc 工具生成的客户端代码,这段被生成的代码被称为 client sub(客户端桩)
  2. grpc 将传递给客户端桩的数据编码成 Protocol Buffer,并将其送到低层的传输层。
  3. grpc 将数据作为 http/2 协议的数据帧通过网络发送(由于二进制数据的编码以及网络的优化,grpc 据说比 JSON 快 5 倍)
  4. Payment 服务接受数据、解码并且调用服务器端代码

WebSocket

  • 实时、双向、持久连接。
  • 适用于 IM 聊天、实时游戏。

Webhook

  • 事件驱动
  • HTTP 回调
  • 异步操作