整理下服务化演变过程中的几个关键节点。
- 服务路由
- 负载均衡
分布式应用构架体系对于业务逻辑复用需求强烈,上层业务均想借用已有的底层服务,来快速搭建更多、更丰富的应用,降低新业务开展的人力和时间成本,快速响应瞬息万变的市场需求。公共业务被拆分出来,形成可用的共用服务,最大程度的保障了代码和逻辑的复用,避免重复建设,这种设计也称为SOA(Service-Oriented Architecture)。
服务路由
SOA构架中,服务消费者通过服务名称,在众多服务中找到目标服务地址列表成为服务路由。如下图所示,为服务路由示意图。
服务路由核心即一个服务名和服务地址列表的映射关系。从早起的配置文件发展到现在的分布式配置中心。
负载均衡
对于负载较高的服务,往往都是集群发布,在请求到来时,需要将请求均衡的分配到后端服务器,负载均衡程序将会从服务地址列表中,按照负载均衡算法,选择一台机器进行访问。
服务演变
服务规模较小时,可以采用硬编码的方式,将服务地址和配置写在代码里,通过编码解决路由和负载均衡问题。服务规模较小时,采用配置的方式进行SOA构架还是可以的,毕竟服务数量可控,维护成本能够接受。
但是当服务规模在扩大时,服务变得越来越多,构架形式即发生了改变。这个时候其实会有一个突出问题-单点故障:服务路由down了,所有的服务就都无法访问了;负载均衡服务down了,服务也无法访问。因此这种构架对单点稳定性要求较高,同时管理这些不断增加的服务配置也愈发困难。
服务数量激增,需要一个动态注册和获取服务信息的地方,统一管理服务名称和对应的地址列表,即引入服务配置中心。基于ZooKeeper的路由和负载均衡构架如下:
小结
本文仅在概念上理解一下SOA服务构架的演变过程及关键的节点,具体部署如ZooKeeper、服务路由及负载均衡实现将在后面的文章中介绍。
备注
文中的图片是通过OmniGraffle软件绘制,如果需要文中原图的话,留言即可。
OmniGraffle是Mac平台上的一款绘图工具,请移步Mac流程图工具OmniGraffle介绍-https://blog.csdn.net/loongshawn/article/details/52282547了解,早些时候可以以优惠价购买授权,目前渠道已经被封了,因此不想花钱的话,只能使用破解版本。