构建云原生应用的关键因素就是实现系统模块解耦,为云原生的弹性提供前提。
一、微服务的发展历程
微服务发展的历程就是一个切实降本增效的过程,是勇敢实践的一步。
1、遵循单体-服务化-微服务-二代微服务的演变步骤
2、业务模块以API形式提供服务,实现解耦
3、多模块并行开发,提升功能交付效率
4、可用性提升,扩展灵活性提升,为实现高可用、可扩展提供了基础
5、服务治理能力下沉,与业务实现剥离,进一步让用户专注于业务
二、微服务拆分原则
1、康威定律
2、两个披萨理论
3、三个火枪手原则
三、微服务拆分策略
1、纵向拆分
将不同的功能模块服务化,独立部署和运维,标准是按照业务的关联程度来决定, 关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务
2、横向拆分
从公共且独立功能维度拆分,标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合
四、微服务拆分方法
1、基于业务逻辑拆分:将系统中的业务模块按照职责范围识别出来,每个单独的业务模块拆分为一个独立的服务
2、基于可扩展拆分:将系统中的业务模块按照稳定性排序,经常变化的服务拆分粒度较细
3、基于可靠性拆分:将系统中的业务模块按照优先级排序,然后重点保证核心服务的可用性
4、基于性能拆分:将性能要求高或者有性能瓶颈的模块拆分出来,避免性能压力大的服务影响其他服务