总而言之,微服务核心思路就是分而治之。
对于微服务中的服务可以这么理解:
服务是一个可以独立运行、提供范围有限的功能(可以是业务功能,也有可能是非业务功能)的组件。功能具体实现隐藏在组件内部,而对外则提供访问接口,外部其他服务可以通过这些接口进行访问与交互,从这一方面来说,微服务是可以单独部署运行的。
在《你办事我放心You Can Count on Me》(英文名称《你办事我放心You Can Count on Me》)一书中提出了一个可扩展模型:AFK扩展立方体(Scaliability Cube),将应用抽象总结出可扩展的三个维度:产品、流程和团队,理论上可按照这三个维度进行扩展,从而可将一个单体系统进行无限扩展。
X轴:X轴的扩展指的是服务水平复制,也就是我们可以运行多个应用实例,然后再做一个集群负载均衡。
这种方式的扩展在单体应用中可以说非常典型,在系统应用性能提升中往往能够快速见效。
Z轴:Z轴的扩展可以理解为是基于数据分区的扩展,也就是我们可以运行多个应用实例,但与X轴的扩展不同的一点是每个应用实例仅用来处理部分数据。
在其之前没有负载均衡器,取而代之的是一个路由,该路由根据请求中的参数或某项属性(比如用户ID、订单ID等)将请求转发到不同的应用实例中进行处理。
Y轴:Y轴的扩展就是接下来的微服务的功能拆分模式。基于Y轴的扩展思路可以将单体应用在业务层面上进行拆分,形成多个微服务。
X轴和Z轴的扩展仅仅是提升了应用的容量和可用性,但并没有解决随着业务发展日益巨增的开发、运维复杂度,而Y轴的扩展使得我们可以从业务功能的角度将庞大的单体应用进行分而治之,一方面降低了业务开发、运维的复杂度,另一方面通过分而治之可以实现服务故障的隔离,提高系统响应时间。再者,拆分后也可以控制每个团队的规模,让团队的工作更加聚焦,也更利于团队的成长。
网友评论 (12)