面试题答案
一键面试常见服务间通信方式
- RESTful API:基于HTTP协议,以资源为中心进行设计。
- RPC(Remote Procedure Call):让程序像调用本地函数一样调用远程服务。常见框架如Dubbo、gRPC等。
- 消息队列(MQ):通过消息中介传递消息,如Kafka、RabbitMQ等。
优缺点
- RESTful API
- 优点:
- 简单易理解,基于HTTP协议,通用性强,便于与各种客户端交互。
- 松耦合,易于维护和扩展,支持缓存机制,可提高性能。
- 缺点:
- 性能相对较低,HTTP协议头部信息较多,增加额外开销。
- 对于频繁的小数据量请求,会有较高的网络传输成本。
- 优点:
- RPC
- 优点:
- 高效,基于TCP协议,性能优于RESTful API,适合对性能要求高的场景。
- 强类型,接口定义清晰,调用方和服务方之间通过接口契约进行交互,可有效减少错误。
- 缺点:
- 耦合度相对较高,服务方接口变动可能影响调用方。
- 不同RPC框架之间兼容性较差,缺乏统一标准。
- 优点:
- 消息队列
- 优点:
- 解耦,发送方和接收方无需直接关联,提高系统灵活性。
- 异步处理,可提升系统整体性能和响应速度,适合处理高并发场景。
- 削峰填谷,应对流量波动,保证系统稳定性。
- 缺点:
- 增加系统复杂度,需要额外管理消息队列中间件。
- 消息可能存在丢失、重复消费等问题,需要额外处理机制保证数据一致性。
- 优点:
根据业务需求选择合适通信方式
- 实时性要求不高,对通用性和可维护性要求高:选择RESTful API,如对外提供的开放接口,便于各种类型客户端调用。
- 对性能要求高,服务间交互频繁,内部服务调用:RPC更合适,如电商系统中订单服务和库存服务间的交互。
- 需要异步处理、削峰填谷,解耦系统模块:消息队列是较好选择,如在日志收集、订单处理等场景中。