MST

星途 面试题库

面试题:分布式系统中微服务架构的常见通信方式有哪些

在分布式系统采用微服务架构时,不同微服务之间需要进行通信。请阐述常见的通信方式,并说明它们各自的优缺点,比如 RESTful API、RPC 等。
18.2万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

RESTful API

  • 优点
    • 通用性强:基于HTTP协议,几乎所有编程语言都支持HTTP请求,易于与各种不同技术栈的微服务集成。
    • 可读性好:使用标准的HTTP方法(GET、POST、PUT、DELETE等),资源路径清晰,易于理解和维护。
    • 缓存友好:可以利用HTTP的缓存机制,提高系统性能,减轻服务器负担。
    • 跨平台:由于基于HTTP,能轻松跨越不同操作系统和平台进行通信。
  • 缺点
    • 性能相对较低:基于文本的格式(如JSON、XML)在数据传输量较大时,解析和序列化/反序列化开销较大。
    • 灵活性有限:严格遵循RESTful规范可能在一些复杂业务场景下显得过于僵化,难以满足特殊需求。

RPC(远程过程调用)

  • 优点
    • 高性能:通常采用二进制协议,数据传输量小,序列化和反序列化速度快,适合对性能要求极高的场景。
    • 调用方式简单:对开发者透明,像调用本地方法一样调用远程服务,代码逻辑清晰,易于开发和维护。
    • 强类型:接口定义明确,参数和返回值类型固定,在编译期就能发现一些错误,提高代码稳定性。
  • 缺点
    • 耦合度较高:服务接口一旦发生变化,调用方和被调用方都需要相应修改,维护成本高。
    • 跨平台性差:不同语言实现的RPC框架之间兼容性较差,难以混合使用不同技术栈的微服务。
    • 开发成本高:需要自行实现服务发现、负载均衡等功能,相比RESTful API,开发难度较大。

消息队列

  • 优点
    • 异步解耦:发送方和接收方不需要实时通信,降低系统耦合度,提高系统的可扩展性和灵活性。
    • 削峰填谷:在高并发情况下,能有效处理流量高峰,避免系统因瞬时压力过大而崩溃。
    • 可靠消息传递:通常具备消息持久化机制,保证消息不会丢失。
  • 缺点
    • 复杂性增加:引入消息队列后,系统架构变得复杂,需要处理消息的顺序性、重复消费、消息积压等问题。
    • 一致性问题:由于异步处理,可能导致数据一致性问题,需要额外的机制来保证最终一致性。