微服务架构
微服务和SOA的关系
- 是两个不同的架构设计理念,只是“服务”上有交集
- 微服务粒度更细
- 服务通信更轻量
- SOA 多是兼容系统,微服务则是快速交付
- SOA 适用于庞大的笨重的项目,微服务更适用轻量的互联网项目
微服务的陷阱
- 服务划分过细,服务关系过于复杂
- 服务数量过多,团队效率下降
- 调用链太长,性能下降
- 调用链太长,问题难以定位
- 没有自动化支持,无法快速交付
- 没有微服务治理,服务数量多后管理混乱
最佳实践
服务粒度
- 开发阶段,三个人管理一个服务
- 稳定阶段,可以一个人管理多个
拆分方法
- 基于业务拆分
- 基于可扩展拆分:成熟和改动的不大的分为稳定服务,经常变动和迭代的分为变动服务
- 基于可靠性拆分:
- 避免非核心业务影响核心业务
- 核心服务高可用更方便
- 降低高可用成本
- 基于性能拆分
- 性能要求高的单独拆分方便提高性能
基础设施
- 服务发现
- 自理式
- 代理式
- 配置中心
- 接口框架
- API 网关
- 服务路由
- 服务容错
- 请求重试
- 流控
- 服务隔离
- 服务监控
- 服务跟踪
- 服务安全
- 自动化测试
- 自动化部署