微服务系统分析与设计

1 微服务系统概述

1.1 微服务定义

微服务架构:一种架构风格,将一个单一应用程序开发为一组小型服务,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制。

1.2 微服务特点

  1. 服务独立部署
  2. 服务自治
  3. 轻量级通信
  4. 去中心化
  5. 技术多样性

1.3 微服务 vs 单体架构

对比项单体架构微服务架构
部署整体部署独立部署
扩展整体扩展按需扩展
技术栈统一多样
开发简单复杂
运维简单复杂

2 微服务架构

2.1 服务拆分原则

  1. 业务边界清晰
  2. 高内聚低耦合
  3. 服务粒度适中
  4. 独立部署

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网关模式统一入口
服务发现模式服务注册与发现
配置模式外部化配置
熔断模式防止雪崩

参考资源

  • 系统分析师教材(第二版)相关章节
  • 文老师软考教育