微服务具体实践方法:
针对:微服务拆分过细,过分强调“small”、微服务基础设施不健全,忽略了“automated”、微服务并不轻量级,规模大了后,“lightweight”不再适应。
1、服务粒度
基于团队规模进行拆分,微服务拆分粒度的“三个火枪手”原则,
从系统规模来讲,3个人负责开发一个系统,系统的复杂度刚好达到每个人都能全面理解整个系统,又能够进行分工的粒度;
从团队管理来说,3个人可以形成一个稳定的备份,即使1个人休假或者调配到其他系统,剩余2个人还可以支撑;
从技术提升的角度来讲,3个人的技术小组既能够形成有效的讨论,又能够快速达成一致意见;
“三个火枪手”的原则主要应用于微服务设计和开发阶段,如果微服务经过一段时间发展后已经比较稳定,处于维护期了,无须太多的开发,那么平均1个人维护1个微服务甚至几个微 服务都可以。
2、拆分方法
基于业务逻辑拆分
基于可扩展拆分:将系统中的业务模块按照稳定性排序,将已经成熟和改动不大的服务拆分为稳定服务,将经常变化和迭代的服务拆分为变动服务。(这样拆分主要是为了提升项目快速迭代的效率,避免在开发的时候,不小心影响了已有的成熟功能导致线上问题)
基于可靠性拆分:将系统中的业务模块按照优先级排序,将可靠性要求高的核心服务和可靠性要求低的非核心服务拆分开来,然后重点保证核心服务的高可用。好处可以避免非核心服务故障影响核心服务、核心服务高可用方案可以更简单、能够降低高可用成本(将核心服务拆分出来后,核心服务占用的机器、带宽等资源比不拆分要少很多。