MST

星途 面试题库

面试题:微服务架构中服务间通信方式及选择考量

在微服务架构里,常见的服务间通信方式有哪些?每种方式的优缺点是什么?在实际项目中,应如何根据业务需求选择合适的通信方式?
30.9万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

常见服务间通信方式

  1. RESTful API:基于HTTP协议,以资源为中心进行设计。
  2. RPC(Remote Procedure Call):让程序像调用本地函数一样调用远程服务。常见框架如Dubbo、gRPC等。
  3. 消息队列(MQ):通过消息中介传递消息,如Kafka、RabbitMQ等。

优缺点

  1. RESTful API
    • 优点
      • 简单易理解,基于HTTP协议,通用性强,便于与各种客户端交互。
      • 松耦合,易于维护和扩展,支持缓存机制,可提高性能。
    • 缺点
      • 性能相对较低,HTTP协议头部信息较多,增加额外开销。
      • 对于频繁的小数据量请求,会有较高的网络传输成本。
  2. RPC
    • 优点
      • 高效,基于TCP协议,性能优于RESTful API,适合对性能要求高的场景。
      • 强类型,接口定义清晰,调用方和服务方之间通过接口契约进行交互,可有效减少错误。
    • 缺点
      • 耦合度相对较高,服务方接口变动可能影响调用方。
      • 不同RPC框架之间兼容性较差,缺乏统一标准。
  3. 消息队列
    • 优点
      • 解耦,发送方和接收方无需直接关联,提高系统灵活性。
      • 异步处理,可提升系统整体性能和响应速度,适合处理高并发场景。
      • 削峰填谷,应对流量波动,保证系统稳定性。
    • 缺点
      • 增加系统复杂度,需要额外管理消息队列中间件。
      • 消息可能存在丢失、重复消费等问题,需要额外处理机制保证数据一致性。

根据业务需求选择合适通信方式

  1. 实时性要求不高,对通用性和可维护性要求高:选择RESTful API,如对外提供的开放接口,便于各种类型客户端调用。
  2. 对性能要求高,服务间交互频繁,内部服务调用:RPC更合适,如电商系统中订单服务和库存服务间的交互。
  3. 需要异步处理、削峰填谷,解耦系统模块:消息队列是较好选择,如在日志收集、订单处理等场景中。