微服务架构-- 服务间通信方式 --

一、远程过程调用(Remote Procedure Invocation)

 

直接通过远程过程调用来访问别的service。

 

示例:

  • REST
  • gRPC
  • Apache Thrift

 

优点:

 

  • 简单,常见
  • 因为没有中间件代理,系统更简单

 

缺点:

  • 只支持请求/响应的模式,不支持别的,比如通知、请求/异步响应、发布/订阅、发布/异步响应
  • 降低了可用性,因为客户端和服务端在请求过程中必须都是可用的

 

二、消息

 

使用异步消息来做服务间通信。服务间通过消息管道来交换消息,从而通信。

 

示例:

  • Apache Kafka
  • RabbitMQ

 

优点:

  • 把客户端和服务端解耦,更松耦合
  • 提高可用性,因为消息中间件缓存了消息,直到消费者可以消费
  • 支持很多通信机制比如通知、请求/异步响应、发布/订阅、发布/异步响应

 

缺点:

  • 消息中间件有额外的复杂性

你可能感兴趣的:(分布式,微服务)