
【问题 1】参考答案
微服务架构优点
1. 模块解耦:业务按领域拆分,单服务体量小、逻辑清晰,降低开发、维护和迭代难度。
2. 弹性扩容:各服务独立部署、独立扩缩容,可针对流量热点模块单独扩容,资源利用率更高。
3. 技术异构:不同服务可根据业务需求选用适配的技术栈,无需统一技术框架。
4. 故障隔离:单服务故障仅影响自身,不会导致整体系统瘫痪,提升系统容错性。
5. 高效协作:可按服务拆分团队,多团队并行开发、独立迭代,提升研发效率。
微服务架构缺点
1. 系统复杂度提升:分布式架构带来网络延迟、数据一致性、服务调用等一系列分布式问题。
2. 运维成本高:服务实例数量多,部署、监控、日志排查、运维管控难度大幅增加。
3. 调用链路复杂:服务间依赖繁多,跨服务调用链路长,问题排查、故障定位难度提升。
4. 事务处理困难:分布式场景下无法保证强一致性,需额外方案解决分布式事务问题。
5. 接口管控繁琐:多服务接口迭代频繁,版本兼容、接口文档管理工作量大。
适用场景:业务模块边界清晰、业务迭代频繁、存在高并发场景、需要弹性扩容、多团队并行开发的大型复杂系统。
不适用场景:业务简单、体量较小、需求稳定、迭代频率低,追求快速上线、低成本运维的小型系统。
【问题 2】参考答案
主流流式消息中间件及特点
1. Kafka:高吞吐、低延迟,支持海量消息持久化与堆积,分区机制支持分布式并行处理,性能优异,适合大规模流式感知数据、日志数据的采集与流转。
2. RabbitMQ:路由策略丰富、可靠性极高,支持消息确认、死信队列、重试机制,消息投递精准,适合核心业务事件的可靠投递。
微服务常用通信方式
1. 同步短连接调用:REST API,基于HTTP协议,通用性强、跨语言适配性好。
2. 同步长连接调用:gRPC,基于Protobuf序列化,传输效率高、延迟低,适合高性能服务交互。
3. 异步事件驱动:消息队列(Kafka/RabbitMQ),解耦服务依赖,适配高并发、异步业务场景。
【问题 3】参考答案
SAGA 模式是解决长事务、分布式事务的经典方案,分为编排式和协同式两种实现方式。
1. 编排式(Orchestration)
实现逻辑:搭建中央事务编排器,统一定义事务执行流程、步骤顺序,由编排器主动调度各个微服务执行子事务,异常时统一触发补偿回滚。
优点:事务流程集中管控、逻辑清晰、便于维护和问题排查,适配复杂长事务场景。
缺点:编排器为核心单点,高并发场景下易成为系统性能瓶颈,存在单点故障风险。
2. 协同式(Choreography,舞蹈式)
实现逻辑:无中央控制器,各微服务基于事件机制自主协同,单个服务完成子事务后发布事件,自动触发下一个服务执行,异常时各服务自主执行补偿逻辑。
优点:去中心化架构,无单点瓶颈,服务耦合度极低,扩展性好。
缺点:事务流程分散在各个服务中,无法可视化管控,整体链路复杂,故障排查、流程维护难度大。