本文作者:kaifamei

一种跨机房单点服务调用方法与流程

更新时间:2025-12-21 23:39:51 0条评论

一种跨机房单点服务调用方法与流程



1.本发明属于微服务治理领域,具体涉及到一种跨机房单点服务调用方法。


背景技术:

2.全球性的b2b在线交易网站的由于卖家在中国,而买家分布全球各个国家,因此,为了提升网站用户的访问速度,网站运营方会在全球多个城市建设机房,以便于海外买家能就近地请求服务。然而并非所有数据都能就近请求,比如价格、库存等强一致数据,需要集中到单一机房内进行处理,以避免数据错误给网站和用户造成不便,甚至利益受损。这些需要集中在单个机房内执行强一致数据的处理程序,被定义为单点服务。如果多个机房同时处理强一致数据,将会出现数据处理重复及多机房内数据不一致等严重问题;
3.为了能将有强一致要求的数据集中到一个机房执行读写,通常采用域名的方式访问单点服务,通过dns服务器解析域名获取单点服务所在机房的地址,将访问请求转发至指定机房;如若遇到因指定机房故障而要切换到其他机房时,dns服务器需同步变更域名对应的机房地址,由于机房跨国存在dns变更的生效时效延迟,将导致部分服务器的地址更新不及时,进一步导致请求单点服务时,将出现多个机房内单点服务提供服务,造成数据出错或数据不一致。
4.其次,诸多b2b电子商务在线交易网站的内部服务调用协议是基于tcp的rpc协议,而非http协议,因此应用只能通过配置单点服务地址,应用才能调用单点服务;若单点服务地址临时变更,应用配置相应地需要改变,应用对单点服务调用结构的过度依赖,增加单点服务管理及配置的复杂度。
5.专利“单点服务处理装置和单点服务处理方法”(申请号:201110177646.3)提出在服务器集中,根据预设启动规则选择服务器,并在服务器内启动单点服务,虽然利用禁止其他服务器启动单点服务,能保证在集服务器中单点服务启动的唯一性,然而本专利仅是解决单点服务启动问题,并未明确启动的单点服务一定有效;其次单点服务异常时的新服务启动后,针对如何保证异常时多个单点服务的数据一致性,也未给出更清晰的解决方案。
6.因此,急需解耦应用和单点服务调用结构的技术方法,并能彻底消除数据不一致的现象。


技术实现要素:

7.为了解决上面的问题,本发明提供一种跨机房单点服务调用的方法。本发明利用代理机制,通过代理程序承接应用的请求和单点服务的定位及调用,通过管理程序控制代理程序对单点服务的调用,保证单点服务地址在所有机房的一致性;本发明中的应用程序只与代理程序通信,单点服务的修改并不会影响应用代码的调整及配置,只需由管理程序调用所有机房的代理程序切换到新的单点服务即可,一方面降低了多机房环境中单点服务修改的复杂性,另一方面保证所有机房内单点服务调用的一致性,避免出现多个单点服务
同时服务的情况。
8.本发明的技术方案是提供一种跨机房单点服务调用方法,其特征在于,具体步骤包含:
9.步骤1:配置服务程序,所述服务程序包含代理程序和管理程序;所述代理程序部署在应用程序和单点服务之间,用于将应用程序的服务请求路由至单点服务;所述管理程序通过控制指令管理代理程序地址和单点服务地址;所述代理程序地址用于定位代理程序;所述单点服务地址定位单点服务,所述代理程序地址和所述单点服务地址均由相应的部署机房和部署地址组成;所述部署机房由机房名表示;所述部署地址由url地址表示;步骤2:应用程序通过代理程序请求调用单点服务;包含:将应用程序配置文件中的单点服务地址配置为代理程序地址;应用程序根据配置文件中的地址,向代理程序发送单点服务调用请求;所述代理程序解析调用请求中的服务名;并根据服务名分析获取部署所述单点服务地址;代理程序按照单点服务地址定位单点服务,并将调用请求路由至所述单点服务;
10.步骤3:单点服务通过代理程序返回请求结果至应用程序;待单点服务处理完请求后,按照步骤2的请求路径返回结果,具体是:请求结果由单点服务返回给代理程序,由代理程序反馈至应用程序;
11.步骤4:管理程序控制并监控多机房内单点服务地址更新切换;管理程序根据获取的新的单点服务地址写入控制指令,通过各机房的代理程序的部署地址调用相应的代理程序并发送控制指令,控制代理程序接收新的单点服务地址保存替换,同时管理程序根据各机房代理程序反馈的地址保存结果和地址替换结果,判断各机房的代理程序内单点服务地址是否一致;若任一机房代理程序反馈的结果是不成功,则各机房的代理程序内单点服务地址不一致,管理程序控制各机房的代理程序将单点服务地址修改为旧地址。
12.在所述步骤1中,所述配置服务程序包含:为代理程序创建2个对外服务的接口,其中,第一接口接收应用程序的单点服务调用请求,第二接口接收管理程序的控制指令;所述管理程序以可视化界面,接收用户请求并生成控制指令。
13.在所述步骤1中,所述配置代理程序具体包含:在多机房环境中,任选一个机房部署管理程序;为每个机房部署代理程序;单点服务地址以键值对形式存储在代理程序的数据库中,存储格式是:[服务名:机房名+url地址]。
[0014]
所述步骤2的请求调用单点服务的具体步骤包含:
[0015]
代理程序的第一接口接收到单点服务调用请求时,代理程序从请求参数中提取单点服务的服务名;根据服务名,从数据库中筛选对应的单点服务地址;若其中的机房名与代理程序的机房名一致,代理程序利用url地址定位当前机房内的单点服务,并将请求路由至所述单点服务;若其中的机房名与代理程序的的机房名不一致,则代理程序和所述调用的单点服务不同在一个机房,以部署所述单点服务的机房为目标机房,根据机房名获取目标机房的代理程序地址,当前机房的代理程序将调用请求连同当前机房的代理程序地址、url地址先转发至目标机房的代理程序,由目标机房的代理程序根据url地址定位目标机房内的单点服务,并将调用请求路由至所述单点服务。
[0016]
在所述步骤3中,按照步骤2的请求路径返回结果的具体流程包含:
[0017]
步骤3-1:单点服务将请求结果返回给同机房的代理程序;
[0018]
步骤3-2:所述代理程序判断调用请求的发送方;若步骤2的调用请求中包含机房
的代理程序地址,则发送方是代理程序,执行步骤3-3;若步骤2的调用请求中未包含机房的代理程序地址,则发送方是应用程序,所述代理程序将请请求结果返回给应用程序;
[0019]
步骤3-3:按照机房的代理程序地址,将请求结果返回给其他机房的代理程序,再由所述代理程序返回给同机房的应用程序。
[0020]
在所述步骤4中,所述控制指令包含地址存储指令和地址切换指令;
[0021]
所述步骤4具体包含:
[0022]
步骤4-1:管理程序在保存新的单点服务地址时,不删除旧的单点服务旧地址;
[0023]
步骤4-2:管理程序按照各机房的代理程序地址调用代理程序的第二对外服务接口,发送包含新的单点服务地址的地址存储指令;所述代理程序接收指令后,保存所述新的单点服务地址,反馈接收成功的信息给管理程序,执行步骤4-3;若任一机房代理程序未反馈接收成功的信息,管理程序向用户反馈本次地址存储失败;
[0024]
步骤4-3:管理程序向各机房的代理程序发送地址切换指令,所述代理程序接收指令后,代理程序根据服务名,将对应的单点服务地址修改为新地址,并反馈切换成功的信息给管理程序;若任一机房代理程序未反馈切换成功的信息,执行步骤4-4;
[0025]
步骤4-4:管理程序调用反馈成功的代理程序的第二对外服务接口,发送地址回退指令,所述回退指令中包含旧的单点服务地址,所述代理程序接收到指令后,代理程序将更新的单点服务地址回滚为旧的单点服务地址。
[0026]
本发明所达到的有益效果:
[0027]
1)本发明通过在应用和单点服务的中间配置代理程序,由代理程序承接应用的服务请求,并通过在代理程序内配置单点服务地址,保证服务请求向任一机房内单点服务的发送,不仅消除了应用程序对单点服务的单纯依赖关系,使应用和单点服务调用结构解耦,也减少多机房环境内定位单点服务的困难和复杂性。
[0028]
2)本发明通过配置管理程序统一管理各个机房的代理程序,由管理程序统一执行单点服务地址在代理程序中的切换和更新,保证单点服务地址更新动作能同时在多机房环境中同步,并确保单点服务地址更新结果在多机房环境中的一致性,减少因时效性问题引发不一致,由此导致多机房环境中多个单点服务有效,进而导致强一致数据处理出错。
附图说明
[0029]
图1为本发明实施例中一种跨机房单点服务调用方法的流程示意图
[0030]
图2为本发明实施例中基于代理程序的请求调用的流程图;
[0031]
图3为为本发明实施例中基于代理程序的请求结果返回流程示意图;
[0032]
图4为本发明实施例中管理程序控制单点服务地址切换的流程图;
[0033]
图5为本发明实施例中一种跨机房单点服务调用系统的结构示意图。
具体实施方式
[0034]
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0035]
图1为本发明实施例中一种跨机房单点服务调用方法的流程示意图
[0036]
步骤101:配置服务程序,所述服务程序包含代理程序和管理程序;
[0037]
所述代理程序部署在应用程序和单点服务之间,用于将应用程序的服务请求路由至单点服务;为代理程序创建2个对外服务的接口,其中,第一接口接收应用程序的单点服务调用请求,第二接口接收管理程序的控制指令;通过在应用和单点服务的中间配置代理程序,将所有服务请求交由代理程序承接;
[0038]
所述管理程序通过控制指令管理代理程序地址和单点服务地址;所述代理程序地址用于定位代理程序;所述单点服务定制定位单点服务,所述代理程序地址和所述单点服务地址均由相应的部署机房和部署地址组成;所述部署机房由机房名表示;所述部署地址由url地址表示;所述管理程序以可视化界面,接收用户请求并生成控制指令。在多机房环境中,任选一个机房部署管理程序;为每个机房部署代理程序;单点服务地址以键值对形式存储在代理程序的数据库中,存储格式是:[服务名:机房名+url地址]
[0039]
步骤102:应用程序通过代理程序请求调用单点服务;如图2所示为本发明实施例中基于代理程序的请求调用的流程图;具体包含:
[0040]
步骤102-1:将应用程序配置文件中的单点服务地址配置为代理程序地址;应用程序根据配置文件中的地址,向代理程序发送单点服务调用请求;
[0041]
步骤102-2:获取单点服务的服务名;代理程序的第一接口接收到单点服务调用请求时,代理程序从请求参数中提取单点服务的服务名;
[0042]
步骤102-3:代理程序判断处理请求的单点服务是否配置在本地机房;所述代理程序根据服务名从数据库中筛选对应的单点服务地址;判断单点服务的机房名与代理程序的部署机房是否一致,若一致,执行步骤102-4;若不一致,则代理程序和所述调用的单点服务不同在一个机房执行步骤102-5;
[0043]
步骤102-4:代理程序路由请求至本地机房的单点服务;代理程序利用url地址定位当前机房内的单点服务,并将请求路由至所述单点服务;
[0044]
步骤102-5:通过不同机房的代理程序之间的请求传递,将请求路由至单点服务;以部署所述单点服务的机房为目标机房,根据机房名获取目标机房的代理程序地址,当前机房的代理程序将调用请求、当前机房的代理程序地址、url地址先转发至目标机房的代理程序,由目标机房的代理程序根据url地址定位目标机房内的单点服务,并将调用请求路由至所述单点服务。
[0045]
通过在应用和单点服务的中间配置代理程序,由代理程序承接应用的服务请求,并通过在代理程序内配置单点服务地址,保证服务请求向任一机房内单点服务的发送,不仅消除了应用程序对单点服务的单纯依赖关系,使应用和单点服务调用结构解耦,也减少多机房环境内定位单点服务的困难和复杂性。
[0046]
步骤103:单点服务通过代理程序返回请求结果至应用程序;将请求结果由单点服务返回给代理程序,由代理程序反馈至应用程序;如图3所为为本发明实施例中基于代理程序的请求结果返回流程示意图,具体步骤包含:
[0047]
步骤103-1:单点服务将请求结果返回给同机房的代理程序;
[0048]
步骤103-2:所述代理程序判断调用请求的发送方;若步骤2的调用请求中包含机房的代理程序地址,则发送方是代理程序,执行步骤3-3;若步骤2的调用请求中未包含机房的代理程序地址,则发送方是应用程序,所述代理程序将请请求结果返回给应用程序;
[0049]
步骤103-3:按照机房的代理程序地址,将请求结果返回给其他机房的代理程序,
再由所述代理程序返回给同机房的应用程序。
[0050]
步骤104:管理程序控制并监控多机房内单点服务地址更新切换;
[0051]
管理程序控制并监控多机房内单点服务地址更新切换;管理程序根据获取的新的单点服务地址写入控制指令,通过各机房的代理程序的部署地址调用相应的代理程序并发送控制指令,控制代理程序接收新的单点服务地址保存替换,同时管理程序根据各机房代理程序反馈的地址保存结果和地址替换结果,判断各机房的代理程序内单点服务地址是否一致;若任一机房代理程序反馈的结果是不成功,则各机房的代理程序内单点服务地址不一致,管理程序控制各机房的代理程序将单点服务地址修改为旧地址;
[0052]
通过配置管理程序统一管理各个机房的代理程序,由管理程序统一执行单点服务地址在代理程序中的切换和更新,保证单点服务地址更新动作能同时在多机房环境中同步,并确保单点服务地址更新结果在多机房环境中的一致性,减少因时效性问题引发不一致,由此导致多机房环境中多个单点服务有效,进而导致强一致数据处理出错。
[0053]
如图4为本发明实施例中管理程序控制单点服务地址切换的流程图,具体包含:
[0054]
步骤104-1:管理程序在保存单点服务的新地址时,不删除单点服务的旧地址;
[0055]
步骤104-2:管理程序向各机房的代理程序发送新地址;管理程序按照各机房的代理程序地址调用代理程序的第二对外服务接口,发送包含单点服务新地址的地址存储指令;所述代理程序接收指令后,保存所述单点服务新地址后,反馈接收成功的信息给管理程序,执行步骤104-3;若任一机房代理程序未反馈接收成功的信息,管理程序向用户反馈本次地址存储失败;
[0056]
步骤104-3:管理程序控制各机房代理程序更新单点服务的新地址;管理程序向各机房的代理程序发送地址切换指令,所述代理程序接收指令后,代理程序根据服务名,将对应的单点服务地址修改为新地址,并反馈切换成功的信息给管理程序;若任一机房代理程序未反馈切换成功的信息,执行步骤104-4;
[0057]
步骤104-4:各机房代理程序内的单点服务地址回退为旧地址;管理程序调用反馈成功的代理程序的第二对外服务接口,发送地址回退指令,所述回退指令中包含单点服务的旧地址,所述代理程序接收到指令后,代理程序将更新的单点服务地址修改为单点服务的旧地址。
[0058]
图5为本发明实施例中一种跨机房单点服务调用系统的结构示意图,具体包含代理程序、管理程序、应用程序和单点服务;在多机房环境中,选择任一机房部署管理程序;各个机房内部署代理程序、应用程序和单点服务;不同机房部署相同的单点服务,用户通过应用程序就近请求访问单点服务;在本发明实施例中,机房1、机房2和机房3均部署了应用程序、代理程序和单点服务,所述管理程序部署在机房1中;在所述管理程序中配置处理请求的单点服务的地址,并由管理程序通知各个机房的代理程序。
[0059]
所述应用程序就近访问同机房的代理程序,发送单点服务调用请求;所述代理程序接收所述应用程序的单点服务调用请求,由所述代理程序定位处理请求的单点服务的机房,若单点服务和应用程序在同一个机房内,所述代理程序直接将调用请求发送至同机房内的单点服务;若单点服务和应用程序不在同一个机房内,以单点服务所在的机房为目标机房,当前机房的代理程序先将调用请求发送至目标机房的代理程序,再由目标机房的代理将调用请求发送至单点服务;
[0060]
经所述代理程序,所述单点服务将请求处理的结果传送至应用程序;若单点服务和应用程序在同一个机房内,所述单点服务将结果发送至同机房的代理程序,由所述代理程序传送至应用程序;
[0061]
若单点服务和应用程序不在同一个机房内,经2个机房的代理程序的依次传递,将请求结果传送至应用程序;具体是:所述单点服务将结果发送同机房的代理程序,由所述代理程序发送至应用程序所在机房的代理程序,再由应用程序所在机房的代理程序发送结果至应用程序。
[0062]
所述管理程序以可视化界面对外,获取用户输入的单点服务切换请求,将新的单点服务地址包装为控制指令,发送至各个机房的代理程序保存和更新,保证多机房内单点服务地址的同步更新和一致性。
[0063]
本发明所达到的有益效果:
[0064]
1)本发明通过在应用和单点服务的中间配置代理程序,由代理程序承接应用的服务请求,并通过在代理程序内配置单点服务地址,保证服务请求向任一机房内单点服务的发送,不仅消除了应用程序对单点服务的单纯依赖关系,使应用和单点服务调用结构解耦,也减少多机房环境内定位单点服务的困难和复杂性。
[0065]
2)本发明通过配置管理程序统一管理各个机房的代理程序,由管理程序统一执行单点服务地址在代理程序中的切换和更新,保证单点服务地址更新动作能同时在多机房环境中同步,并确保单点服务地址更新结果在多机房环境中的一致性,减少因时效性问题引发不一致,由此导致多机房环境中多个单点服务有效,进而导致强一致数据处理出错。
[0066]
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。


文章投稿或转载声明

本文链接:http://www.wtabcd.cn/zhuanli/patent-13-872-0.html

来源:专利查询检索下载-实用文体写作网版权所有,转载请保留出处。本站文章发布于 2022-11-27 21:15:08

发表评论

验证码:
用户名: 密码: 匿名发表
评论列表 (有 条评论
2人围观
参与讨论