具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1是根据本申请的一个实施例的访问应用配置服务的方法的流程图。图1的方法由应用执行。
如图1所示出的,在S102处,确定业务模块请求访问的目标应用配置服务的目标类型。
可选地,作为一个例子,目标类型为独占型,或,目标类型为共享型。换言之,目标应用配置服务为独占型应用配置服务,或目标应用配置服务为共享型应用配置服务。
在本申请实施例中,独占型应用配置服务可以认为是提供应用配置项的动态推送管理的服务,在云环境中部署在应用所处的租户内,仅供租户内部的应用使用,供应用在租户内部进行访问(或者说调用)。共享型应用配置服务可以认为是提供应用配置项的动态推送管理的服务,在云环境中部署在独立租户中,供多个应用租户使用,应用需要跨租户进行访问(或者说调用)。
可选地,在一些实施例中,一个应用中可以包括至少一个业务模块和一个基础模块。业务模块为负责实现系统具体业务逻辑的模块,基础模块为负责系统中各技术组件配置、启动的模块。相对应的,在S102处,确定业务模块请求访问的目标应用配置服务的目标类型是由应用中的基础模块执行的,具体可以是应用模块基于应用模块中部署的系统配置文件确定的,即确定业务模块请求访问的目标应用配置服务的目标类型,包括:基于应用模块中部署的系统配置文件,确定所述目标类型。例如,系统配置文件中包括用于指示系统部署模式的参数,根据用于指示系统部署模式的参数的取值就可以确定业务模块请求访问的目标应用配置服务的目标类型。
需要说明的是,系统配置文件可以是静态配置的,还可以是动态进行配置的,本申请实施例对此不作限定。
因此,本申请实施例的方法,不需要通过对业务模块的代码进行修改,即可以实现业务模块请求访问的应用配置服务的类型的判断,避免由于业务模块的代码修改导致的代码可读性较差,不利于维护,时间成本高的问题。
具体地,在一些实施例中,在应用系统启动之后,基础模块读取系统配置文件,根据系统配置文件确定业务模块请求访问的目标应用配置服务的目标类型。在本申请实施例中,系统配置文件也可以被称为“系统配置项”。在应用系统启动时自动确定调用的客户端,能够灵活支持不同的云环境部署。
在S104处,基于所述目标类型和所述业务模块预定支持的应用配置服务的类型,确定调用的客户端。
需要说明的是,业务模块预定支持的应用配置服务的类型是在编写业务模块的代码时就确定好的,如果要修改业务模块支持的应用配置服务的类型,需要通过修改业务模块的代码来实现。本申请实施例的方法是基于目标类型和业务模块预定支持的应用配置服务的类型,确定调用的客户端,不需要对业务模块的代码进行修改。
具体地,在一些实施例中,在目标类型和业务模块预定支持的应用配置服务的类型一致时,确定调用的客户端为第一客户端;在目标类型和业务模块预定支持的应用配置服务的类型不一致时,确定调用的客户端为第二客户端,第一客户端和第二客户端的调用接口相同。
也就是说,在目标类型和业务模块预定支持的应用配置服务的类型一致的情况下,与目标类型和业务模块预定至此的应用配置服务的类型不一致的情况下,调用的客户端的调用接口是一致的,即不需要修改业务模块的代码即可以实现不同类型的应用配置服务的访问。
可以理解的是,第一客户端能够与提供类型为业务模块预定支持的应用配置服务的类型的应用配置服务的服务器进行通信,实现业务模块对目标应用配置服务的访问,第二客户端能够使得业务模块实现对类型与业务模块预定支持的应用配置服务的类型不一致的目标应用配置服务的访问,但由于第一客户端和第二客户端的调用接口相同,因此可以认为第二客户端实际为代理客户端,第二客户端对业务模块保持和第一客户端一致的应用程序编程接口(Application Programming Interface,API),在第二客户端内部实现对类型与业务模块预定支持的应用配置服务的类型不一致的目标应用配置服务的访问。即本申请实施例的方法,业务模块的代码不需要修改,即可以实现不同类型的应用配置服务的访问,避免由于业务模块的代码修改导致的代码可读性较差,不利于维护,时间成本高的问题。
在S106处,调用所述客户端访问所述目标应用配置服务。
可选地,作为一个例子,目标类型和业务模块预定支持的应用配置服务的类型不一致;则在S106处,调用所述客户端访问所述目标应用配置服务,包括:调用第二客户端向第三客户端发送第一访问服务请求,第一访问服务请求用于请求访问目标应用配置服务,第三客户端用于向提供所述目标应用配置服务的第一服务器发送第一访问服务请求;通过第二客户端接收第三客户端转发的第一访问服务响应,第一访问服务响应中包括第一服务器对第一访问服务请求的响应结果。
可以理解的是,第二客户端接收到业务模块发送的第一访问服务请求之后,需要进行格式转换,得到格式转换后的第一访问服务请求,之后将格式转换后的第一访问服务请求发送给第三客户端,第三客户端接收到格式转换后的第一访问服务请求之后向提供目标配置服务的第一服务器发送格式转换后的第一访问服务请求,第一服务器接收到格式转换后的第一访问服务请求之后,对格式转换后的第一访问请求进行处理得到对格式转换后的第一访问请求的响应结果,之后向第三客户端返回第一访问服务响应,第三客户端将第一访问服务响应转发给第二客户端,第二客户端将第一访问服务响应进行格式转换,转换成业务模块能够识别的格式,并将格式转换后的第一访问服务响应反馈给业务模块。
举例来说,假设第一客户端为独占型客户端,第二客户端为独占型客户端代理,第三客户端为共享型客户端,在这里独占型客户端可以认为是能够与提供独占型应用配置服务的独占型应用配置服务器进行通信实现独占型应用配置服务的访问的客户端,独占型客户端代理可以认为是与独占型客户端具有相同的调用接口且能够与共享型客户端进行通信的客户端,共享型客户端可以认为是能够与提供共享型应用配置服务的共享型应用配置服务器进行通信实现共享型应用配置服务的访问的客户端。如图2所示出的,在S202处,业务模块向独占型客户端代理发送第一访问服务请求。
在S204处,独占型客户端将接收到的第一访问请求进行格式转换之后将格式转换后的第一访问服务请求发送给共享型客户端。
在S206处,共享型客户端对数据进行补全之后,将第一访问服务请求发送给云网关设备。
可选地,在S206处,共享型客户端对数据进行补全包括设置租户信息和加密的签名。
在S208处,云网关设备对租户权限进行验证并对第一访问请求的签名进行验证。
在S210处,验证合法后将第一访问服务请求转发给共享型应用配置服务器进行处理。
在S212处,共享型应用配置服务器对第一访问服务请求进行处理。
在S214处,共享型应用配置服务器向云网关设备发送第一访问服务响应。
在S216处,云网关设备将第一访问服务响应转发给共享型客户端。
在S218处,共享型客户端将第一访问服务响应转发给独占型客户端代理。
在S220处,独占型客户端代理将第一访问服务响应进行格式转换。
在S222处,独占型客户端代理将格式转换后的第一访问服务响应发送业务模块。
可选地,作为另一个例子,目标类型和业务模块预定支持的应用配置服务的类型一致;则在S106处,调用所述客户端访问所述目标应用配置服务,包括:调用第一客户端向提供目标应用配置服务的第二服务器发送第二访问服务请求,第二访问服务请求用于请求访问所述目标应用配置服务;通过第一客户端接收第二服务器发送的第二访问服务响应,第二访问服务响应中包括第二服务器对第二访问服务请求的响应结果。
举例来说,假设第一客户端为上述的独占型客户端。如图3所示出的,在S302处,业务模块向独占型客户端发送第二访问服务请求。
在S304处,独占型客户端向独占型应用配置服务器发送第二访问服务请求。
在S306处,独占型应用配置服务器对第二访问服务请求进行处理,得到第二访问服务响应。
在S308处,独占型应用配置服务器向独占型客户端发送第二访问服务响应。
在S310处,独占型客户端向应用模块发送第二访问服务响应。
在本申请实施例中,可选地,应用是基于容器框架进行的,例如Java体系中的Spring容器。业务模块对客户端的调用是通过注入实现的。在这种情况下,在目标类型和业务模块预定支持的应用配置服务的类型不一致时,在调用客户端访问目标应用配置服务之前,图1所示的方法还包括:创建第三客户端;基于第三客户端创建第二客户端;在创建完成第二客户端之后,将第二客户端注册到基础模块中。在目标类型和业务模块预定支持的应用配置服务的类型一致时,在调用客户端访问目标应用配置服务之前,图1所示的方法还包括:创建第一客户端,在创建完成第一客户端之后,将第一客户端注册到应用模块中。也就是说,在调用客户端访问目标应用配置服务之前,需要加载客户端。
可以理解的是,最终注册到应用模块中的第一客户端和第二客户端的名称和类型都是一致的。名称一般在容器中都是自定义的,可以进行指定。通过接口编程实现第一客户端和第二客户端的类型保持一致。在这种情况下,如果业务模块预定支持的应用配置服务的类型为独占型应用配置服务,则业务模块的实例仍然保持原来的独占型声明使用,原有所有代码都不需要改动,而底层真正运行的实例在不同系统配置下是不同的。因此,本申请实施例的方法,针对业务模块预定支持的应用配置服务的类型为独占型应用配置服务的情况,基于接口编程,使用代理模式,在代理内部进行封装对共享型应用配置服务的访问,对外保持和原有独占型客户端一直的API,修改点集中到一处,上层业务代码不需要修改,修改成本低。并且由于仅仅修改了客户端逻辑,在测试验证时仅需要验证客户端逻辑与之前保持一直即可,不需要对每个业务模块进行功能验证回归,测试成本低。
下面将结合图4详细描述根据本申请实施例的加载客户端的方法。需要说明的是,图4中示出的方法是以业务模块预定支持的应用配置服务的类型为独占型为例,或者说以业务模块是基于独占型客户端进行编写代码为例。
如图4所示出的,在S402处,开始。
需要说明的是,在S402处,开始指的是应用系统的启动过程,在启动过程中先启动基础模块,基础模块启动成功后在启动业务模块。如果应用系统有多个业务模块,则在启动过程中会同时启动这多个业务模块。
在S404处,读取系统配置。
具体地,基础模块读取系统配置,根据系统配置确定当前应用系统的部署模式。可以理解的是,当前应用的部署模式决定了业务模块要请求的应用配置服务的类型。
在S406处,判断应用系统的部署模式是否为独占型配置。
需要说明的是,如果部署模式为独占型配置,则业务模块要请求的应用配置服务的类型为独占型,如果部署模式为共享型配置,则业务模块要请求的应用配置服务的类型为共享型。
在S408处,如果是独占型配置,则创建独占型客户端。
在S408处,创建独占型客户端可以理解为启动独占型客户端。
在S410处,将独占型客户端注册到基础模块中,并结束流程。
在S412处,如果不是独占型配置,则创建共享型客户端。
在S414处,创建独占型客户端代理。
需要说明的是,在创建独占型客户端代理时,需要基于共享型客户端的对象指针进行创建。创建共享型客户端和独占型客户端代理可以理解为启动共享型客户端和独占型客户端代理。
在S416处,将独占型客户端代理注册到基础模块中,并结束流程。
可选地,在根据图4的方法加载客户端之后,业务模块向基础模块请求获取能够被调用的客户端,基础模块将加载的客户端的对象指针返回给业务模块,业务模块获得指针后即可以直接调用客户端。
以上结合图1至图4详细描述了根据本申请实施例的访问应用配置服务的方法。下面将结合图5详细描述根据本申请实施例的电子设备。参考图5,在硬件层面,电子设备包括处理器,可选地,包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成应用。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
确定业务模块请求访问的目标应用配置服务的目标类型;
基于所述目标类型和所述业务模块预定支持的应用配置服务的类型,确定调用的客户端;
调用所述客户端访问所述目标应用配置服务。
上述如本申请图1至图4所示实施例揭示的应用执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1至图4所示实施例的方法,并具体用于执行以下方法:
确定业务模块请求访问的目标应用配置服务的目标类型;
基于所述目标类型和所述业务模块预定支持的应用配置服务的类型,确定调用的客户端;
调用所述客户端访问所述目标应用配置服务。
图6是本申请的一个实施例的应用的结构示意图。请参考图6,在一种软件实施方式中,应用600可包括:基础模块601和业务模块602,其中,
基础模块601,确定业务模块请求访问的目标应用配置服务的目标类型;
所述基础模块601,基于所述目标类型和所述业务模块预定支持的应用配置服务的类型,确定调用的客户端。
业务模块602,调用所述客户端访问所述目标应用配置服务。
本申请实施例的应用在确定业务模块请求访问的目标应用配置服务的目标类型之后,基于目标类型和业务模块预定支持的应用配置服务的类型,确定调用的客户端,之后调用确定的客户端访问目标应用配置服务。本申请实施例的应用基于业务模块请求访问的应用配置服务的类型和业务模块预定支持的应用配置服务的类型,确定调用的客户端,而不需要修改业务模块的代码,即不需要修改业务模块预定支持的应用配置服务的类型,即可实现不同类型的客户端的调用,避免由于业务模块的代码修改导致的代码可读性较差,不利于维护,时间成本高的问题。
可选地,作为一个实施例,基础模块601:
在所述目标类型和所述业务模块预定支持的应用配置服务的类型一致时,确定调用的客户端为第一客户端;
在所述目标类型和所述业务模块预定支持的应用配置服务的类型不一致时,确定调用的客户端为第二客户端,所述第一客户端和所述第二客户端的调用接口相同。
可选地,作为一个实施例,所述目标类型和所述业务模块预定支持的应用配置服务的类型不一致;
其中,所述业务模块602:
调用第二客户端向第三客户端发送第一访问服务请求,第一访问服务请求用于请求访问所述目标应用配置服务,所述第三客户端用于向提供所述目标应用配置服务的第一服务器发送第一访问服务请求;
通过第二客户端接收第三客户端转发的第一访问服务响应,第一访问服务响应中包括第一服务器对第一访问服务请求的响应结果。
可选地,作为一个实施例,在业务模块602调用所述客户端访问所述目标应用配置服务之前,基础模块601:
创建第三客户端;
基于第三客户端创建第二客户端;
在创建完成第二客户端之后,将第二客户端注册到基础模块中。
可选地,作为一个实施例,基础模块601:
基于应用模块中部署的系统配置文件,确定所述目标类型。
可选地,作为一个实施例,所述目标类型为独占型;或,所述目标类型为共享型。
可选地,作为一个实施例,所述目标类型和所述业务模块预定支持的应用配置服务的类型一致;
其中,所述业务模块602:
调用所述第一客户端向提供所述目标应用配置服务的第二服务器发送第二访问服务请求,第二访问服务请求用于请求访问所述目标应用配置服务;
通过第一客户端接收第二服务器发送的第二访问服务响应,第二访问服务响应中包括第二服务器对第二访问服务请求的响应结果。
可选地,作为一个实施例,在业务模块602调用所述客户端访问所述目标应用配置服务之前,基础模块601:
创建第一客户端;
在创建完成第一客户端之后,将第一客户端注册到应用模块中。
图7是根据本申请的一个实施例的访问应用配置服务的系统示意图。图7中示出的系统是以业务模块预定支持的应用配置服务的类型为独占型为例。请参考图7,访问应用配置服务的系统包括应用系统、独占型应用配置服务器、共享型应用配置服务器和云网关设备。应用系统和独占型应用配置服务器之间可以进行通信以访问独占型应用配置服务,应用系统和共享型应用配置服务器之间可以进行通信以访问共享型应用配置服务。应用系统包括业务模块、独占型客户端、独占型客户端代理和共享型客户端。
在图7所示的系统中,在应用系统需要访问独占型应用配置服务时,业务模块首先调用独占型客户端,然后独占型客户端和独占型配置服务器进行通信,完成一次访问请求。在应用系统需要访问共享型应用配置服务时,业务模块首先调用独占型客户端代理,将访问请求发送给独占型客户端代理,之后独占型客户端代理将访问请求转发给共享型客户端,共享型客户端对数据进行补全(例如,设置租户信息、加密的签名等),然后将访问请求发送到云网关设备,云网关设备对租户权限进行验证对访问请求的签名进行验证,验证合法后将请求转发给共享型应用配置服务器进行处理。
需要说明的是,图7所示的系统中,应用系统还包括基础模块,基础模块可以基于图4所示的方法加载业务模块能够调度的客户端,为避免重复,在此不再赘述。
总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。