CN109522055B - 基于分布式服务调用的连接预热方法及系统 - Google Patents
基于分布式服务调用的连接预热方法及系统 Download PDFInfo
- Publication number
- CN109522055B CN109522055B CN201811293091.7A CN201811293091A CN109522055B CN 109522055 B CN109522055 B CN 109522055B CN 201811293091 A CN201811293091 A CN 201811293091A CN 109522055 B CN109522055 B CN 109522055B
- Authority
- CN
- China
- Prior art keywords
- preheating
- service
- connection
- mode
- executing
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于分布式服务调用的连接预热方法及系统,该方法包括:解析用户自定义的预热配置信息,其中,预热配置信息至少包括预热范围,预热范围用于配置应用中执行连接预热操作的业务服务,连接预热操作为在应用系统启动时建立服务调用方与服务提供方之间网络连接的操作;根据解析结果,对业务服务执行连接预热操作。本发明既解决了分布式服务调用时首次调用耗时久的问题,又避免了应用系统启动时由于执行连接预热操作而导致启动时间过长的问题。
Description
技术领域
本发明涉及分布式系统领域,尤其涉及一种基于分布式服务调用的连接预热方法及系统。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着互联网的普及,互联网用户的急速增长,传统的单体应用系统已经无法满足日益增长的用户压力对系统容量及高可用的需求。将单体应用改造为分布式服务模式的应用,能有效解决不断增长的系统压力。在分布式服务领域,通常使用远程过程调用(RemoteProcedure Call,RPC)模式进行服务调用。这种服务调用方式存在首次交易耗时久的问题,这是因为在大规模集群中,调用方需要动态初始化服务代理,同时和大量的服务提供方建立网络通信连接。
当调用方项目中配置有大量的服务代理时,服务调用方在初始化每个服务代理时都会面临首次网络连接耗时较长的问题。为了解决首次交易耗时的问题,减小系统初始化给业务交易带来的干扰,现有技术常用的解决方式是在应用系统启动过程中,去启动服务代理的初始化任务。该方法的确可以解决首次服务调用耗时长的问题,但会使得服务器启动时间增加,当服务调用关系复杂时还可能会引起应用服务器启动失败。延长服务器启动的超时时间可以防止应用服务器启动失败,但增大超时时间的优化空间是有限的,过长的部署时间不利于应用的部署验证,降低应用的可维护性,另一方面也会让应用的用户体验降低啊。
综上,目前没有合理的解决分布式服务调用时首次调用耗时久这个问题的方案,因此,如何提供一种新的方案,解决上述技术问题是本领域亟待解决的技术难题。
发明内容
本发明实施例提供一种基于分布式服务调用的连接预热方法,用以解决现有应用系统在启动时执行初始化服务代理操作导致服务器启动时间过长的技术问题,该方法包括:解析用户自定义的预热配置信息,其中,预热配置信息至少包括预热范围,预热范围用于配置应用中执行连接预热操作的业务服务,连接预热操作为在应用系统启动时建立服务调用方与服务提供方之间网络连接的操作;根据解析结果,对业务服务执行连接预热操作;所述预热配置信息还包括:预热种类,所述预热种类用于配置所述业务服务执行连接预热操作的功能是否开启,以及开启后使用的预热模式;其中,所述预热模式包括阻塞预热模式或非阻塞预热模式,所述阻塞预热模式为在所述应用系统启动过程中,按照串行方式完成服务代理对象的创建和初始化操作的模式,所述非阻塞预热模式为在所述应用系统启动过程中只完成服务代理对象的创建操作,且在所述应用系统启动完成后按照并发方式完成服务代理对象初始化操作的模式;其中,所述服务代理对象为服务调用方创建的代理对象,用于所述服务调用方基于分布式调用服务提供方提供的服务。
本发明实施例还提供一种基于分布式服务调用的连接预热系统,用以解决现有应用系统在启动时执行初始化服务代理操作导致服务器启动时间过长的技术问题,该系统包括:策略解析执行装置,用于解析用户自定义的预热配置信息,其中,预热配置信息至少包括预热范围,预热范围用于确定应用中执行连接预热操作的业务服务,连接预热操作为在应用系统启动时建立服务调用方与服务提供方之间网络连接的操作;连接预热装置,与策略解析执行装置连接,用于根据解析结果,对业务服务执行连接预热操作;所述系统还包括:用户决策定义装置,所述用户决策定义装置包括:预热范围配置单元,用于配置应用中执行连接预热操作的业务服务;预热种类配置单元,用于配置所述业务服务执行连接预热操作的功能是否开启,以及开启后使用的预热模式;其中,所述预热模式包括阻塞预热模式或非阻塞预热模式,所述阻塞预热模式为在所述应用系统启动过程中,按照串行方式完成服务代理对象的创建和初始化操作的模式,所述非阻塞预热模式为在所述应用系统启动过程中只完成服务代理对象的创建操作,且在所述应用系统启动完成后按照并发方式完成服务代理对象初始化操作的模式;其中,所述服务代理对象为服务调用方创建的代理对象,用于所述服务调用方基于分布式调用服务提供方提供的服务;预热并发度配置单元,用于配置所述非阻塞预热模式下,并发初始化服务代理对象的数量。
本发明实施例还提供一种计算机设备,用以解决现有应用系统在启动时执行初始化服务代理操作导致服务器启动时间过长的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的基于分布式服务调用的连接预热方法。
本发明实施例还提供一种计算机可读存储介质,用以解决现有应用系统在启动时执行初始化服务代理操作导致服务器启动时间过长的技术问题,该计算机可读存储介质存储有执行上述基于分布式服务调用的连接预热方法的计算机程序。
本发明实施例中,通过用户自定义预热配置信息,以确定应用中需要执行连接预热操作的业务服务,使得应用系统启动时不需要对所有的业务服务执行连接预热操作,而是只需要对配置的业务服务执行连接预热操作,既解决了分布式服务调用时首次调用耗时久的问题,又避免了应用系统启动时由于执行连接预热操作而导致启动时间过长的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种基于分布式服务调用的连接预热方法流程图;
图2为本发明实施例中提供的一种基于分布式服务调用的连接预热系统示意图;
图3为本发明实施例中提供的一种用户决策定义装置示意图;
图4为本发明实施例中提供的一种策略解析执行装置示意图;
图5为本发明实施例中提供的一种连接预热装置示意图;
图6为本发明实施例中提供的一种冲突解决装置示意图;
图7为本发明实施例中提供的一种分布式服务调用请求处理方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例中提供了一种基于分布式服务调用的连接预热方法,如图1所示,该方法包括:
S102,解析用户自定义的预热配置信息,其中,预热配置信息至少包括预热范围,预热范围用于配置应用中执行连接预热操作的业务服务,连接预热操作为在应用系统启动时建立服务调用方与服务提供方之间网络连接的操作;
S104,根据解析结果,对业务服务执行连接预热操作。
具体地,在上述步骤中,应用可以是基于分布式服务调用模式的各种分布式应用,分布式应用是指应用程序分布在不同计算机上,通过网络来共同完成一项任务的应用。上述预热配置信息是指用户自定义的配置信息,该配置信息至少用于指定应用中需要执行连接预热操作的业务服务,即指定预热范围。通过自定义预热配置信息,可以实现自定义应用中哪些业务服务执行连接预热操作,哪些服务不需要执行连接预热操作的目的。
在分布式服务系统中,服务调用方(也即应用服务器)在首次调用服务需要初始化每个服务代理,并和大量的服务提供方建立网络连接,这个过程会导致首次调用耗时久的问题。现有技术为了解决分布式应用首次调用耗时久的问题,在应用启动过程中,执行应用中所有业务服务的服务代理初始化工作。这种方式不仅导致应用服务器启动时间过长,而且还存在应用服务器启动失败的风险。
本发明实施例中,用户可以通过自定义预热配置信息来确定应用中执行连接预热操作的业务服务,也即可以根据应用自身业务特性,选择性地将一些核心业务服务或实时业务服务配置为应用启动时需要执行连接预热操作;将一些非核心业务服务或非实时业务服务配置为应用启动时不需要执行连接预热操作,从而既满足了降低首次调用耗时久的问题,又不至于使得应用启动时间过长。
对于分布式应用来说,连接预热操作是指创建服务代理对象,以及建立服务代理对象与服务提供方之间网络连接的操作。容易注意的是,服务代理对象的创建耗时极低,对应用系统的启动耗时影响也较小,而建立服务代理对象与服务提供方之间的网络连接耗时较大,对应用系统的启动耗时影响也较大。因而,在通过预热配置信息中的预热范围指定应用中需要执行连接预热操作的业务服务(核心业务服务或实时业务服务)后,可以进一步地确定业务服务的预热模式。
由此,在一种实施例中,上述预热配置信息还可以包括:预热种类,预热种类用于配置业务服务执行连接预热操作的功能是否开启,以及开启后使用的预热模式;其中,预热模式包括阻塞预热模式或非阻塞预热模式,阻塞预热模式为在应用系统启动过程中,按照串行方式完成服务代理对象的创建和初始化操作的模式,非阻塞预热模式为在应用系统启动过程中只完成服务代理对象的创建操作,且在应用系统启动完成后按照并发方式完成服务代理对象初始化操作的模式。
进一步地,当应用中的业务服务采用非阻塞服务的情况下,上述预热配置信息还包括:预热并发度,预热并发度用于配置非阻塞预热模式下,并发初始化服务代理对象的数量。通过非阻塞预热模式,可以进一步减少连接预热操作对应用启动的影响。
由于连接预热操作建立的网络连接,需要在后续服务调用时使用,因而,一种实施例中,在根据解析结果,对业务服务执行连接预热操作之后,上述方法还可以包括如下步骤:缓存已建立的服务调用方与服务提供方之间的网络连接;定期向服务提供方发送心跳报文,其中,心跳报文用于保持服务调用方与服务提供方之间的网络连接。
作为一种可选的实施例,通过上述步骤S102解析到的解析结果中至少包括预加载服务清单,其中,预加载服务清单包含当前执行预热连接操作的业务服务。则上述步骤S104可以包括:根据预加载服务清单,获取当前执行预热连接操作的服务提供方的设备地址列表;根据当前执行预热连接操作的服务提供方的设备地址列表,建立当前执行预热连接操作的服务调用方与服务提供方之间的网络连接。
对于分布式应用来说,服务调用方可以根据预加载服务清单可以读取每个业务服务的服务提供方列表,从而对每个服务提供方发起建立传输连接(TCP)的网络请求包,从而建立与每个服务提供方的网络连接。可选地,可以缓存建立的网络连接,同时定期向服务提供方发送心跳报文,以保持连接的可用性。
另外,为了防止出现同一个服务代理初始化出多个代理实例,本发明实施例引入了冲突解决策略,以保证服务代理初始化过程中发生服务调用时,保证服务代理的唯一性。由此,在一种实施例中,上述步骤S104还可以包括:在执行连接预热操作的过程中,阻塞正在初始化或未初始化的服务代理对象的服务调用请求。
通过本发明实施例提供的基于分布式服务调用的连接预热方法,可以支持服务调用方应用根据自身业务特性,选择性的配置核心业务服务,采用应用系统启动时初始化服务代理的策略,且支持阻塞性和非阻塞性两种预热模式,其中,非阻塞性预热模式支持并发初始化,可以进一步减少对应用启动的影响,同时,引入冲突解决策略,当初始化过程中发生服务调用时,能够保证服务代理的唯一性,防止出现同一个服务代理初始化出多个代理实例;对于非核心业务服务,配置在应用系统启动完成以后发生交易时初始化的策略。
另外,本发明实施例中还提供了一种基于分布式服务调用的连接预热系统,如图2所示,该系统包括:策略解析执行装置2和连接预热装置3。
其中,策略解析执行装置2,用于解析用户自定义的预热配置信息,其中,预热配置信息至少包括预热范围,预热范围用于确定应用中执行连接预热操作的业务服务,连接预热操作为在应用系统启动时建立服务调用方与服务提供方之间网络连接的操作;
连接预热装置3,与策略解析执行装置连接,用于根据解析结果,对业务服务执行连接预热操作。
可选地,如图2所示,上述系统还可以包括:用户决策定义装置1,与策略解析执行装置2连接,用于自定义预热配置信息。该用户决策定义装置1自定义的预热配置信息可以保存到项目配置文件中。
进一步地,如图2所示,上述系统还可以包括:冲突解决装置4,与连接预热装置3连接,用于在执行连接预热操作的过程中,阻塞正在初始化或未初始化的服务代理对象的服务调用请求。
需要说明的是,用户可以通过用户决策定义装置1自定义是否开启应用的连接预热功能、需要预热的服务范围、采用阻塞式或者非阻塞预热模式策略类型(也即预热模式或预热方式)。策略解析执行装置2从用户决策定义装置1中读取用户自定义的预热配置信息,解析预热配置信息得到预加载服务清单,该预加载服务清单将是连接预热装置3的任务清单。连接预热装置3根据策略解析执行装置2中分配的执行的任务清单,获取每个业务服务的服务提供方列表,分别对每个服务提供方发起建立网络连接(TCP)的网络请求包,以建立服务调用方与每个服务提供方之间的网络连接。当系统执行连接预热状态时,若发生服务调用请求。冲突解决装置4会首先从注册表中查找该服务代理是否初始化,已经初始化则直接发起服务调用,若正在初始化或者未初始化,该装置会阻塞该请求,然后发起初始化任务,初始化成功后解除对请求线程的阻塞,继续完成服务调用。
在一种可选的实施例中,如图3所示,上述用户决策定义装置1可以包括:预热范围配置单元11,用于配置应用中执行连接预热操作的业务服务;预热种类配置单元12,用于配置业务服务执行连接预热操作的功能是否开启,以及开启后使用的预热模式;其中,预热模式包括阻塞预热模式或非阻塞预热模式,阻塞预热模式为在应用系统启动过程中,按照串行方式完成服务代理对象的创建和初始化操作的模式,非阻塞预热模式为在应用系统启动过程中只完成服务代理对象的创建操作,且在应用系统启动完成后按照并发方式完成服务代理对象初始化操作的模式;其中,服务代理对象为服务调用方创建的代理对象,用于服务调用方基于分布式调用服务提供方提供的服务;预热并发度配置单元13,用于配置非阻塞预热模式下,并发初始化服务代理对象的数量。
具体地,通过预热种类配置单元12,用户可以确定本次应用系统启动时,是否开启连接预热功能,选用阻塞预热模式还是采用非阻塞预热模式。具体配置信息如表1所示。
表1配置信息
通过预热范围配置单元12,用户可以根据业务特性及服务的重要性来决定哪些服务有必要进行事先的预热。核心交易或实时性要求高等影响客户体验的服务优先安排预热;批量服务或者数据精度要求不高,用户体验度不是很高的服务可暂不安排预热。
当使用非阻塞预热加载方式时,通过预热并发度配置单元13,用户可以自定义预热的并发度,应用需根据自己的实际需要及设备资源的规格来决定并发度。并发度高,预热全部连接的耗时将会减少,但是需要更多的系统资源来支持;并发度低,预热全部连接耗时将增加,消耗系统资源少。
作为一种可选的实施方式,用户决策定义装置1对于用户自定义的预热数据,最终将以XML或者JSON的形式保存起来。其中,XML形式的用户自定义预热数据格式如下:
<cocoa:application name="consumer"owner="F-XXX"warmup="true"warmkind="async"warmscale="10"/>
<cocoa:reference id="oldDemoc"interface="com.xxx.demo.QueryPersonalInfo"version="1.0"warmup="true"/>
在一种可选的实施例中,如图4所示,上述策略解析执行装置2可以包括:策略解析单元21,用于解析用户自定义的预热配置信息,得到执行连接预热操作的参数配置信息;策略执行单元22,与策略解析单元连接,用于根据参数配置信息执行预热初始化操作。
具体地,在上述实施例中,通过策略解析单元21解析用户配置的连接预热配置信息,组装成策略执行单元22所需要运行时配置信息;策略执行单元22根据策略解析单元21输入的参数配置信息准备不同的执行分支及相关初始化工作。比如用户配置为非阻塞预热模式初始化,那么策略执行单元22需要根据配置的并发度为系统初始化一个大小合适的预热工作池,组装连接预热装置3所需要的预热任务。
在一种可选的实施例中,如图5所示,上述连接预热装置3可以包括:地址库单元31,用于获取全量服务提供方的设备地址列表;连接预热单元32,与地址库单元连接,用于基于设备地址列表,根据解析结果,建立当前执行预热连接操作的服务调用方与服务提供方之间的网络连接;连接存储单元33,与连接预热单元连接,用于存储已成功建立的网络连接。
具体地,在上述实施例中,通过地址库单元31获取当前需要预热的服务提供方的设备地址列表,该设备地址列表将作为连接预热单元32的预热范围清单。通常,地址库单元31通过分布式服务系统的注册中心获取全量的服务提供方的地址,例如,地址库单元31可以通过订阅-通知模式或者long polling机制(主动查询机制)能够实时获取某个服务代理后端全量的服务提供方清单。连接预热单元32首先从连接存储单元33中判断目标服务器是否已经在连接的缓存池中,当该链路的连接已经建立后,连接预热单元32直接标记本次预热工作状态为完成,当缓存池中不存在目标地址的连接时,连接预热单元32会初始化本机的Netty客户端,主动发起到目标地址的TCP握手,连接成功建立后,该连接将会被连接存储单元33缓存起来。连接预热成功后,会定期发送心跳报文,维持预热的连接的连通性。连接存储单元33缓存由连接预热单元32初始化的网络连接,主要针对通过Netty客户端进行网络通信的场景,一方面缓存地址的初始化地址列表,另一方面在缓存获取时还需要判断连接是否联通来确认连接的有效性。
在一种可选的实施例中,如图6所示,上述冲突解决装置4可以包括:代理缓存单元41,用于缓存已创建的服务代理对象;代理初始化单元42,用于与代理缓存单元连接,用于执行建立服务代理对象与服务提供方之间网络连接的初始化操作;冲突解决单元43,与代理缓存单元41连接,用于在执行连接预热操作的过程中,阻塞代理缓存单元中不存在的服务代理对象的服务调用请求。
具体地,在上述实施例中,通过代理缓存单元41可以缓存代理初始化单元42初始化的服务代理对象,当有服务调用请求时或者预热装置触发连接预热时,首选通过代理缓存单元41查询,确认该服务代理对象是否已经存在,对于不存在的服务代理对象,则调用代理初始化单元42实施代理初始化任务。代理初始化单元42根据服务接口的Meta元数据,借助JDK或者Javassist(创建Java字节码的类库)工具生成接口的代理,代理对象生成完毕后会调用连接预热装置3开始连接的初始化工作。
若连接预热装置3正在预热某个代理对象,同时又有调用请求进来,此时为了防止调用请求单独又初始化了一个代理对象,造成内存问题,调用请求会首先转到冲突解决单元43,由冲突解决单元43解决该问题。冲突解决单元43接到预热请求或者调用请求时,都会首先去代理缓存单元41去查询代理是否已经初始化,若查询结果是没有初始化,则只允许第一个发起方进行代理初始化任务,初始化结束后通过后续需要获取代理对象的任务再去缓存中拿取。
作为一种优选的实施方式,本发明实施例提供了一种分布式服务调用请求处理方法,如图7所示,该方法包括如下步骤:
S701,应用系统开始启动。
S702,分布式服务框架开始启动。即系统启动到服务框架层,开始启动分布式服务框架。
S703,用户决策装置读取用户自定义的预热配置信息。
S704,若预热配置信息中的预热模式为阻塞预热模式,则进入阻塞预热模式,应用系统启动时预热服务代理与服务提供方之间的网络连接。
S705,若预热配置信息中的预热模式为非阻塞预热模式,则进入非阻塞预热模式,应用系统启动时不预热服务代理与服务提供方之间的网络连接。
S706,当系统进入非阻塞预热模式后,分布式服务框架则直接跳过预热连接阶段,只完成服务代理对象的创建,即分布式服务框架启动成功。
S707,当系统进入阻塞预热模式后,调用连接预热装置,建立服务代理与服务提供方之间的网络连接,即进行连接预热工作。
S708,连接预热装置执行连接预热工作的时候,判断是否所有的网络连接都预热结束。只有等待所有的网络连接都预热结束,才执行S709,完成整个分布式服务框架启动任务。
S709,若所有的网络连接都预热结束,则完成整个分布式服务框架启动任务,即分布式服务框架启动成功。
S710,分布式服务框架启动成功后,启动系统其他部分。
S711,当系统正在处理连接预热阶段,检测到外部服务调用请求,连接预热装置调用冲突解决装置来解决。
S712,若预热阶段发生外部请求,为了防止发生服务代理重复初始化,此时需要冲突解决装置来接管和处理冲突,冲突解决单元首先去代理缓存单元去查询代理是否已经初始化,若查询结果是没有初始化,则只允许第一个发起方进行代理初始化任务,初始化结束后通过后续需要获取代理对象的任务再去缓存中拿取。
本发明实施例通过解析用户自定义的相关预热指标信息,根据这些度量指标设置的预热规则来提供应用部署即预热网络连接的功能。帮助用户减少因首次交易建立大量网络连接导致的交易失败率高的问题。最大限度保证交易耗时的平稳走势。其优点包括但不限于:(1)采用非阻塞式连接预热,减小连接预热操作对应用系统启动的影响;(2)自定义预热范围和并发度,提高预热灵活度;(3)通过可控的冲突解决方案,杜绝预热过程中服务代理多实例化。
本发明实施例中还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意一项可选的或优选的基于分布式服务调用的连接预热方法。
本发明实施例中还提供了一种计算机可读存储介质,计算机可读存储介质存储有执行上述任意一项可选的或优选的基于分布式服务调用的连接预热方法的计算机程序。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种基于分布式服务调用的连接预热方法,其特征在于,包括:
解析用户自定义的预热配置信息,其中,所述预热配置信息至少包括预热范围,所述预热范围用于配置应用中执行连接预热操作的业务服务,所述连接预热操作为在应用系统启动时建立服务调用方与服务提供方之间网络连接的操作;
根据解析结果,对所述业务服务执行连接预热操作;
所述预热配置信息还包括:预热种类,所述预热种类用于配置所述业务服务执行连接预热操作的功能是否开启,以及开启后使用的预热模式;
其中,所述预热模式包括阻塞预热模式或非阻塞预热模式,所述阻塞预热模式为在所述应用系统启动过程中,按照串行方式完成服务代理对象的创建和初始化操作的模式,所述非阻塞预热模式为在所述应用系统启动过程中只完成服务代理对象的创建操作,且在所述应用系统启动完成后按照并发方式完成服务代理对象初始化操作的模式;
其中,所述服务代理对象为服务调用方创建的代理对象,用于所述服务调用方基于分布式调用服务提供方提供的服务。
2.如权利要求1所述的方法,其特征在于,所述预热配置信息还包括:预热并发度,所述预热并发度用于配置所述非阻塞预热模式下,并发初始化服务代理对象的数量。
3.如权利要求1所述的方法,其特征在于,在根据解析结果,对所述业务服务执行连接预热操作之后,所述方法还包括:
缓存已建立的服务调用方与服务提供方之间的网络连接;
定期向服务提供方发送心跳报文,其中,所述心跳报文用于保持所述服务调用方与所述服务提供方之间的网络连接。
4.如权利要求1所述的方法,其特征在于,所述解析结果中至少包括预加载服务清单,其中,所述预加载服务清单包含当前执行预热连接操作的业务服务,其中,根据解析结果,对所述业务服务执行连接预热操作,包括:
根据所述预加载服务清单,获取当前执行预热连接操作的服务提供方的设备地址列表;
根据所述当前执行预热连接操作的服务提供方的设备地址列表,建立当前执行预热连接操作的服务调用方与服务提供方之间的网络连接。
5.如权利要求1所述的方法,其特征在于,根据解析结果,对所述业务服务执行连接预热操作,包括:
在执行连接预热操作的过程中,阻塞正在初始化或未初始化的服务代理对象的服务调用请求。
6.一种基于分布式服务调用的连接预热系统,其特征在于,包括:
策略解析执行装置,用于解析用户自定义的预热配置信息,其中,所述预热配置信息至少包括预热范围,所述预热范围用于确定应用中执行连接预热操作的业务服务,所述连接预热操作为在应用系统启动时建立服务调用方与服务提供方之间网络连接的操作;
连接预热装置,与所述策略解析执行装置连接,用于根据解析结果,对所述业务服务执行连接预热操作;
所述系统还包括:用户决策定义装置,所述用户决策定义装置包括:
预热范围配置单元,用于配置应用中执行连接预热操作的业务服务;
预热种类配置单元,用于配置所述业务服务执行连接预热操作的功能是否开启,以及开启后使用的预热模式;其中,所述预热模式包括阻塞预热模式或非阻塞预热模式,所述阻塞预热模式为在所述应用系统启动过程中,按照串行方式完成服务代理对象的创建和初始化操作的模式,所述非阻塞预热模式为在所述应用系统启动过程中只完成服务代理对象的创建操作,且在所述应用系统启动完成后按照并发方式完成服务代理对象初始化操作的模式;其中,所述服务代理对象为服务调用方创建的代理对象,用于所述服务调用方基于分布式调用服务提供方提供的服务;
预热并发度配置单元,用于配置所述非阻塞预热模式下,并发初始化服务代理对象的数量。
7.如权利要求6所述的系统,其特征在于,所述策略解析执行装置包括:
策略解析单元,用于解析用户自定义的预热配置信息,得到执行连接预热操作的参数配置信息;
策略执行单元,与所述策略解析单元连接,用于根据参数配置信息执行预热初始化操作。
8.如权利要求6所述的系统,其特征在于,所述连接预热装置包括:
地址库单元,用于获取全量服务提供方的设备地址列表;
连接预热单元,与所述地址库单元连接,用于基于所述设备地址列表,根据解析结果,建立当前执行预热连接操作的服务调用方与服务提供方之间的网络连接;
连接存储单元,与所述连接预热单元连接,用于存储已成功建立的网络连接。
9.如权利要求6所述的系统,其特征在于,所述系统还包括:冲突解决装置,与所述连接预热装置连接,用于在执行连接预热操作的过程中,阻塞正在初始化或未初始化的服务代理对象的服务调用请求。
10.如权利要求9所述的系统,其特征在于,所述冲突解决装置包括:
代理缓存单元,用于缓存已创建的服务代理对象;
代理初始化单元,与所述代理缓存单元连接,用于执行建立服务代理对象与服务提供方之间网络连接的初始化操作;
冲突解决单元,与所述代理缓存单元连接,用于在执行连接预热操作的过程中,阻塞所述代理缓存单元中不存在的服务代理对象的服务调用请求。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一所述的基于分布式服务调用的连接预热方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至5任一所述基于分布式服务调用的连接预热方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811293091.7A CN109522055B (zh) | 2018-11-01 | 2018-11-01 | 基于分布式服务调用的连接预热方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811293091.7A CN109522055B (zh) | 2018-11-01 | 2018-11-01 | 基于分布式服务调用的连接预热方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522055A CN109522055A (zh) | 2019-03-26 |
CN109522055B true CN109522055B (zh) | 2022-04-05 |
Family
ID=65773922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811293091.7A Active CN109522055B (zh) | 2018-11-01 | 2018-11-01 | 基于分布式服务调用的连接预热方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522055B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413395A (zh) * | 2019-07-30 | 2019-11-05 | 中国工商银行股份有限公司 | 服务调用预热方法、装置、设备及存储介质 |
CN110933152B (zh) * | 2019-11-21 | 2022-04-22 | 北京奇艺世纪科技有限公司 | 一种预热方法、装置、系统及电子设备 |
CN112769945B (zh) * | 2021-01-19 | 2023-02-03 | 中国工商银行股份有限公司 | 分布式服务调用方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103686860A (zh) * | 2011-07-15 | 2014-03-26 | 上海华为技术有限公司 | 缓存数据的分布缓存方法和装置 |
WO2015019954A1 (ja) * | 2013-08-09 | 2015-02-12 | Kddi株式会社 | 接続前情報要求を送信可能な無線端末との接続を制御する中継装置、プログラム及び方法 |
CN104363110A (zh) * | 2014-10-29 | 2015-02-18 | 国家电网公司 | 一种基于画面计算服务的ems人机画面监控系统及实现方法 |
CN105119986A (zh) * | 2015-08-12 | 2015-12-02 | 国家电网公司 | 一种基于预连接的Web反向代理方法 |
CN106528210A (zh) * | 2016-10-20 | 2017-03-22 | 广东欧珀移动通信有限公司 | 一种应用程序的运行方法及装置 |
CN107203429A (zh) * | 2016-03-18 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种基于分布式锁加载分布式任务的方法以及装置 |
CN107491334A (zh) * | 2017-08-29 | 2017-12-19 | 四川长虹电器股份有限公司 | 一种预加载文件的组织和加载方法 |
-
2018
- 2018-11-01 CN CN201811293091.7A patent/CN109522055B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103686860A (zh) * | 2011-07-15 | 2014-03-26 | 上海华为技术有限公司 | 缓存数据的分布缓存方法和装置 |
WO2015019954A1 (ja) * | 2013-08-09 | 2015-02-12 | Kddi株式会社 | 接続前情報要求を送信可能な無線端末との接続を制御する中継装置、プログラム及び方法 |
CN104363110A (zh) * | 2014-10-29 | 2015-02-18 | 国家电网公司 | 一种基于画面计算服务的ems人机画面监控系统及实现方法 |
CN105119986A (zh) * | 2015-08-12 | 2015-12-02 | 国家电网公司 | 一种基于预连接的Web反向代理方法 |
CN107203429A (zh) * | 2016-03-18 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种基于分布式锁加载分布式任务的方法以及装置 |
CN106528210A (zh) * | 2016-10-20 | 2017-03-22 | 广东欧珀移动通信有限公司 | 一种应用程序的运行方法及装置 |
CN107491334A (zh) * | 2017-08-29 | 2017-12-19 | 四川长虹电器股份有限公司 | 一种预加载文件的组织和加载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109522055A (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8290998B2 (en) | Systems and methods for generating cloud computing landscapes | |
JP3853592B2 (ja) | 分散ウェブアプリケーションサーバ | |
JP4729172B2 (ja) | 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置 | |
US7831734B2 (en) | Method and system for remote configuration of network devices | |
EP3276488B1 (en) | Deployment system for multi-node applications | |
US9110750B2 (en) | Application installation system | |
CN109522055B (zh) | 基于分布式服务调用的连接预热方法及系统 | |
US8032588B2 (en) | System and method for hosting one or more versions of a service using a service proxy | |
US20060010234A1 (en) | Dynamic provisioning of service components in a distributed system | |
US8145593B2 (en) | Framework for web services exposing line of business applications | |
US9342333B2 (en) | Backend custom code extensibility | |
WO2019047821A1 (zh) | 业务路由的方法、装置及存储介质 | |
US8296774B2 (en) | Service-based endpoint discovery for client-side load balancing | |
EP3668057A1 (en) | Method and system for cross-platform deployment | |
US9069638B2 (en) | Update system to synchronize changes from external sources for a java virtual machine | |
US20230205503A1 (en) | Method for dynamically integrating application programs, and software system and machine using the same | |
US9141442B1 (en) | Automated connector creation for provisioning systems | |
CN115268949A (zh) | 一种镜像预热方法、装置、设备及存储介质 | |
FI120286B (fi) | Menetelmä ja laitejärjestely palvelin-asiakaslaite-ympäristön hallitsemiseksi | |
US10936693B2 (en) | Locating and executing objects in a distributed network | |
CN110730197B (zh) | 一种服务发现方法和系统 | |
CN111309474A (zh) | 通信方法、通信装置及分布式服务注册中心 | |
CN115361279A (zh) | 配置数据的更新方法、装置、电子设备及计算机可读介质 | |
CN112491948B (zh) | 非侵入式的单体应用微服务化方法、装置及计算机设备 | |
TWI381314B (zh) | 中介軟體橋接系統及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |