CN101969399A - 客户端调用服务的路由方法及系统 - Google Patents
客户端调用服务的路由方法及系统 Download PDFInfo
- Publication number
- CN101969399A CN101969399A CN2010105039067A CN201010503906A CN101969399A CN 101969399 A CN101969399 A CN 101969399A CN 2010105039067 A CN2010105039067 A CN 2010105039067A CN 201010503906 A CN201010503906 A CN 201010503906A CN 101969399 A CN101969399 A CN 101969399A
- Authority
- CN
- China
- Prior art keywords
- service
- client
- call
- module
- profile
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种客户端调用服务的路由方法,包括:客户端读取本地配置文件并将所述配置文件写入到本地缓存;客户端获取配置文件中指定的要调用的服务及该服务所属的分组;客户端计算分组内的服务列表及其中各服务的权重,结合调用次数算出本次调用应该发送的服务地址;客户端依据算出来的服务地址进行服务调用。还公开了一种客户端调用服务的路由系统,包括:配置文件读取模块、服务获取模块、服务地址计算模块、服务调用模块、配置文件更新模块和缓存依赖添加模块。本发明实现了多个客户端对部署在不同的服务节点的相同程序的调用,效地利用了服务器资源。
Description
技术领域
本发明涉及消息路由及服务调用技术领域,特别涉及一种客户端调用服务的路由方法及系统。
背景技术
以消息队列为核心的服务端处理和客户端调用模式中,可能会遇到不同业务类型的消息混杂在一起使用一个共同的服务队列的情况,但是不同业务类型的消息处理的速度又不尽相同,处理较慢的消息就会堵塞处理较快的消息,这样会使消息处理相互影响。因此,需要一种机制去分开这样的消息处理,让不同类型的消息使用不同的队列进行接收。
现有方案:部署多个服务队列,让客户端自行根据不同的需要写入相应队列。这种方案通过部署更多的服务对消息队列进行归类处理,减少了不同类型消息间的性能影响,提高队列的可用性。
缺陷:客户端各自管理自己对队列的写入,这样容易导致误操作,当客户端很多时,每当服务地址修改,都会使得大量客户端代码或配置的改动,不利于多个客户端对部署在不同的服务节点的相同程序的调用。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何实现多个客户端对部署在不同的服务节点的相同程序的调用,以更有效地利用服务器资源。
(二)技术方案
为解决上述技术问题,本发明提供了一种客户端调用服务的路由方法,包括以下步骤:
S1:客户端读取本地配置文件并将所述配置文件写入到本地缓存;
S2:客户端获取本地配置文件中指定的要调用的服务及该服务所属的分组;
S3:客户端计算分组内的服务列表及其中各服务的权重,结合调用次数算出本次调用应该发送的服务地址;
S4:客户端依据算出来的服务地址进行服务调用。
其中,所述步骤S1和步骤S2之间还包括检查本地配置文件是否更新的步骤,具体包括:
S1.1:从本地配置文件中读取远程配置文件更新地址URL及预设的本地配置文件的更新周期;
S1.2:计算本次调用与上次调用的时间差是否大于所述更新周期,若大于,则执行步骤S1.3,否则,停止更新;
S1.3:启动异步线程下载所述更新地址URL中指定的远程配置文件;
S1.4:比较远程配置文件的版本号与本地配置版本号是否一致,如果不一致,则更新本地配置文件。
其中,所述步骤S1和S1.1之间还包括步骤:对缓存中的本地配置文件添加缓存依赖。
其中,所述步骤S2获取服务及该服务所属的分组的具体方式为:先从配置文件中获取服务调用的配置标识,再从该标识中获取消息来源参数和该服务所属的分组,所述消息来源参数包括:客户端标识、服务标识和服务的版本ID。
其中,所述步骤S3中计算服务地址的方式为:调用服务的分组的次数与服务列表总数取模。
一种客户端调用服务的路由系统,包括:
配置文件读取模块,用于客户端读取本地配置文件并将所述配置文件写入到本地缓存;
服务获取模块,用于客户端获取本地配置文件中指定的要调用的服务及该服务所属的分组;
服务地址计算模块,用于客户端计算分组内的服务列表及其中各服务的权重,结合调用次数算出本次调用应该发送的服务地址;
服务调用模块,用于客户端依据算出来的服务地址进行服务调用。
其中,还包括:本地配置文件更新模块,具体包括:
更新参数获取模块,用于从本地配置文件中读取远程配置文件更新地址URL及预设的本地配置文件的更新周期;
时间差计算模块,用于计算本次调用与上次调用的时间差是否大于所述更新周期,若大于,则执行更新文件下载模块,否则,停止更新;
更新文件下载模块,用于启动异步线程下载所述更新地址URL中指定的远程配置文件;
更新模块,用于比较远程配置文件的版本号与本地配置版本号是否一致,如果不一致,则更新本地配置文件。
其中,还包括缓存依赖添加模块,用于对缓存中的本地配置文件添加缓存依赖。
(三)有益效果
本发明通过客户端从配置文件中读取要调用的服务及服务分组,并计算要调用的服务地址,根据该地址调用服务,实现了多个客户端对部署在不同的服务节点的相同程序的调用,提高服务端的可用性和处理性能,更有效地利用了服务器资源;并及时更新配置文件,保证客户端正确地调用服务。
附图说明
图1是本发明实施例的一种客户端调用服务的路由方法流程图;
图2是本发明实施例的一种客户端调用服务的路由方法中更新配置文件流程图;
图3是应用本发明的客户端调用服务的路由方法的异步调用框架示意图;
图4是本发明实施例的一种客户端调用服务的路由系统结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明通过一个分组调用配置文件,并且配置处理能够在某个时刻请求一个远程配置文件,下载新版本的配置文件以替换本地配置文件,统一管理客户端对不同队列服务的调用,从而可以集中管理消息的流向。
如图1所示,为本发明实施例的一种客户端调用服务的路由方法流程图,包括:
步骤S101,客户端读取本地配置文件并将所述配置文件写入到本地缓存。
步骤S102,客户端获取配置文件中指定的要调用的服务及该服务所属的分组。其中,获取服务及该服务所属的分组的具体方式为:先从配置文件中获取服务调用的配置标识,再从该标识中获取消息来源参数和该服务所属的分组,所述消息来源参数包括:客户端标识、服务标识和服务的版本ID。如下表所示:
表1配置文件中描述服务的参数
服务调用的配置标识为:source name=″ClientTest-Default-1.0″usingGroup=″online1_msmq″。其中source name表示消息来源参数,ClientTest为客户端标识,Default为服务标识,1.0为服务的版本ID,usingGroup=″online1_msmq″表示该服务Default所属的分组为:online1_msmq。由该部分配置文件可看出,通过修改Source Name与分组间的对应关系,可以在不修改分组的情况下,随意修改或添加新的Source Name,也可以修改using Group参数来使客户端调用不同的服务分组。
步骤S103,客户端计算分组内的服务列表及其中各服务的权重,结合调用次数算出本次调用应该发送的服务地址。如下表所示,为配置文件中服务分组的参数。
表2配置文件中描述服务的参数
参数group name表示服务分组的名称。此名称会被Source所引用;参数address表示服务调用的服务地址;参数address priority表示该服务在服务地址列表中的权重,权重越大的地址被添加到新的计算列表中的次数越多,这样就越有可能被使用,上表中示出了online1_msmq分组中的4个服务地址,其权重都是1。
该步骤中采用调用的服务次数与服务列表总数取模来计算服务地址。具体步骤为:
统计调用服务的分组的次数,即某个分组中的某个服务被调用一次,则该分组的次数被累加一次,每次调用时统计当前被累加调用的次数N。
在内存中生成一个中间过程列表,生成方式为将分组中的每个地址按权重依次放入中间过程列表,权重的数值就是放入中间过程列表的次数,所有的地址放完后,中间过程列表中的地址数为M。
调用的次数N与中间过程列表地址总数M取模,得到中间过程列表的索引值,即index=N%M,中间过程列表中对应index的那一项则为本次调用的服务地址(中间过程列表的行数从0计数,即0~M-1行)。由上可看出,权重越大的服务地址,被选中的概率就越大。
步骤S104,客户端依据算出来的服务地址进行服务调用。
由于服务器地址等参数可能会改变,因此,在步骤S 101和S102之间还包括检查配置文件是否更新的步骤,如图2所示,具体包括:
步骤S201,从配置文件中读取远程配置文件更新地址URL及预设的该配置文件的更新周期。如下表所示:
表3配置文件中的更新参数
配置文件中更新参数包括:参数frequency更新周期(秒),表示每隔多长时间进行一次更新捡查;参数usingUrl使用url列中的哪一个远程地址下载最新的配置文件;参数timeout表示下载配置文件的超时时间;参数url表示远程配置文件的下载地址。
步骤S202:计算本次调用与上次调用的时间差是否大于所述更新周期,若大于,则执行步骤S204,否则,执行步骤S203,
步骤S203,停止更新。
步骤S204,启动异步线程下载所述更新地址URL中指定的远程配置文件,具体地,启动异步线程从usingUrl参数中指定的URL地址下载远程配置文件。若下载文件超时,即超过timeout设定的时间,则停止本次更新,下一次更新时会再次触发不成功的更新。
步骤S205,远程配置文件下载完成后,比较远程配置文件的版本号与本地配置版本号是否一致,如果一致,表明版本没有更新,则执行步骤S206,否则执行步骤S207。配置文件中包含版本号及该版本更新日期。
步骤S206,不更新本地配置文件。
步骤S207,更新本地配置文件。
为了使更新本地配置文件后,缓存中的配置文件自动失效,并关联更新的配置文件,客户端读取本地配置文件并把配置文件写入本地缓存后,添加对该配置文件的缓存依赖。
图3为一个通过消息队列提供异步调用的框架,其中客户端调用则应用了本文所述的路由方法。在这个框架中多个客户端需要调用多个程序相同、部署不同的队列服务,客户端的对服务的调用都通过分组配置文件进行管理,控制消息的路由走向,即图3中左边部分,客户端1、客户端2和分组及其之间的交互关系,客户端1和客户端2分别通过各自的消息来源参数source和消息标识identity来调用服务,具体通过source中的serviceName在分组中获取要调用服务的地址address。通过更新远程配置文件,会自动下载到各客户端的本地配置中,从而当服务端出现性能问题时能及时分流,提高服务的可靠性和利用率,并且也可以有效的分配消息到相应的服务器中进行处理,防止不同消息间因处理性能问题产品相互的影响。
本发明还提供了一种客户端调用服务的路由系统,如图4所示,包括:配置文件读取模块,用于客户端读取本地配置文件并将所述配置文件写入到本地缓存;服务获取模块,用于客户端获取配置文件中指定的要调用的服务及该服务所属的分组;服务地址计算模块,用于客户端计算分组内的服务列表及其中各服务的权重,结合调用次数算出本次调用应该发送的服务地址;服务调用模块,用于客户端依据算出来的服务地址进行服务调用。
为使配置文件得到更新,本系统还包括:配置文件更新模块,具体包括:更新参数获取模块,用于从配置文件中读取远程配置文件更新地址URL及预设的该配置文件的更新周期;时间差计算模块,用于计算本次调用与上次调用的时间差是否大于所述更新周期,若大于,则执行更新文件下载模块,否则,停止更新;更新文件下载模块,用于启动异步线程下载所述更新地址URL中指定的远程配置文件;
更新模块,用于比较远程配置文件的版本号与本地配置版本号是否一致,如果是更新的版本号则更新本地配置文件。
为使更新后能及时关联更新的配置文件,本系统还包括缓存依赖添加模块,用于对缓存中配置文件添加缓存依赖。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (8)
1.一种客户端调用服务的路由方法,其特征在于,包括以下步骤:
S1:客户端读取本地配置文件并将所述配置文件写入到本地缓存;
S2:客户端获取本地配置文件中指定的要调用的服务及该服务所属的分组;
S3:客户端计算分组内的服务列表及其中各服务的权重,结合调用次数算出本次调用应该发送的服务地址;
S4:客户端依据算出来的服务地址进行服务调用。
2.如权利要求1所述的客户端调用服务的路由方法,其特征在于,所述步骤S1和步骤S2之间还包括检查本地配置文件是否更新的步骤,具体包括:
S1.1:从本地配置文件中读取远程配置文件更新地址URL及预设的本地配置文件的更新周期;
S1.2:计算本次调用与上次调用的时间差是否大于所述更新周期,若大于,则执行步骤S1.3,否则,停止更新;
S1.3:启动异步线程下载所述更新地址URL中指定的远程配置文件;
S1.4:比较远程配置文件的版本号与本地配置版本号是否一致,如果不一致,则更新本地配置文件。
3.如权利要求2所述的客户端调用服务的路由方法,其特征在于,所述步骤S1和S1.1之间还包括步骤:对缓存中的本地配置文件添加缓存依赖。
4.如权利要求1所述的客户端调用服务的路由方法,其特征在于,所述步骤S2获取服务及该服务所属的分组的具体方式为:先从配置文件中获取服务调用的配置标识,再从该标识中获取消息来源参数和该服务所属的分组,所述消息来源参数包括:客户端标识、服务标识和服务的版本ID。
5.如权利要求1所述的客户端调用服务的路由方法,其特征在于,所述步骤S3中计算服务地址的方式为:调用服务的分组的次数与服务列表总数取模。
6.一种客户端调用服务的路由系统,其特征在于,包括:
配置文件读取模块,用于客户端读取本地配置文件并将所述配置文件写入到本地缓存;
服务获取模块,用于客户端获取本地配置文件中指定的要调用的服务及该服务所属的分组;
服务地址计算模块,用于客户端计算分组内的服务列表及其中各服务的权重,结合调用次数算出本次调用应该发送的服务地址;
服务调用模块,用于客户端依据算出来的服务地址进行服务调用。
7.如权利要求6所述的客户端调用服务的路由系统,其特征在于,还包括:本地配置文件更新模块,具体包括:
更新参数获取模块,用于从本地配置文件中读取远程配置文件更新地址URL及预设的本地配置文件的更新周期;
时间差计算模块,用于计算本次调用与上次调用的时间差是否大于所述更新周期,若大于,则执行更新文件下载模块,否则,停止更新;
更新文件下载模块,用于启动异步线程下载所述更新地址URL中指定的远程配置文件;
更新模块,用于比较远程配置文件的版本号与本地配置版本号是否一致,如果不一致,则更新本地配置文件。
8.如权利要求7所述的客户端调用服务的路由系统,其特征在于,还包括缓存依赖添加模块,用于对缓存中的本地配置文件添加缓存依赖。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010503906A CN101969399B (zh) | 2010-09-30 | 2010-09-30 | 客户端调用服务的路由方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010503906A CN101969399B (zh) | 2010-09-30 | 2010-09-30 | 客户端调用服务的路由方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101969399A true CN101969399A (zh) | 2011-02-09 |
CN101969399B CN101969399B (zh) | 2012-10-10 |
Family
ID=43548504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010503906A Active CN101969399B (zh) | 2010-09-30 | 2010-09-30 | 客户端调用服务的路由方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101969399B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102611743A (zh) * | 2012-02-20 | 2012-07-25 | 南方电网科学研究院有限责任公司 | 一种用于电能质量监测系统的数据同步传输方法 |
CN104756076A (zh) * | 2012-10-28 | 2015-07-01 | 谷歌股份有限公司 | 配置文件更新器 |
CN105635191A (zh) * | 2014-10-27 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 服务流量的调用导向系统及调用导向方法 |
CN106375414A (zh) * | 2016-08-30 | 2017-02-01 | 中国民生银行股份有限公司 | 基于分布式环境的远程配置资源的处理方法和装置 |
CN106682165A (zh) * | 2016-12-26 | 2017-05-17 | 深圳中兴网信科技有限公司 | 自动路由方法和自动路由系统 |
CN106970843A (zh) * | 2016-01-14 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 远程调用方法和装置 |
CN107168729A (zh) * | 2017-04-11 | 2017-09-15 | 深圳市艾数信息技术有限公司 | 一种服务的调用方法和系统 |
CN107612713A (zh) * | 2017-08-21 | 2018-01-19 | 同程网络科技股份有限公司 | 一种治理后端服务的方法 |
CN109074451A (zh) * | 2016-01-29 | 2018-12-21 | 华睿泰科技有限责任公司 | 在分布式环境中保护内部服务 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470357B1 (en) * | 1998-07-28 | 2002-10-22 | International Bussiness Machines Corp. | System and method of enhanced directory services for telecommunications management network applications |
CN101039214A (zh) * | 2006-03-17 | 2007-09-19 | 华为技术有限公司 | 一种动态带宽资源分配方法及系统 |
CN101840348A (zh) * | 2009-12-24 | 2010-09-22 | 陕西移数通电讯有限公司 | 数据库中间件系统 |
-
2010
- 2010-09-30 CN CN201010503906A patent/CN101969399B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470357B1 (en) * | 1998-07-28 | 2002-10-22 | International Bussiness Machines Corp. | System and method of enhanced directory services for telecommunications management network applications |
CN101039214A (zh) * | 2006-03-17 | 2007-09-19 | 华为技术有限公司 | 一种动态带宽资源分配方法及系统 |
CN101840348A (zh) * | 2009-12-24 | 2010-09-22 | 陕西移数通电讯有限公司 | 数据库中间件系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102611743A (zh) * | 2012-02-20 | 2012-07-25 | 南方电网科学研究院有限责任公司 | 一种用于电能质量监测系统的数据同步传输方法 |
CN104756076A (zh) * | 2012-10-28 | 2015-07-01 | 谷歌股份有限公司 | 配置文件更新器 |
CN104756076B (zh) * | 2012-10-28 | 2019-02-22 | 谷歌有限责任公司 | 配置文件更新器 |
CN105635191A (zh) * | 2014-10-27 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 服务流量的调用导向系统及调用导向方法 |
CN105635191B (zh) * | 2014-10-27 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 服务流量的调用导向系统及调用导向方法 |
CN106970843A (zh) * | 2016-01-14 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 远程调用方法和装置 |
CN109074451A (zh) * | 2016-01-29 | 2018-12-21 | 华睿泰科技有限责任公司 | 在分布式环境中保护内部服务 |
CN109074451B (zh) * | 2016-01-29 | 2022-12-09 | 华睿泰科技有限责任公司 | 在分布式环境中保护内部服务 |
CN106375414A (zh) * | 2016-08-30 | 2017-02-01 | 中国民生银行股份有限公司 | 基于分布式环境的远程配置资源的处理方法和装置 |
CN106375414B (zh) * | 2016-08-30 | 2019-09-24 | 中国民生银行股份有限公司 | 基于分布式环境的远程配置资源的处理方法和装置 |
CN106682165A (zh) * | 2016-12-26 | 2017-05-17 | 深圳中兴网信科技有限公司 | 自动路由方法和自动路由系统 |
CN107168729A (zh) * | 2017-04-11 | 2017-09-15 | 深圳市艾数信息技术有限公司 | 一种服务的调用方法和系统 |
CN107612713A (zh) * | 2017-08-21 | 2018-01-19 | 同程网络科技股份有限公司 | 一种治理后端服务的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101969399B (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101969399B (zh) | 客户端调用服务的路由方法及系统 | |
CN111083058B (zh) | 内容分发网络服务限流方法及电子设备 | |
CN111580884A (zh) | 配置更新方法、装置、服务器和电子设备 | |
CN110651256B (zh) | 用于在软件更新期间防止服务中断的系统和方法 | |
CN110677462A (zh) | 多区块链网络的访问处理方法、系统、装置及存储介质 | |
CN112416969B (zh) | 分布式数据库中的并行任务调度系统 | |
CN113285886B (zh) | 一种带宽分配的方法、装置、电子设备及可读存储介质 | |
CN110888658A (zh) | 应用程序中功能模块的动态化方法、装置及存储介质 | |
CN110704185A (zh) | 集群系统分片定时任务调度方法及集群系统 | |
CN110704172B (zh) | 集群系统定时任务调度方法及集群系统 | |
CN108958933B (zh) | 任务执行器的配置参数更新方法、装置及设备 | |
CN104410511A (zh) | 一种服务器管理方法及系统 | |
CN112199186B (zh) | 基于智能合约的数据处理方法、装置、设备及存储介质 | |
CN105427149A (zh) | 一种基于soa扩展框架的跨境电子商务bpo服务方法及装置 | |
CN111400032A (zh) | 一种资源分配的方法及装置 | |
JP2012048386A (ja) | 配置決定プログラム、方法及び装置 | |
CN114675940A (zh) | 应用实例构建方法、装置和设备 | |
CN115328457A (zh) | 基于参数配置的表单页面实现方法和装置 | |
CN110737520B (zh) | 集群系统调度控制定时任务的方法及集群系统 | |
US7930489B2 (en) | Techniques for optimizing configuration partitioning | |
CN110737525B (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN113504981A (zh) | 任务调度方法和装置、存储介质及电子设备 | |
CN109951529B (zh) | 一种资源管理方法和装置 | |
CN112217849A (zh) | Sd-wan系统中的任务调度方法、系统和计算机设备 | |
CN113204434B (zh) | 基于k8s的计划任务执行方法、装置及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Room 818, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building A block 5 layer Patentee before: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |