上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
过犹不及
但是,通常你会将应用程序过度拆分成太多服务。之前的标准可能会被滥用于创建服务,从而导致创建出过多的服务。
例如,除了提供一个简单的用户身份服务之外,你还可能将它再拆分成多个更小的服务,例如:
用户名称服务
用户地址管理服务
用户邮件地址管理服务
用户祖籍管理服务
这样做很可能有点拆分过度了。
将服务拆分成过细粒度会带来一些问题,包括整体的系统性能影响。但是从最基本的角度来说,每当要将一个功能拆分成多个服务时,你都会做以下几件事:
降低单个服务的复杂性(通常来说)。
增加系统整体的复杂性。
体积小的服务通常会降低单个服务的复杂性,但是,你拥有的服务越多,需要交互的独立服务也越多,从而导致整体系统架构变得越来越复杂。
如果一个系统中存在过多的服务,可能会带来以下这些问题。
影响大局观
想要记住整个系统架构变得越来越难,因为系统变得越来越复杂。
更大故障概率
更多独立组件之间需要相互协作,导致故障发生的概率更大。
难以修改服务
每个独立服务的消费者都越来越多,增加了修改服务可能对使用者造成影响的可能。
更多依赖
每个独立服务都越来越依赖于其他的服务。更多的依赖意味着发生更多问题的可能。
这些问题都可以通过在服务间定义清晰的接口边界来缓解,但这不是一个完美的解决方案。重要的一点是,我们需要在服务数量和服务体积之间找到一个适当的平衡点。