微服务系统分析与设计
1 微服务系统概述
1.1 微服务定义
微服务架构:一种架构风格,将一个单一应用程序开发为一组小型服务,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制。
1.2 微服务特点
- 服务独立部署
- 服务自治
- 轻量级通信
- 去中心化
- 技术多样性
1.3 微服务 vs 单体架构
| 对比项 | 单体架构 | 微服务架构 |
|---|---|---|
| 部署 | 整体部署 | 独立部署 |
| 扩展 | 整体扩展 | 按需扩展 |
| 技术栈 | 统一 | 多样 |
| 开发 | 简单 | 复杂 |
| 运维 | 简单 | 复杂 |
2 微服务架构
2.1 服务拆分原则
- 业务边界清晰
- 高内聚低耦合
- 服务粒度适中
- 独立部署
2.2 服务通信
同步通信:
- RESTful API
- RPC(Dubbo、gRPC)
异步通信:
- 消息队列(Kafka、RabbitMQ)
- 事件驱动
2.3 服务注册与发现
服务注册中心:
- Eureka
- Consul
- Nacos
- ZooKeeper
2.4 负载均衡
客户端负载均衡:
- Ribbon
服务端负载均衡:
- Nginx
- F5
3 服务治理
3.1 服务网关
功能:
- 路由转发
- 负载均衡
- 认证授权
- 限流熔断
- 日志监控
实现:
- Zuul
- Spring Cloud Gateway
- Kong
3.2 配置中心
配置中心:
- Spring Cloud Config
- Apollo
- Nacos
3.3 服务容错
容错模式:
- 熔断:防止雪崩效应
- 降级:返回默认值
- 限流:限制请求速率
实现:
- Hystrix
- Sentinel
- Resilience4j
3.4 链路追踪
链路追踪系统:
- Zipkin
- Jaeger
- SkyWalking
4 容器化与编排
4.1 Docker
Docker:容器化技术,实现应用的快速部署和隔离运行。
核心概念:
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
4.2 Kubernetes
Kubernetes(K8s):容器编排平台,自动化部署、扩展和管理容器化应用。
核心概念:
- Pod
- Service
- Deployment
- ConfigMap
- Secret
5 微服务设计模式
5.1 常用模式
| 模式 | 说明 |
|---|---|
| 服务拆分模式 | 按业务能力拆分 |
| 数据库模式 | 每个服务独立数据库 |
| API网关模式 | 统一入口 |
| 服务发现模式 | 服务注册与发现 |
| 配置模式 | 外部化配置 |
| 熔断模式 | 防止雪崩 |
参考资源
- 系统分析师教材(第二版)相关章节
- 文老师软考教育