用于分布式系统的负载均衡及高可用性子系统及方法
【专利摘要】本发明提供一种用于分布式系统的负载均衡及高可用性子系统及方法,包括至少2个服务提供者模块、注册中心模块和至少一个客户端模块;服务提供者模块计算自身的服务权值,并将自身能够提供的服务和服务权值注册到注册中心模块,并计算此类服务的服务提供者概率分布;注册中心模块将服务提供者模块注册的服务,以命名树的结构进行统一命名服务,并存储每个服务所对应的服务提供者列表和服务提供者概率分布;客户端模块根据自己要获得的服务名称,获取对应的服务提供者列表和服务提供者概率分布,通过负载均衡算法随机选择一个服务提供者;如果服务提供者可用则直接调用服务模块;如果服务提供者不可用则通过高可用性算法选择可用的服务提供者。
【专利说明】用于分布式系统的负载均衡及高可用性子系统及方法
【技术领域】
[0001]本发明涉及分布式系统领域,尤其涉及一种用于分布式系统的负载均衡及高可用性子系统及方法。
【背景技术】
[0002]在大多数分布式系统中,都会涉及到大量用户并发访问某一个资源的情况,此时如果该资源集中在一台服务器上,那么显然这台服务器将承受巨大的压力。这种情况下这台服务器的CPU、内存和I/O系统很快会达到性能上限,最终会成为系统的性能瓶颈。由于单台服务器无论如何提升其硬件配置始终存在性能上限,如果用户并发规模持续扩大,单台服务器显然无法满足不断扩大的并发规模。而只有采用服务器集群方式才能有效性根据并发规模动态调整集群规模,最终解决上述问题。
[0003]服务器集群是一个由多台服务器组成的分布式系统,如果大量用户并发访问集群上的某一个资源,显然这个资源是被分布在集群中的多台机器上的,那么就会出现两个问题。第一,如何将大量用户并发进行分流,即负载均衡。第二,分布式系统中可能出现集群中的部分服务器无法继续提供服务,而另一部分服务器能够接替其工作,即高可用性。
[0004]其中一种方法所采用的实现方式是在服务端加上一个中央控制系统,即所有用户并发请求均先分发到中央控制系统上,再由中央控制系统根据集群中各个服务器的动态权值和当前服务器的运行状况进行分流。
[0005]如果采用上述处理方式就会存在以下问题。首先,由于所有用户并发请求均先分发到中央控制系统上,那么中央控制系统可能出现性能瓶颈;其次,中央控制系统要处理大量并发计算动态权值,就需要用到动态权值的锁同步等并发同步策略,会降低系统的并发能力,如果遇到所选服务器宕机需要重新同步计算;最后,无论分流过程开销多么小,当大量并发存在的情况下都会导致用户请求的执行时间较长,影响用户体验。
[0006]其中另一种方法是在服务端根据集群中服务器的权值设置,根据权值在中央控制系统中生成一个轮流执行各个服务器的排程表或者根据权值生成一个随机执行各个服务器的排程表,这个排程表中包含了所有排程次序,通过排程表分流大量用户的并发请求。
[0007]如果采用上述处理方式就会存在以下问题。首先,排程表是在中央控制系统中,也就是说中央控制系统需要协调各个客户机请求的执行;其次,协调各个客户机请求需要消耗中央控制系统的资源,可能导致瓶颈的出现;最后,当有服务器宕机或加入新的服务器时,排程表需要考虑前一次的排程情况来重新生成排程表。
【发明内容】
[0008]本发明要解决的技术问题是:提供一种用于分布式系统的负载均衡及高可用性子系统及方法,实现分布式系统的负载均衡和高可用性。
[0009]本发明为解决上述技术问题所采取的技术方案为:
[0010]用于分布式系统的负载均衡及高可用性子系统,其特征在于:它包括至少2个服务提供者模块A30、注册中心模块AlO和至少一个客户端模块A20 ;其中
[0011]每个服务提供者模块A30包括服务注册模块A31、概率分布计算服务模块A32、服务模块A33和服务权值计算模块A34 ;服务权值计算模块A34用于服务提供者模块启动时计算服务提供者的服务能力,即服务权值;概率分布计算服务模块A32用于在服务提供者注册时,获取当前时刻其它提供相同服务的服务提供者的信息,并计算此类服务的服务提供者概率分布;服务注册模块A31用于当服务提供者提供服务时向注册中心模块AlO注册;服务模块A33用于提供服务;
[0012]注册中心模块AlO包括统一命名服务模块AU、消息通知服务模块A12和服务提供者列表模块A13 ;统一命名服务模块All用于在服务提供者注册时,根据服务名生成一个集群内唯一的服务路径供客户端A20查找;服务提供者列表模块A13用于存储每个服务所对应的服务提供者列表和服务提供者概率分布;消息通知服务模块A12用于在高可用性模块A23重新选择一个可用的服务提供者时,将对应的新服务提供者概率分布通知给所有客户端1?块A20和所有服务提供者|吴块A30 ;
[0013]客户端模块A20包括注册中心连接器A21、负载均衡模块A22、高可用性模块A23和调用服务模块A24 ;注册中心连接器A21用于连接注册中心模块A10,根据所需要的服务依据统一命名服务模块All生成的服务路径,从服务提供者列表模块A13中获得对应的服务提供者列表和服务提供者概率分布;负载均衡模块A22用于根据服务提供者概率分布进行负载均衡计算,随机选择一个服务提供者;调用服务模块A24用于在负载均衡模块A22选择的服务提供者可用时,调用对应服务提供者模块A30的服务模块A33 ;高可用性模块A23用于在负载均衡模块A22选择的服务提供者不可用时,重新选择一个可用的服务提供者,并重新计算此服务对应的新服务提供者概率分布。
[0014]利用上述用于分布式系统的负载均衡及高可用性子系统实现负载均衡及高可用性的方法,其特征在于:它包括以下步骤:
[0015]A、服务提供者模块首先计算自身的服务权值,并将自身能够提供的服务和服务权值注册到注册中心模块,在注册时获取当前时刻其它提供相同服务的服务提供者的信息,并计算此类服务的服务提供者概率分布;
[0016]B、注册中心模块将服务提供者模块注册的服务,以命名树的结构进行统一命名服务,并存储每个服务所对应的服务提供者列表和服务提供者概率分布;
[0017]C、客户端模块根据自己要获得的服务名称,连接注册中心模块查询并获取对应的服务提供者列表和服务提供者概率分布,并通过负载均衡算法根据概率分布随机选择一个服务提供者;
[0018]D、如果服务提供者可用则直接调用服务模块;如果服务提供者不可用则通过高可用性算法选择可用的服务提供者,同时更新服务所对应的服务提供者列表和服务提供者概率分布;
[0019]E、更新的服务提供者概率分布由注册中心模块通知给所有客户端模块和所有服务提供者模块。
[0020]按上述方法,所述的服务提供者模块计算自身服务权值的具体公式为:
[0021]
【权利要求】
1.用于分布式系统的负载均衡及高可用性子系统,其特征在于:它包括至少2个服务提供者模块A30、注册中心模块AlO和至少一个客户端模块A20 ;其中 每个服务提供者模块A30包括服务注册模块A31、概率分布计算服务模块A32、服务模块A33和服务权值计算模块A34 ;服务权值计算模块A34用于服务提供者模块启动时计算服务提供者的服务能力,即服务权值;概率分布计算服务模块A32用于在服务提供者注册时,获取当前时刻其它提供相同服务的服务提供者的信息,并计算此类服务的服务提供者概率分布;服务注册模块A31用于当服务提供者提供服务时向注册中心模块AlO注册;月艮务模块A33用于提供服务; 注册中心模块AlO包括统一命名服务模块All、消息通知服务模块A12和服务提供者列表模块A13 ;统一命名服务模块Al I用于在服务提供者注册时,根据服务名生成一个集群内唯一的服务路径供客户端A20查找;服务提供者列表模块A13用于存储每个服务所对应的服务提供者列表和服务提供者概率分布;消息通知服务模块A12用于在高可用性模块A23重新选择一个可用的服务提供者时,将对应的新服务提供者概率分布通知给所有在线的客户端1?块A20和所有在线的服务提供者|吴块A30 ; 客户端模块A20包括注册中心连接器A21、负载均衡模块A22、高可用性模块A23和调用服务模块A24 ;注册中心连接器A21用于连接注册中心模块A10,根据所需要的服务依据统一命名服务模块All生成的服务路径,从服务提供者列表模块A13中获得对应的服务提供者列表和服务提供者概率分布;负载均衡模块A22用于根据服务提供者概率分布进行负载均衡计算,随机选择一个服务提供者;调用服务模块A24用于在负载均衡模块A22选择的服务提供者可用时,调用对应服务提供者模块A30的服务模块A33 ;高可用性模块A23用于在负载均衡模块A22选择的服务提供者不可用时,重新选择一个可用的服务提供者,并重新计算此服务对应的新服务提供者概率分布。
2.利用权利要求1所述的用于分布`式系统的负载均衡及高可用性子系统实现负载均衡及高可用性的方法,其特征在于:它包括以下步骤: A、服务提供者模块首先计算自身的服务权值,并将自身能够提供的服务和服务权值注册到注册中心模块,在注册时获取当前时刻其它提供相同服务的服务提供者的信息,并计算此类服务的服务提供者概率分布; B、注册中心模块将服务提供者模块注册的服务,以命名树的结构进行统一命名服务,并存储每个服务所对应的服务提供者列表和服务提供者概率分布; C、客户端模块根据自己要获得的服务名称,连接注册中心模块查询并获取对应的服务提供者列表和服务提供者概率分布,并通过负载均衡算法根据概率分布随机选择一个服务提供者; D、如果服务提供者可用则直接调用服务模块;如果服务提供者不可用则通过高可用性算法选择可用的服务提供者,同时更新服务所对应的服务提供者列表和服务提供者概率分布; E、更新的服务提供者概率分布由注册中心模块通知给所有客户端模块和所有服务提供者模块。
3.根据权利要求2所述的负载均衡及高可用性的方法,其特征在于:所述的服务提供者模块计算自身服务权值的具体公式为:
4.根据权利要求3所述的负载均衡及高可用性的方法,其特征在于:选择CPU的主频、内存大小、硬盘大小和网络带宽作为权值因子的项。
5.根据权利要求2所述的负载均衡及高可用性的方法,其特征在于:服务提供者模块计算服务提供者概率分布时,从服务提供者列表模块中获得所能够提供此类服务所对应的当前的服务提供者列表,以此计算概率分布; 至少2个服务提供者模块分别计算概率分布时,采用排队同步的操作过程,即多个并行的服务提供者模块在获取当前的服务提供者列表过程中,由最先抢到当前的服务提供者列表的服务提供者模块进行计算,由注册中心模块阻塞其它服务提供者模块,直到所有服务提供者模块均完成概率分布计算。
6.根据权利要求5所述的负载均衡及高可用性的方法,其特征在于--第i个服务提供者模块计算某类服务对应的服务提供者概率分布时,按如下公式:
7.根据权利要求6所述的负载均衡及高可用性的方法,其特征在于:所述的步骤C具体为:负载均衡模块产生一个均匀发生的随机数X,X e [O, I],令x=Ri,从服务提供者列表丰吴块中获取Ri对应的服务提供者1吴块。
【文档编号】H04L12/803GK103457870SQ201310441317
【公开日】2013年12月18日 申请日期:2013年9月25日 优先权日:2013年9月25日
【发明者】钟珞, 曹东, 柴泽楚, 何双江, 贺茂强 申请人:武汉理工大学, 武汉日电光通信工业有限公司