单体架构VS微服务架构
单体架构优点:
- 结构简单
- 部署、测试简单
单体架构缺点:
- 复杂性高
- 部署慢、频率低
- 扩展能力受限
- 阻碍新技术接入
微服务“定义”
微服务的特性
- 每个微服务可独立运行
- 一系列微服务项目构建起一个系统
- 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理、用户管理等。
- 可以使用不同的语言与数据存储技术
- 微服务之间通过轻量的通信机制进行通信,例如REST API
- 全自动的部署机制
微服务的优点
- 单个服务更易于开发、维护
- 单个服务启动较快
- 局部修改容易部署
- 技术栈不受限
- 按需伸缩
微服务的缺点
- 运维要求高
- 分布式固有的复杂性(网络延迟、分布式事务)
- 重复劳动
微服务的适用场景
- 大型、复杂项目
- 快速迭代、部署发布
- 访问压力大
不适合微服务的场景
- 业务稳定(需求变化小)
- 迭代周期长
微服务拆分-方法论
-
领域驱动设计(Domain Driven Design)
-
面向对象(by name./ by verb.)
-
职责划分
-
通用性划分
微服务拆分-合理的粒度
- 良好的满足业务
- 幸福感
- 增量迭代
- 持续进化