我们都知道,做事之间的访问效率最高确当属做事之间的直接访问,不经由任何中间方。我们可以大略的理解HSF便是实现做事之间的直接访问,从而实现去中央化的SOA架构,那么问题来了,让做事之间直接访问这不是又回到“原始社会”了吗?实在不然,“原始社会”的做事直接互访是没有任何外围支持的,只是上来就开始互访,没有一定的“根本培植”,而HSF不然,HSF为了实现做事之间的直接互访做了大量的根本事情,而正是这些“根本事情”支撑着做事直接互访的效率上风。
理解HSF的朋友大概都知道,阿里早期还有一个对应的开源项目Dubbo,由于各类缘故原由,阿里停滞了对此项目的更新。
在提到HSF之前,我们首先理解几个观点组件:
1)做事供应者
2)做事调用者
3)地址做事器
4)配置做事器
5)Diamond做事器
做事供应者在做事框架中真正供应做事功能实现的运用实例,为了保障做事供应的高可用性,一样平常采取集群支配。每一个HSF的运用均因此War包的形式存在,运行在阿里巴巴优化定制后的Tomcat容器中,在Tomcat容器层已经集成了HSF做事框架对做事供应者或做事调用者进行配置做事器创造、做事注册、订阅、失落效转移等干系功能,以是不管是在做事供应者还是调用者开拓时,只须要进行做事干系的配置操作,运用中无需引入任何HSF干系的Jar依赖包。
考虑到运用故障的隔离、更方便的做事管控,目前淘宝内部大部分运用的支配办法还是一个虚拟机(对应一个操作系统)运行一个Tomcat容器,每个Tomcat运行一个做事运用,随着近几年以Docker为首的容器技能的发展和盛行,现在阿里巴巴内部也正在进行运用容器化支配的事情,让做事器的资源利用更加科学和高效。
做事调用者作为做事的消费者,大多数也因此War运用包的办法运行在Tomcat容器中,在阿里巴巴集团内部也有一部分是基于C/C++、PHP、Node.js等措辞开拓的做事调用者。
地址做事器在HSF做事框架中,地址做事器肩负着给做事供应者和做事调用者供应支配环境中所有配置做事器和Diamond做事器的做事器列表信息,是由Nginx供应该做事能力。在支配HSF做事环境时,会将全体环境中的配置做事器集群(做事器IP列表)和Diamond做事器集群信息设置在地址做事器上,在实际生产支配中,也会支配多台地址做事器供应负载均衡和高可用性的做事,做事供应者和做事消费者通过统一域名的办法访问这些地址做事器,通过DNS轮询,实现地址做事器访问的高可用性。
配置做事器配置做事器紧张卖力记录环境内所有做事发布(做事供应者的IP地址和做事端口信息)和做事订阅(做事调用者的IP地址和做事端口信息)信息,并将做事干系信息推送到做事节点上。为了追求做事发布和推送效率,所有的做事发布和订阅信息均是保存在内存中。
配置做事器与所有做事供应者和调用者均是长连接,采取心跳的办法可监控到各做事运行节点的状况,一旦涌现做事供应者做事节点涌现故障时,会自动推送更新后(将出问题的做事供应者做事节点从列表中删除)的做事供应者列表给干系的做事调用端。
在生产环境中,会支配多台配置做事器用于做事发布、订阅、推送的负载均衡,在多台配置做事器间会进行实时的数据同步,担保做事发布和订阅信息尽快能同步到各做事节点上。
在某种程度上,配置做事器在HSF框架中扮演了做事调用调度的指挥官,通过给做事调用者端推送不同的做事供应者列表就可以轻易地调度做事调用的路由,这一特性在淘宝平台实现单元化(即某一客户在访问淘宝时,访问要求一旦路由到某一淘宝机房后,在淘宝上进行的所有业务的操作均可以在该机房完成,而无需访问其他机房的做事)、异地多活起到了至关主要的浸染。
Diamond做事器实质上Diamond做事器是一个通用的统一配置管理做事(类似于Zookeeper),给运用供应统一的配置设置和推送做事,利用场景非常广泛,在阿里巴巴内部有很多产品在须要进行配置的保存和获取时都会利用Diamond做事器。
在HSF做事框架中,Diamond做事器紧张承担了做事调用过程中对付做事调用安全管控的规则、做事路由权重、做事QPS阀值等配置规则的保存,所有的信息均是持久化保存到了后真个MySQL做事器中,在生产环境中,会有多台Diamond做事器供应负载均衡的做事。利用Diamond做事器进行做事干系设置的范例场景如下:
通过设置白名单(做事调用者所在做事节点IP地址)的办法设置某些做事或做事中的方法只能让特定IP地址的做事器调用。通过用户认证的办法掌握做事是否能够调用按照不同的做事器权重设置做事调用者对多个做事供应者做事节点的访问。设置某些做事的QPS能力上限值,一旦该做事的QPS达到该阀值,则谢绝做事的连续调用,这也是实现做事限流的技能实现,在平台进行大匆匆或秒杀场景时,保障平台稳定性的主要樊篱。通过这些规则的设置,Diamond做事器除了将这些规则保存在自身的数据库中外,会自动将这些规则推送到干系的做事节点上(实际上是做事节点会定时从Diamond做事器上同步干系配置信息),使这些规则能立即在做事运行环境中生效。
接下来我们看看HSF实现图,看看各个组件的功能:
1.做事节点对配置做事器列表的获取
做事调用者和做事供应者在随着Tomcat容器启动后,会以域名的办法获取到可用的地址做事器,通过向地址做事器分别发送获取做事器列表的办法,在容器启动完成后,就已经在该做事节点上获取到了配置做事器和Diamond做事器的IP列表信息。如图中步骤①②
2.做事的注册发布
作为做事供应者,当获取到配置做事器的做事器列表后,则向配置做事器发送当前运用中包含的做事供应者干系信息(这些信息均是从运用的配置文件中获取到的,比如做事的接口类全名、做事版本、所属做事组等信息),连同当前做事器的IP地址、做事端口等信息进行做事注册发布,如图中步骤③,这个步骤在每一个有做事供应的运用启动时都会自动实行,比如现在有5个供应同一做事的运用启动后,此时在配置做事器上就已经保存了供应这一做事的5个做事器干系信息。
3.做事订阅
当作为做事调用者的运用启动时,同样在获取配置做事器列表后,就进行与配置做事器的交互,发送做事消费者干系信息(同样包含了做事的接口全民,做事版本、所属做事组)到配置做事器进行做事订阅,此时在配置做事器上会通过“做事接口全名+做事版本”作为匹配条件在当前配置做事器的内存中进行搜索,一旦获取到对应的做事注册信息,则将对应的做事供应者的做事器组IP地址及端口返回给做事调用者所在的运用节点上,此时也就完成了做事调用者端对付它所须要调用的做事供应者做事器列表信息,用于在做事真正交互时利用。做事订阅过程如图④⑤
4.做事规则的推送
如果没有上文提到对付做事安全管控、流量掌握等需求的时候,对付Diamond做事器的利用并不是必需的,在有这样的需求场景时,可通过Diamond做事器供应的规则设置界面,对指定做事的做事供应者和调用者设置干系的规则,一旦保存规则后,则此规则配置将会在5秒内推送到与所设置做事干系的做事节点上。如图步骤⑥
5.做事交互
在运用进行业务要求处理过程中,涌现了做事调用者对做事供应者的调用时,做事调用者从已经保存在该节点上的做事供应者做事器列表中选择(阿里巴巴内部利用随机模式)个中一台进行做事要求的发送,做事交互期间完备是做事调用者和做事供应者间两台做事期间的操作,无需通过中间做事器的中转。这便是成为“去中央化”的紧张缘故原由,如图步骤⑦
通过以上的先容,大家该当对HSF框架有了更清晰的理解了吧,那么接下来我们就说说HSF的上风有哪些。
一个精良的框架必要的讲究是容错性和扩展性(线性扩展),当然还有高可用性,高性能性等等,这里不以它们来剖析HSF。
HSF框架的容错机制由于要担保做事的高可用性,以是在生产环境支配中一定会有多个运用实例作为做事供应者供应某一相同做事,基于之前所提到的做事框架运行事理的解释,在进行做事调用时,做事调用者端已经保存了它所须要调用的做事供应者的做事器列表信息,以下图为例,图中保存了三台做事供应者所在做事器的列表,当采取随机办法获取个中一台进行做事交互时,步骤①,不管是第一台做事器已经发生故障造成了做事要求无法相应,还是该做事器已经吸收了做事要求,在进行做事要求处理过程中涌现了做事故障(比如宕机、网络问题),造成该做事器没有在规定的韶光(一样平常做事调用会设置到期韶光)返回做事处理的结果,做事调用者端则会获取到做事调用失落败的反馈,如果步骤②,会立即从剩下的做事供应者做事器列表中选择其余一个做事器再次进行做事要求,如图步骤③,这一次这个做事供应者实例正常供应了这次做事的要求,如图步骤④,从而担保了在个别做事供应者涌现故障时,完备不会影响该做事正常供应做事。
由于配置做事器是采取长连接的办法与做事节点进行网络通信,一旦创造有做事供应者实例涌现故障,配置做事器在秒级就会感知到,如上图步骤⑤,此时会将出问题的这台做事供应者的信息从该做事器列表中删除,并将更新后的做事器列表采取推送的办法同步给予该做事干系的所有做事调用者端,如上图步骤⑥,这样当下次做事调用者再进行此做事的调用时,就不会由于随机的办法再次对已经停滞做事供应的做事器发起做事的调用。
HSF框架的线性扩展支持HSF框架最为主要的一个特性便是做事能力的可扩展性,也便是真正做到某个做事的业务处理能力能随着做事器资源的增加得到线性的增长。其实在传统架构中一贯也会强调平台的扩展能力,但均会程度不一地涌现做事节点数量到达一定量后,涌现阻碍平台做事能力扩展的问题。有的是涌现网络传输的瓶颈。也有的是做事节点接入数量上的限定,上一篇所讲到ESB框架带来的“雪崩”效应,也是限定架构扩展能力的主要缘故原由。
如下图1描述的场景,当做事面对较大的做事调用压力或将要面临如双11大匆匆、秒杀等活动前,已有的做事供应者各做事器水位(CPU、内存、IO等)处于比较高的情形或现有做事能力知足不了业务访问量的哀求时,则须要通过增加做事节点数量的办法提升该做事的做事处理能力。
图1
图2
图3
此时,只须要通过增加该做事的做事供应者实例,基于HSF框架的运行机制,新增加的做事供应者实例(图2中增加一台做事器)一旦运用启动完成后,可在几秒内(紧张完成做事注册发布、更新做事列表推送到做事调用者端)开始进行做事要求的处理,从而达到分担其他做事器实例压力的浸染,实现做事能力整体水位规复到正常状态。
正是基于HSF框架这一特性,从而真实实现了只要增加做事实例就能实现该做事能力扩展的目标,目前阿里巴巴共享做事奇迹部中多个做事中央在双11那天各自所支配的做事实例节点数量均超过2000,即同一个做事由超过2000各做事实例同时供应负载均衡的做事。
至此HSF框架的实现事理及目的讲完了,如果可能的接下来会说说当先比较火的微做事,敬请期待。(文章紧张来自《企业IT架构转型之道》一书)