微服务通讯方式

来自泡泡学习笔记
跳到导航 跳到搜索

微服务的通讯方式主要有以下几种:

  1. RESTful API:基于 HTTP 协议的 RESTful API 是最常用的微服务通讯方式之一。服务之间通过 HTTP 请求和响应进行通讯,实现数据交换。这种方式简单、通用,适用于各种场景,但可能不适合对实时性要求非常高的场景。
  2. RPC(远程过程调用):RPC 允许一个服务像调用本地方法一样调用另一个服务的方法。它通过将方法调用封装成网络数据包并在不同的进程之间传输,实现不同服务之间的互相调用。RPC 方式可以提高调用的效率和性能,但可能需要更多的配置和管理工作。
  3. 消息队列通讯:如 RabbitMQ、Kafka、RocketMQ 等,服务之间不直接调用,而是通过消息队列进行异步消息传递,实现服务之间的解耦和异步处理。
  4. 事件驱动通讯:服务之间通过事件触发通讯,一旦某个服务发生了某个事件,就会触发其他服务的响应。这种方式可以实现服务的松耦合和事件的实时处理,典型的实现如 Event Bus。
  5. WebSocket(长连接通信):使用 WebSocket 实现双向通信,常用于实时推送场景,服务间可以维持长期的 TCP 连接进行数据交换。


其中,RESTful API 和 RPC 是微服务间最常用的通讯方式,但它们的使用场景又略有不同:

  1. RESTful API 通常用于外部接口或第三方接口通讯。
  2. RPC 通常用于内部微服务之间的方法调用。


RESTful API VS RPC

它们的区别主要体现在以下几点:

  1. 功能和用途不同:
    1. RESTful API 常用于浏览器和服务器之间的通信,第三方接口通讯等,它可以实现基于请求-响应模式的通信,支持无状态和有状态的交互。
    2. RPC 是一种用于远程过程调用的协议,用于不同计算节点之间的通信,多用于微服务内部间的调用。它允许应用程序通过网络调用远程服务,并像调用本地方法一样轻松实现分布式系统的集成。
  2. 数据格式不同:
    1. RESTful API 使用文本格式来传输数据,通常使用 JSON 或 XML 进行序列化。
    2. RPC 通常使用二进制格式来传输数据,例如 Protocol Buffers(ProtoBuf)或 Apache Thrift。
  3. 性能不同:RPC 通常比 RESTful API 更高效。这是因为 RPC 的协议设计更加轻量级,并且它可以对传输的数据进行二进制压缩,使得请求报文体积更小,从而提高传输效率。而 RESTful API 基于 HTTP 协议,其报文头等信息可能使得传输的数据量相对较大,传输效率较低。