本发明涉及服务架构技术领域,具体涉及一种基于多层服务架构的高可用方法及系统。
背景技术:
将对外提供的服务分层,每一层的服务可以彼此独立,也可以同时基于相同的基础服务上。其中的任何一层都能提供正常的服务,同一个时间点用户只能访问其中的某一层服务。不同的服务层有优先级之分(优先级可以由服务管理员自定义),默认情况下给用户提供的是最高优先级服务。同时可以根据需要手动或自动在不同层服务上进行切换。
但是现有技术具有以下缺点:
1、难以达到服务秒级切换;
2,难以做到多种不同的服务并存,并且灵活切换。
技术实现要素:
本发明解决了作为一个基础服务的:高可用性、可扩展性、多样性等复杂的技术问题。所谓高可用性(highavailability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
本发明采用的技术方案是:
一种基于多层服务架构的高可用方法,所述多层服务至少有1层,包括以下步骤:
用户通过公网地址请求服务;
用户连接上公网地址后,通过负载均衡器设定的负载均衡策略将用户请求分发到一台路由器上;
路由器验证用户身份后,连接所有能用的服务并获取服务数据,按照配置好的路由规则指定用户对服务进行访问。
进一步地,所述一种基于多层服务架构的高可用方法还包括以下步骤:
当用户访问的服务出现异常情况时,路由器根据设置的切换规则对用户访问的服务进行切换。
进一步地,所述路由器有n台,n至少为1,路由器根据路由规则选择对应的服务数据透传给用户。
进一步地,所述n台路由器程序相同。
进一步地,所述路由规则具体为以下任意一种及以上:
对各层服务设置优先级,路由器首先选择最高优先级的服务提供给用户进行访问;
禁止特定用户访问特定层服务;
指定用户访问特定层服务;
允许用户访问或者禁止用户访问特定层服务的指定区域。
进一步地,所述切换规则具体为以下任意一种及以上:
根据手动添加路由规则强制切换;
无数据自动切换,当最高优先级的服务出现异常情况时,自动切换到次优先级的服务上;
服务恢复切换,当最高优先级的服务由异常情况恢复正常后自动切换到最高优先级的服务。
一种基于多层服务架构的高可用系统,其特征在于,包括至少1层服务、n台路由器和负载均衡器,n至少为1,路由器前端与负载均衡器连接,后端与服务连接。
进一步地,用户通过公网地址向负载均衡器发送请求服务,公网地址与负载均衡器绑定,负载均衡器按照设定的负载均衡策略将用户请求分发到一台路由器上。
进一步地,所述路由器包括服务选择器和服务连接器,服务选择器与服务连接器连接,路由器通过服务连接器与服务连接。
进一步地,路由器验证用户身份后,对用户请求进行解析,服务选择器根据路由规则选择一层或者多层服务给用户提供服务数据,服务连接器连接所有可用的的服务,并透传一份服务数据给用户。
本发明的有益效果如下:
1、不同层的服务切换达到秒级,用户无感知;
2、在无法确认具体哪个版本最佳的情况下,可以把不同版本的服务部署成不同的服务层,通过实测对比来检验;
3、可以根据不同地区或时间段来提供不同的服务;
4、通过部署多层服务加上自动快速切换很好的解决了重点服务重点保障的问题,服务可用率可达99.999%以上。
附图说明
图1是本发明基于多层服务架构的高可用系统架构图。
图2是本发明基于多层服务架构的高可用方法流程图。
图3是实施例一部署单层服务示意图。
图4是实施例二部署两层服务示意图。
图5是实施例三禁止访问服务层示意图。
具体实施方式
本发明提供了一种基于多层服务架构的高可用方法及系统,实现以下功能:1)实现服务高可用;2)让多版服务本共存,可以进行在线对比,给用户提供最佳的服务;3)实现重点业务的重点保障,重点区域的业务可以提供多层服务,加上自动切换功能,可以极大的提高可用性。下文中,结合附图和实施例对本发明作进一步阐述。
图1为本发明基于多层服务架构的高可用系统架构图,所述系统至少有1层服务,以3层服务为例进行说明,服务1、服务2和服务3可以是三种不同的实现方式但提供相同或类似内容的服务。3个服务的优先级可以自定义,这里优先级定义为:服务3>服务2>服务1。n台路由器(router)通过负载均衡来对外提供服务,n至少为1,其中路由器最核心的是提供智能路由功能,可以配置不同的路由规则让路由器给用户提供不同的服务。路由器包括服务选择器和服务连接器,服务选择器与服务连接器连接,路由器前端与负载均衡器连接,后端通过服务连接器与服务连接。
图2是本发明基于多层服务架构的高可用方法流程图,包括以下步骤:
步骤a,用户通过统一对外的公网地址来请求服务;
步骤b,用户连接公网地址后,通过设定的负载均衡策略将其分发到某一台路由器上;
步骤c,路由器验证用户身份后,对用户请求进行解析,服务选择器会根据用户的请求信息和配置好的路由规则来选择其中一层或多层服务给用户提供服务数据,如果有多层则按照优先级来提供服务。
步骤d,路由器通过服务连接器连接后端所有筛选出来的服务,并且选择最高优先级的服务提供给用户,当最高优先级的服务出现异常情况时,会根据设置的切换规则自动切换到次优先级的服务层上,以实现秒级切换,切换过程用户无感知。
路由规则如下:
给不同的服务层设置各自默认的优先级;
对某些用户禁用某层服务;
将用户指定到某层服务上;
允许用户访问或禁止访问某层服务的指定区域。
切换规则如下:
根据手动添加路由规则强制切换;
无数据自动切换(比如5s无数据则切换到次优先级层服务上);
服务恢复切换(比如最高优先级服务由异常恢复正常后自动切换到最高优先级服务)。
实施例一,部署单层服务:
如图3所示,部署n台路由器(每台路由器程序完全一样,本发明通过java语言来实现路由器软件)以预防路由器单点问题同时也是横向扩展路由器的并发性能,路由器的前端是一个负载均衡器,对外的公网地址与负载均衡器绑定。路由器后端是提供数据的服务1。这里部署了一层服务,就像普通的服务一样。路由器的功能主要有:验证用户、请求解析、智能路由(由路由功能和服务选择共同完成)、数据透传等。
实施例二,部署两层服务:
为了提高服务的高可用性或者给用户提供更加的服务体验,可以添加一层服务,如图4所示。
服务2可以是服务1的变种或者是另一种实现方式,服务2和服务1两种服务可以设置不同的优先级(比如优先级:服务2>服务1),如果不设置其他路由规则,则用户首先访问到的是服务2,当服务2出现异常时,则可以切换到服务1,这样可以极大的提高总体服务的可用性。另外,服务2、服务1两种服务的服务范围可以不一致,这样用户能访问的总体范围是服务2并上服务1。当用户请求服务时,路由器会替用户去获取后端所有能用的服务的数据,路由器会同时连接服务2、服务1,以确保能自动实现秒级切换功能,然后选择其中的一份透传(对数据不做任何处理,直接传递)给用户。
实施例三,禁止用户访问服务
当有多层服务时,可以通过路由规则来指定用户访问哪一层服务,或者禁止访问某几层服务。例如,禁止用户访问服务2,如图5所示,这样路由器只会连接服务1,然后将服务1的数据透传给用户,当服务1出现异常情况时,用户将无法正常获取服务。
实施例四,部署多层服务
可以在实施例二的基础上继续添加多层服务。当部署了多层服务后,整体服务可用性得到了极大的提升。多层服务的方案尤其适合重点保障的业务或者重点服务区域。
本方案对计算机语言、软件和硬件无特别要求,优选通过java语言实现。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。