分布式系统通常由多个模块组成,每个模块负责不同的功能,以提高 性能、可扩展性、可靠性和容错性。以下是分布式系统中常见的核心模块及其作用:
- 网关(API Gateway)
-
作用:
- 统一接收所有客户端请求(Web、移动端等)。
- 进行 权限验证、请求路由、负载均衡、限流、熔断 等操作。
- 作为后端服务的入口,隐藏内部服务的复杂性。
-
常见实现:
- Nginx + OpenResty
- Spring Cloud Gateway
- Kong、Zuul、Traefik
- 负载均衡(Load Balancer)
-
作用:
- 通过 均衡流量 来提高系统吞吐量。
- 避免单个服务器过载,提高可用性。
- 负载均衡算法包括 轮询、最小连接、IP 哈希 等。
-
常见实现:
- Nginx、HAProxy、F5
- Kubernetes Ingress Controller
- 阿里云 SLB、AWS ELB、NGINX Plus
- 服务注册与发现(Service Registry & Discovery)
-
作用:
- 让服务自动注册,并动态发现其他服务的地址,适应 动态扩缩容。
- 解决微服务 IP 变更问题,避免手动配置。
-
常见实现:
- Eureka(Spring Cloud Netflix)
- Consul(HashiCorp)
- Zookeeper(Apache)
- Nacos(阿里巴巴)
- 配置中心(Configuration Center)
-
作用:
- 统一管理服务配置,如 数据库连接、API Key、缓存策略等。
- 动态刷新 配置,避免重启服务。
-
常见实现:
- Spring Cloud Config
- Apollo(携程开源)
- Nacos
- Consul KV
- 远程调用(RPC / HTTP 通信)
-
作用:
- 让不同服务之间可以调用彼此的方法,类似于本地函数调用。
- 支持 同步/异步 调用。
-
常见协议:
- HTTP REST(适用于跨语言)
- gRPC(基于 HTTP/2,适用于高性能场景)
- Dubbo(阿里巴巴开源,基于 Netty)
- Thrift(Facebook 开源)
- 消息队列(Message Queue, MQ)
-
作用:
- 解耦:异步消息处理,降低系统耦合度。
- 削峰填谷:缓冲高并发请求,防止系统崩溃。
- 数据一致性:实现分布式事务,避免数据丢失。
-
常见实现:
- Kafka(大数据、高吞吐)
- RabbitMQ(轻量级、易用)
- RocketMQ(阿里巴巴)
- Pulsar(流处理)
- 分布式数据库 & 缓存
7.1 分布式数据库
-
作用:
- 数据水平拆分,支持 海量数据存储。
- 提供 事务、复制、高可用 机制。
-
常见实现:
- MySQL 分片(Sharding-JDBC、Vitess)
- PostgreSQL、TiDB
- MongoDB、Cassandra(NoSQL)
7.2 分布式缓存
-
作用:
- 缓存热点数据,提高系统响应速度。
- 降低数据库压力,支持 高并发。
-
常见实现:
- Redis(内存存储,支持分布式)
- Memcached(简单键值存储)
- EhCache(本地缓存)
- 分布式事务(Distributed Transaction)
-
作用:
- 解决跨服务的数据一致性问题。
- 避免数据不一致导致业务错误。
-
常见方案:
- 两阶段提交(2PC) (适用于金融行业)
- TCC(Try-Confirm-Cancel) (适用于高吞吐)
- 本地消息表 + 事件驱动(可靠异步消息)
- Seata(阿里开源)
- 分布式日志 & 监控
9.1 日志管理
-
作用:
- 统一收集 分布式系统 的日志,方便排查问题。
-
常见工具:
- ELK(Elasticsearch + Logstash + Kibana)
- Graylog
- Loki(Grafana 开源)
9.2 监控 & 报警
-
作用:
- 监控 CPU、内存、请求量、错误率 等指标。
- 触发 自动告警。
-
常见工具:
- Prometheus + Grafana
- Zipkin / SkyWalking(链路追踪)
- OpenTelemetry
- 任务调度(Distributed Task Scheduling)
-
作用:
- 让定时任务支持 高可用、分布式执行。
-
常见工具:
- XXL-JOB
- Quartz
- ElasticJob
- 安全(Security)
-
作用:
- 保护分布式系统,防止 SQL 注入、XSS、CSRF 等攻击。
-
常见方案:
- JWT(JSON Web Token) (无状态认证)
- OAuth 2.0 + OpenID Connect
- Spring Security
- Shiro
- 自动化运维(DevOps & CI/CD)
-
作用:
- 自动化构建、测试、部署,提高开发效率。
-
常见工具:
- Kubernetes(容器编排)
- Docker(容器化)
- Jenkins / GitLab CI / ArgoCD(持续集成)
总结
| 模块 | 作用 | 常见工具 |
|---|---|---|
| 网关 | 统一入口,路由、权限 | Nginx、Spring Cloud Gateway |
| 负载均衡 | 分流请求,提高吞吐量 | Nginx、HAProxy、K8s Ingress |
| 服务发现 | 自动发现服务 | Eureka、Nacos、Consul |
| 配置中心 | 统一管理配置 | Apollo、Spring Cloud Config |
| RPC 通信 | 服务间调用 | gRPC、Dubbo、REST API |
| 消息队列 | 解耦、削峰 | Kafka、RabbitMQ、RocketMQ |
| 数据库 | 存储数据 | MySQL、PostgreSQL、MongoDB |
| 缓存 | 加速访问 | Redis、Memcached |
| 分布式事务 | 确保一致性 | Seata、TCC、2PC |
| 日志 & 监控 | 诊断系统问题 | ELK、Prometheus |
| 任务调度 | 定时任务 | XXL-JOB、Quartz |
| 安全 | 认证、授权 | JWT、OAuth2.0 |
| CI/CD | 自动化部署 | Kubernetes、Docker |
分布式系统的核心目标是 高可用、可扩展、容错性强,以上模块共同协作,实现大规模业务的稳定运行。🚀