微服务是一种把复杂系统拆分为多个小服务的架构方式。每个服务围绕独立业务能力构建,可以单独开发、部署、扩容和演进。
- 业务复杂度高;
- 多团队协作;
- 模块边界清晰;
- 部分服务需要独立扩容;
- 发布节奏不同。
- 服务注册与发现;
- 配置中心;
- 服务通信;
- 网关;
- 限流熔断;
- 链路追踪;
- 日志和监控;
- 分布式事务;
- 灰度发布。
- 拆分过早导致复杂度上升;
- 服务边界不清;
- 调用链路过长;
- 数据一致性难处理;
- 排查问题更复杂。
先把单体应用设计清楚,再学习服务拆分。微服务不是目的,解决团队协作、独立扩展和复杂业务治理才是目的。