青训营X豆包MarsCode 技术训练营 | 微服务架构原理

10 阅读4分钟

系统架构的演变历史

1. 单体架构

2. 垂直应用架构

3. 分布式架构

4. SOA(面向服务架构)

5. 微服务架构

微服务架构概述

微服务架构是一种将应用程序分解为一组小型、独立的服务的方法。每个服务负责完成单一的业务功能,并且可以独立开发、部署和扩展。这些服务通过轻量级的通信机制(如HTTP/REST或gRPC)进行交互。

微服务架构的核心要素

服务治理

  • 服务注册与发现:服务在启动时向注册中心注册自己的地址,客户端通过服务发现机制获取服务实例的地址。

  • 负载均衡:通过负载均衡器将请求分发到不同的服务实例,提高系统的可用性和性能。

  • 容错与降级:当某个服务不可用时,可以通过熔断、限流等机制保护系统稳定。

  • 配置管理:集中管理服务的配置信息,支持动态更新。

可观测性

  • 日志:记录服务的运行状态和错误信息,便于问题排查。

  • 监控:实时监控服务的性能指标,如响应时间、吞吐量等。

  • 链路追踪:跟踪请求在各个服务之间的传递路径,帮助定位性能瓶颈和故障点。

  • 告警:当监控指标超过阈值时,自动发送告警通知。

安全

  • 身份认证:验证用户的身份,确保只有合法用户才能访问服务。

  • 授权:根据用户的角色和权限控制其对服务的访问。

  • 数据加密:对敏感数据进行加密处理,防止数据泄露。

  • API网关:作为系统的统一入口,提供安全防护、流量控制等功能。

微服务架构的基本概念与原理

服务

  • 定义:服务是微服务架构中的基本单元,负责完成特定的业务功能。

  • 特点:服务是独立的、可独立部署的,具有明确的边界和职责。

实例

  • 定义:服务的一个运行实例,可以是一个进程或容器。

  • 特点:实例可以独立启动、停止和重启,多个实例可以并行运行以提高系统的可用性和性能。

实例与进程的关系

  • 关系:一个服务实例通常对应一个进程,但也可以是多个进程的组合。

  • 区别:实例是服务的运行实体,而进程是操作系统的执行单元。

集群

  • 定义:由多个服务实例组成的集合,共同提供服务。

  • 特点:集群内的实例可以分布在不同的物理机或虚拟机上,通过负载均衡器进行请求分发。

常见的实例承载形式

  • 容器:如Docker,提供轻量级的运行环境。

  • 虚拟机:如VMware,提供完整的操作系统环境。

  • 无服务器架构:如AWS Lambda,按需运行代码,无需管理基础设施。

有状态/无状态服务

  • 有状态服务:服务实例保存了用户的会话状态或其他持久化数据。

  • 无状态服务:服务实例不保存任何状态,每次请求都是独立的。

服务注册及发现

在代码层面如何调用一个目标服务的地址?

  • 服务发现:客户端通过服务发现机制(如Eureka、Consul、Zookeeper等)获取目标服务的地址列表。

  • 负载均衡:客户端从地址列表中选择一个实例进行请求,可以使用轮询、随机等策略。

服务实例上线及下线过程

  • 上线:服务实例启动后,向注册中心注册自己的地址。

  • 下线:服务实例停止前,从注册中心注销自己的地址。

流量的特征

统一网关入口

  • 定义:API网关作为系统的统一入口,处理所有外部请求。

  • 作用:提供路由、鉴权、限流、监控等功能。

内网通信多数采用RPC

  • 定义:远程过程调用(RPC)是一种进程间通信方式,允许程序像调用本地函数一样调用远程服务。

  • 优点:高效、易于使用,支持多种序列化协议(如JSON、Protocol Buffers)。

网状调用链路

  • 定义:微服务架构中,服务之间通过复杂的调用链路进行交互。

  • 特点:调用链路复杂,需要通过链路追踪工具(如Zipkin、Jaeger)进行监控和分析。

    在实际应用中,选择合适的架构需要综合考虑业务需求、团队能力和运维成本等因素。微服务架构的核心要素包括服务治理、可观测性和安全,这些要素对于确保系统的稳定运行至关重要。