微服务是大型架构的核心,下面我重点详解微服务架构@mikechen
微服务架构
微服务架构是一种将单个应用程序拆分为多个小型、自治服务的架构风格。
每个微服务独立部署、运行,围绕特定业务能力设计,并通过轻量级通信机制协作。
业务能力划分:每个服务围绕单一业务能力构建。
去中心化治理:各团队独立负责服务设计、开发、部署与运维。
去中心化数据管理:每个服务拥有独立数据存储,避免数据库共享。
智能端点与哑管道:服务间通过简单无状态接口通信,减少逻辑复杂度。
弹性设计:通过重试、断路器等技术实现容错和降级。
敏捷开发和持续集成/部署。
微服务聚合方案
微服务架构,包含多种架构模式,比如:聚合、代理等模式。
微服务聚合,将多个微服务的数据或结果聚合在一个网关或中间层中,对外提供统一接口。
例如:前端访问一个统一的 API Gateway,由它聚合多个后端服务的结果。
简化客户端开发, 客户端只需与一个单一的 端点通信,无需了解内部微服务的复杂拓扑和地址。
但是,增加开发复杂性。
需要在网关层编写和维护额外的代码来处理复杂的数据聚合逻辑,这使网关层变得“厚重”。
以及,引入单点瓶颈。
网关本身可能成为系统的单点故障或性能瓶颈,需要强大的高可用和扩展性设计。
微服务共享方案
微服务共享方案,通常是指微服务之间共享数据库、或共享代码库。
比如:将通用功能(如用户认证、日志服务、消息服务等),抽离为独立共享服务,被多个业务服务共同调用。
好处是,通用逻辑统一维护,减少系统冗余,并且数据提高一致性。
但是,在现代微服务设计中,共享数据库被视为一个严重的反模式(Anti-Pattern)。因为它违背了微服务的核心原则:自治性。
所以,可以用于微服务过渡方案。
微服务代理模式
微服务代理模式,通常以 Sidecar 模式或 服务网格(Service Mesh)的形式出现。
代理层由基础设施统一实现,与业务微服务使用的编程语言(、、 等)无关,解决了多语言环境下的治理难题。
实现了服务间通信的统一管理,运维团队可以在一个控制平面(如 ),上集中配置和控制所有服务的行为。
这样,业务开发者可以专注于业务代码,无需关注治理逻辑。
微服务异步消息模式
异步消息模式利用 消息队列(MQ) 、或 事件流(Event Stream), 来实现服务间的通信。
生产者服务发送消息到队列后立即返回,消费者服务随后从队列中获取消息进行处理。
生产者和消费者彼此独立,不知道对方的存在,实现了时间和空间上的完全解耦。
支持削峰填谷,应对突发流量。
比如:大规模高并发系统(如电商秒杀、异步通知)。