一种服务端实例确定方法、系统、客户端及存储介质与流程

文档序号:18898631发布日期:2019-10-18 21:37阅读:123来源:国知局
一种服务端实例确定方法、系统、客户端及存储介质与流程

本申请涉及服务端实例确定技术领域,更具体地说,涉及一种服务端实例确定方法、系统及一种客户端和一种计算机可读存储介质。



背景技术:

随着微服务架构的日益兴盛,更多的企业选择微服务架构来部署线上业务,随着业务的不断增长,服务碎片化严重,服务端实例数大大增长,多机器、跨机房、跨运营商部署的情况越来越多。其中,服务端实例是指部署在服务器上的一个程序。例如客户端通过http请求获取用户信息,域名指向的服务端上部署的处理该请求的程序就是一个服务端实例。

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于http的restfulapi)。每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。也就是说,微服务架构是指每个服务都有多份部署在不同服务器上的服务端实例,客户端需要访问该服务时,随意连接其中任意一个服务端实例即可。

目前的相关技术中,客户端在确定服务端实例时,还只是通过轮询、随机或按权重随机等方式确定服务端实例,该服务端实例往往是比较差的服务端实例,导致与客户端的连通性、服务提供的稳定性及信息交互的传递效率均较差,在实际应用场景及跨机房跨运营商的部署环境中,为了保证连通性、稳定性和传输效率,需要人为进行干预配置。

因此,如何确定更优的服务端实例,进而提高与客户端的连通性、服务提供的稳定性及信息交互的传递效率,避免人为干预配置是本领域技术人员亟需解决的技术问题。



技术实现要素:

本申请的目的在于提供一种服务端实例确定方法、系统及一种客户端和一种计算机可读存储介质,能够确定更优的服务端实例,进而提高与客户端的连通性、服务提供的稳定性及信息交互的传递效率,避免人为干预配置。

为实现上述目的,本申请提供了一种服务端实例确定方法,应用于客户端,包括:

获取目标服务对应的所有服务端实例的配置信息;

根据所述配置信息,尝试连接所述服务端实例,并获取与所述客户端连接的连通性及连接延时数据;

根据所述连通性及所述连接延时数据,确定目标服务端实例。

优选地,所述根据所述配置信息,尝试连接所述服务端实例并获取与所述客户端连接成功的服务端实例的连接延时数据,包括:

根据所述配置信息,从所有所述服务端实例中筛选出第一服务端实例;其中,所述第一服务端实例为部署在负载低于预设阈值的服务器上的服务端实例,所述配置信息包括服务器负载信息;

尝试连接各个所述第一服务端实例,并获取第二服务端实例的连通性及连接延时数据;其中,所述第二服务端实例为与所述客户端连接成功的第一服务端实例。

优选地,所述尝试连接各个所述第一服务端实例,并获取第二服务端实例的连通性及连接延时数据,包括:

判断任一所述第一服务端实例所在服务器的ip地址的数量是否大于1;

若所述第一服务端实例所在所述服务器的所述ip地址的数量大于1,则尝试连接所有所述ip地址,并获取各个所述ip地址的连接状态信息;

根据所述连接状态信息,确定所有所述ip地址中的目标ip地址;

连接所述第一服务端实例对应的目标ip地址,并获取所述第二服务端实例的所述连接延时数据。

优选地,所述根据所述连通性及所述连接延时数据,确定目标服务端实例,包括:

根据所述连通性,将各个所述连接延时数据进行排序,并挑选出满足预设条件的服务端实例作为所述目标服务端实例。

优选地,所述根据所述连通性,将各个所述连接延时数据进行排序,并挑选出满足预设条件的服务端实例作为所述目标服务端实例,包括:

根据所述连通性,将各个所述连接延时数据进行排序,并将延时最低的服务端实例作为所述目标服务端实例。

优选地,所述根据所述连通性及所述连接延时数据,确定目标服务端实例之后,还包括:

实时依据网络状况和负载状况,自适应变更所述目标服务端实例。

优选地,所述实时依据网络状况和负载状况,自适应变更所述目标服务端实例,包括:

判断距离上一次变更所述目标服务端实例的时间间隔是否达到预设时间间隔阈值;

若距离上一次变更所述目标服务端实例的时间间隔达到所述预设时间间隔阈值,则依据所述网络状况和所述负载状况,切换所述目标服务端实例。

为实现上述目的,本申请还提供了一种服务端实例确定系统,应用于客户端,包括:

配置信息获取模块,用于获取目标服务对应的所有服务端实例的配置信息;

连接延时数据获取模块,用于根据所述配置信息,尝试连接所述服务端实例,并获取与所述客户端连接的连通性及连接延时数据;

目标服务端实例确定模块,用于根据所述连通性及所述连接延时数据,确定目标服务端实例。

为实现上述目的,本申请还提供了一种客户端,包括:

存储器和处理器;其中,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述所述的服务端实例确定方法的步骤。

为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的服务端实例确定方法的步骤。

通过以上方案可知,本申请提供的一种服务端实例确定方法,应用于客户端,包括:获取目标服务对应的所有服务端实例的配置信息;根据所述配置信息,尝试连接所述服务端实例,并获取与所述客户端连接的连通性及连接延时数据;根据所述连通性及所述连接延时数据,确定目标服务端实例。

该方法获取与客户端连接的连通性及连接延时数据,并根据连通性及连接延时数据,确定目标服务端实例。由于连通性和连接延时数据反映了客户端和服务端实例之间的连接延时状态,故根据连通性及连接延时数据确定目标服务端实例相比于相关技术中通过轮询、随机或按权重随机等方式确定服务端实例,能够确定更优的服务端实例,进而提高与客户端的连通性、服务提供的稳定性及信息交互的传递效率,避免人为干预配置。本申请还公开了一种服务端实例确定系统及一种客户端和一种计算机可读存储介质,均具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例公开的一种服务端实例部署示意图;

图2为本申请实施例公开的一种服务端实例确定方法的流程图;

图3为本申请实施例公开的另一种服务端实例确定方法的流程图;

图4为本申请实施例公开的另一种服务端实例确定方法的流程图;

图5为本申请实施例公开的一种单服务线路优选示意图;

图6为本申请实施例公开的另一种服务端实例确定方法的流程图;

图7为本申请实施例公开的另一种服务端实例确定方法的流程图;

图8为本申请实施例公开的另一种服务端实例确定方法的流程图;

图9为本申请实施例公开的一种直播调度服务示意图;

图10为本申请实施例公开的一种服务端实例确定系统的结构框图;

图11为本申请实施例公开的一种客户端的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”是用于区别类似的对象,而不是用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

随着微服务架构的日益兴盛,更多的企业选择微服务架构来部署线上业务,随着业务的不断增长,服务碎片化严重,服务端实例数大大增长,多机器、跨机房、跨运营商部署的情况越来越多。其中,服务端实例是指部署在服务器上的一个程序。例如客户端通过http请求获取用户信息,域名指向的服务端上部署的处理该请求的程序就是一个服务端实例。

微服务架构是指每个服务都有多份部署在不同服务器上的服务端实例,客户端需要访问该服务时,随意连接其中任意一个服务端实例即可。具体请参见图1,图1为本申请实施例公开的一种服务端实例部署示意图,如图1所示,左边的虚线框(表示“服务a-集群”)中包含两个实线框,两个实线框中分别是“服务端a-实例1”和“服务端a-实例2”,表示服务a有两个服务端实例(服务端实例1和服务端实例2);右边的虚线框(表示“服务b-集群”)中包含两个实线框,两个实线框中分别是“服务端b-实例1”和“服务端b-实例2”,表示服务b有两个服务端实例(服务端实例1和服务端实例2);图1中“客户端”分别与“服务端a-实例1”、“服务端b-实例1”连接,表示客户端分别与服务a的服务端实例1、服务b的服务端实例1连通。

目前的相关技术中,客户端在确定服务端实例时,还只是通过轮询、随机或按权重随机等方式确定服务端实例,该服务端实例往往是比较差的服务端实例,导致与客户端的连通性、服务提供的稳定性及信息交互的传递效率均较差,在实际应用场景及跨机房跨运营商的部署环境中,为了保证连通性、稳定性和传输效率,需要人为进行干预配置。

因此,本申请的目的在于提供一种服务端实例确定方法,能够确定更优的服务端实例,进而提高与客户端的连通性、服务提供的稳定性及信息交互的传递效率,避免人为干预配置。具体请参见图2,图2为本申请实施例公开的一种服务端实例确定方法的流程图,该服务端实例确定方法具体包括:

s1、获取目标服务对应的所有服务端实例的配置信息;

本实施例的执行主体是客户端,客户端获取目标服务对应的所有服务端实例的配置信息。在此对目标服务不作具体限定,目标服务是所有服务中的一种或多种,通常依据实际需求而定。例如,目标服务为统计服务和/或日志服务。每个服务均具有至少一个服务端实例,且同一服务的各个服务端实例部署在不同的服务器上,每个服务端实例均具有配置信息。在此对配置信息不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,该配置信息通常包括:所在服务器名称、服务名称、服务器ip列表、监听端口、服务器负载等信息中的一种或多种。在此对于各个服务端实例的配置信息的获取对象不作具体限定,客户端可以直接从各个服务端实例所在的服务器分别获取配置信息;还可以从中心服务器的中心数据库获取所有服务端实例的配置信息,前提是各个服务端实例预先将各自的配置信息上报至中心服务器,再由中心服务器统一分类汇总。所有服务端实例的配置信息经由中心服务器统一分类汇总后,不仅误差更小,且所占设备资源更小,故客户端通常是从中心服务器的中心数据库获取所有服务端实例的配置信息。

s2、根据配置信息,尝试连接服务端实例,并获取与客户端连接的连通性及连接延时数据;

客户端在获取目标服务对应的所有服务端实例的配置信息后,根据配置信息,尝试连接服务端实例并获取与客户端连接的连通性及连接延时数据。在步骤s1中,客户端获取的是所有服务端实例的配置信息,而在步骤s2中,客户端尝试连接的服务端实例可以是步骤s1中的所有服务端实例,也可以是从所有服务端实例中筛选出的部分服务端实例。若客户端尝试连接的服务端实例是从所有服务端实例中筛选出的部分服务端实例,在此对于筛选标准不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,例如筛选标准可以为服务端实例所部署的服务器的负载是否低于预设阈值。

无论是所有服务端实例,还是依据筛选标准从所有服务端实例中筛选出的部分服务端实例,客户端在于其尝试连接的过程中有可能与一些服务端实例连接失败,但是无论连接成功与否均具有对应的连接延时数据,该连接延时数据用于表征客户端和尝试连接的服务端实例之间的连接延时状态。

s3、根据连通性及连接延时数据,确定目标服务端实例。

客户端在获取与客户端连接的连通性及连接延时数据后,根据连通性及连接延时数据,确定目标服务端实例。由上文可知,该连接延时数据用于表征客户端和尝试连接的服务端实例之间的连接延时状态,基于此连接延时数据可以确定更优的服务端实例(即目标服务端实例)。可以理解的是,该目标服务端实例是与客户端连接成功的所有服务端实例中的一个服务端实例。本实施例对基于连接延时数据确定目标服务端实例的方式不作具体限定,例如可以是将各个连接延时数据进行排序,然后将延时最低的服务端实例作为目标服务端实例;也可以在将各个连接延时数据进行排序后,筛选出满足预设延时条件的一些服务端实例,再从这些服务端实例中随机挑选一个服务端实例作为目标服务端实例。

该方法获取与客户端连接的连通性及连接延时数据,并根据连通性及连接延时数据,确定目标服务端实例。由于连通性和连接延时数据反映了客户端和服务端实例之间的连接延时状态,故根据连通性及连接延时数据确定目标服务端实例相比于相关技术中通过轮询、随机或按权重随机等方式确定服务端实例,能够确定更优的服务端实例,进而提高与客户端的连通性、服务提供的稳定性及信息交互的传递效率,避免人为干预配置。

基于上述实施例,本实施例中上述根据配置信息,尝试连接服务端实例,并获取与客户端连接的连通性及连接延时数据,通常包括:根据配置信息,从所有服务端实例中筛选出第一服务端实例;其中,第一服务端实例为部署在负载低于预设阈值的服务器上的服务端实例,配置信息包括服务器负载信息;尝试连接各个第一服务端实例,并获取第二服务端实例的连通性及连接延时数据;其中,第二服务端实例为与客户端连接成功的第一服务端实例。具体请参见图3,图3为本申请实施例公开的另一种服务端实例确定方法的流程图,该服务端实例确定方法具体包括:

s1、获取目标服务对应的所有服务端实例的配置信息;

s21、根据配置信息,从所有服务端实例中筛选出第一服务端实例;其中,第一服务端实例为部署在负载低于预设阈值的服务器上的服务端实例,配置信息包括服务器负载信息;

s22、尝试连接各个第一服务端实例,并获取第二服务端实例的连通性及连接延时数据;其中,第二服务端实例为与客户端连接成功的第一服务端实例;

s3、根据连通性及连接延时数据,确定目标服务端实例。

本实施例中限定了客户端尝试连接的服务端实例(即第一服务端实例)为部署在负载低于预设阈值的服务器上的服务端实例,在此对于负载的预设阈值不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,例如可以将该预设阈值设为80%,即部署在负载低于80%的服务器上的服务端实例为第一服务端实例;若没有负载低于80%的服务器,则根据负载将服务器排序,筛选出负载较低的服务器上的服务端实例为第一服务端实例。可以理解的是,本实施例将部署在负载低于预设阈值的服务器上的服务端实例筛选出来,再将客户端与其尝试连接,获取与客户端连接成功的第一服务端实例(即第二服务端实例)的连通性及连接延时数据,相当于进行了确定目标服务端实例的初步筛选。

基于上述实施例,本实施例中上述尝试连接各个第一服务端实例,并获取第二服务端实例的连通性及连接延时数据,通常包括:判断任一第一服务端实例所在服务器的ip地址的数量是否大于1;若第一服务端实例所在服务器的ip地址的数量大于1,则尝试连接所有ip地址,并获取各个ip地址的连接状态信息;根据连接状态信息,确定所有ip地址中的目标ip地址;连接第一服务端实例对应的目标ip地址,并获取第二服务端实例的连接延时数据。具体请参见图4,图4为本申请实施例公开的另一种服务端实例确定方法的流程图,该服务端实例确定方法具体包括:

s1、获取目标服务对应的所有服务端实例的配置信息;

s21、根据配置信息,从所有服务端实例中筛选出第一服务端实例;其中,第一服务端实例为部署在负载低于预设阈值的服务器上的服务端实例,配置信息包括服务器负载信息;

s221、判断任一第一服务端实例所在服务器的ip地址的数量是否大于1;

s222、若第一服务端实例所在服务器的ip地址的数量大于1,则尝试连接所有ip地址,并获取各个ip地址的连接状态信息;

s223、根据连接状态信息,确定所有ip地址中的目标ip地址;

s224、连接第一服务端实例对应的目标ip地址,并获取第二服务端实例的连接延时数据;

s3、根据连通性及连接延时数据,确定目标服务端实例。

本实施例对上述实施例中步骤s22进行了限定,客户端在尝试连接第一服务端实例时,判断任一第一服务端实例所在服务器的ip地址的数量是否大于1。若第一服务端实例所在服务器的ip地址的数量不大于1,由于ip地址的数量是大于0的,故该ip地址的数量等于1,客户端只能与该ip地址尝试连接;若第一服务端实例所在服务器的ip地址的数量大于1,则尝试连接所有ip地址,并获取各个ip地址的连接状态信息。在此对于ip地址的数量及各个ip地址所归属运营商均不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。例如,ip地址的数量有2个,且分别归属于移动和电信(即移动ip地址、电信ip地址);ip地址的数量有3个,且分别归属于移动、电信和联通(即移动ip地址、电信ip地址、联通ip地址)。由于每个ip地址均对应一个连接状态信息,故根据连接状态信息,确定所有ip地址中的目标ip地址。其中,连接状态信息通常包括连通性和连接时长。若第一服务端实例所在服务器的ip地址的数量为1,则只能根据连接状态信息将其确定为目标ip地址;若第一服务端实例所在服务器的ip地址的数量大于1,则根据各个ip地址的连接状态信息,从中确定一个ip地址作为目标ip地址。例如,如图5所示,图5为本申请实施例公开的一种单服务线路优选示意图,图5中服务端a-实例1所在服务器具有三种不同运营商的ip地址(电信ip地址、联通ip地址、移动ip地址),客户端尝试连接所有ip地址,连接状态分别是7毫秒,5毫秒和连接失败,按照结果选择联通ip地址作为目标ip地址。

进一步地,上述若第一服务端实例所在服务器的ip地址的数量大于1,则尝试连接所有ip地址,并获取各个ip地址的连接状态信息,通常包括:若第一服务端实例所在服务器的ip地址的数量大于1,且分别为电信ip地址、联通ip地址、移动ip地址,则尝试连接电信ip地址、联通ip地址及移动ip地址;分别获取信ip地址的连通性和连接时长、联通ip地址的连通性和连接时长、移动ip地址的连通性和连接时长。本实施例限定了第一服务端实例所在服务器的ip地址的数量大于1,且分别为电信ip地址、联通ip地址、移动ip地址。

基于上述任意实施例,本实施例中上述根据连通性及连接延时数据,确定目标服务端实例,通常包括:根据连通性,将各个连接延时数据进行排序,并挑选出满足预设条件的服务端实例作为目标服务端实例。本实施例对上述任意实施例中步骤s3进行了限定,在此以上述某一实施例为例对步骤s3进行限定,上述其他实施例与此类似,具体请参见图6,图6为本申请实施例公开的另一种服务端实例确定方法的流程图,该服务端实例确定方法具体包括:

s1、获取目标服务对应的所有服务端实例的配置信息;

s2、根据配置信息,尝试连接服务端实例,并获取与客户端连接的连通性及连接延时数据;

s31、根据连通性,将各个连接延时数据进行排序,并挑选出满足预设条件的服务端实例作为目标服务端实例。

本实施例中将各个连接延时数据进行排序,并挑选出满足预设条件的服务端实例作为目标服务端实例,在此对排序方式不作具体限定,可以将各个连接延时数据顺序排列,也可以将各个连接延时数据逆序排列。在此对预设条件也不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,例如预设条件可以为延时时间小于10毫秒,则可以先筛选出延时时间小于10毫秒的所有服务端实例,若满足该预设条件的服务端实例的数量为1,则将该服务端实例确定为目标服务端实例;若满足该预设条件的服务端实例的数量大于1,则再从这些服务端实例中确定出目标服务端实例,具体确定方式也不作限定,可以从这些服务端实例中随机确定出一个服务端实例作为目标服务端实例。

基于上述任意实施例,本实施例中上述根据连通性,将各个连接延时数据进行排序,并挑选出满足预设条件的服务端实例作为目标服务端实例,通常包括:根据连通性,将各个连接延时数据进行排序,并将延时最低的服务端实例作为目标服务端实例。本实施例对上述步骤s31进行了进一步地限定,具体请参见图7,图7为本申请实施例公开的另一种服务端实例确定方法的流程图,该服务端实例确定方法具体包括:

s1、获取目标服务对应的所有服务端实例的配置信息;

s2、根据配置信息,尝试连接服务端实例,并获取与客户端连接的连通性及连接延时数据;

s311、根据连通性,将各个连接延时数据进行排序,并将延时最低的服务端实例作为目标服务端实例。

本实施例将步骤s31中的满足预设条件的服务端实例限定为延时最低的服务端实例,故确定的目标服务端实例为最优的服务端实例,能够进一步提高与客户端的连通性、服务提供的稳定性及信息交互的传递效率。

基于上述任意实施例,本实施例中上述根据连通性及连接延时数据,确定目标服务端实例之后,通常还可以包括:实时依据网络状况和负载状况,自适应变更目标服务端实例。具体请参见图8,图8为本申请实施例公开的另一种服务端实例确定方法的流程图,该服务端实例确定方法具体包括:

s1、获取目标服务对应的所有服务端实例的配置信息;

s2、根据配置信息,尝试连接服务端实例,并获取与客户端连接的连通性及连接延时数据;

s3、根据连通性及连接延时数据,确定目标服务端实例;

s4、实时依据网络状况和负载状况,自适应变更目标服务端实例。

本实施例在确定目标服务端实例后,可以实时依据网络状况和负载状况,自适应变更目标服务端实例。可以理解的是,本实施例会实时检测网络状况和负载状况,再依据网络状况和负载状况,自适应变更目标服务端实例。在此对各个相邻两次检测网络状况和负载状况的时长不作具体限定,可以所有相邻两次检测网络状况和负载状况的时长均是相同的(例如,每间隔5秒检测网络状况和负载状况,然后依据网络状况和负载状况,自适应变更目标服务端实例),也可以各个相邻两次检测网络状况和负载状况的时长是部分相同的或均是不同的,应由本领域技术人员根据实际情况作出相应的设定。

基于上述任意实施例,本实施例中上述实时依据网络状况和负载状况,自适应变更目标服务端实例,包括:判断距离上一次变更目标服务端实例的时间间隔是否达到预设时间间隔阈值;若距离上一次变更目标服务端实例的时间间隔达到预设时间间隔阈值,则依据网络状况和负载状况,切换目标服务端实例。

在此对于网络状况和负载状况不作具体限定,需根据实际情况而定,例如,网络较差且负载较大、网络较好且负载较小、网络较差但负载较小、网络较好但负载较大。上述自适应变更目标服务端实例,主要依据网络状况和负载状况而定,例如,若网络较差且负载较大,则变更目标服务端实例;若网络较好且负载较小,则无需变更目标服务端实例。优选地,在客户端连接服务的使用过程中,会间隔5秒尝试一次上述服务端实例确定方法,重新选出最好的服务端实例(即目标服务端实例),如果距离上次切换目标服务端实例时间超过1分钟,则尝试切换服务更好的目标服务端实例,如果距离上次切换时间低于1分钟,则不切换,防止因网络抖动引起的频繁切换线路。在连接被动断开时,立刻根据上述服务端实例确定方法,重新确定出目标服务端实例。

本实施例相比于相关技术,可以避免人为干预配置,动态适应,随着网络情况和负载情况的变化,客户端可以自适应,随时变更服务端实例,达到高效稳定的目的,且体现出微服务的灵活性和可动态扩展性。

下面以直播调度服务为例,在复杂部署环境下的达到集群稳定服务的目的,如图9所示,图9为本申请实施例公开的一种直播调度服务示意图,由图9可知,本案例一共有“统计服务”和“日志服务”两个服务,各有两个服务端实例,分布在a、b两个机房。其中,“统计服务”的两个服务端实例分别为实例d和实例h,“日志服务”的两个服务端实例分别为实例f和实例k。a机房中有服务器c和服务器e,服务器c可以提供统计服务,具体部署的服务端实例为实例d,ip地址分为电信ip地址和联通ip地址;服务器e可以提供日志服务,具体部署的服务端实例为实例f,ip地址分为移动ip地址和电信ip地址。b机房中有服务器g、服务器j和服务器l,服务器g可以提供统计服务,具体部署的服务端实例为实例h,ip地址为移动ip地址;服务器j可以提供日志服务,具体部署的服务端实例为实例k,ip地址为电信ip地址;服务器l为中心服务器,设有数据库。

四个服务端实例(实例d、实例h、实例f和实例k)分别将各自的配置信息上报至数据库,客户端连接到数据库,获取这些配置信息。对于“统计服务”,分别探测实例d、实例h的连通性和延时,最终选择实例d的电信ip地址作为连接点。对于“日志服务”,分别探测实例f、实例k的连通性和延时,最终选择实例k的电信ip地址作为连接点。当“日志服务”的实例k连接异常时,客户端重新选择,切换到实例f的电信ip地址。

下面对本申请实施例提供的一种服务端实例确定系统进行介绍,下文描述的一种服务端实例确定系统与上文描述的一种服务端实例确定方法可以相互参照。

参见图10,图10为本申请实施例公开的一种服务端实例确定系统的结构框图,如图10所示,包括:

配置信息获取模块1001,用于获取目标服务对应的所有服务端实例的配置信息;

连接延时数据获取模块1002,用于根据配置信息,尝试连接服务端实例,并获取与客户端连接的连通性及连接延时数据;

目标服务端实例确定模块1003,用于根据连通性及连接延时数据,确定目标服务端实例。

基于上述实施例,本实施例中连接延时数据获取模块1002,包括:

服务端实例筛选子模块,用于根据配置信息,从所有服务端实例中筛选出第一服务端实例;其中,第一服务端实例为部署在负载低于预设阈值的服务器上的服务端实例,配置信息包括服务器负载信息;

连接延时数据获取子模块,用于尝试连接各个第一服务端实例,并获取第二服务端实例的连通性及连接延时数据;其中,第二服务端实例为与客户端连接成功的第一服务端实例。

基于上述实施例,本实施例中连接延时数据获取子模块,包括:

ip地址数量判断单元,用于判断任一第一服务端实例所在服务器的ip地址的数量是否大于1;

连接状态信息获取单元,用于若第一服务端实例所在服务器的ip地址的数量大于1,则尝试连接所有ip地址,并获取各个ip地址的连接状态信息;

目标ip地址确定单元,用于根据连接状态信息,确定所有ip地址中的目标ip地址;

连接延时数据获取单元,用于连接第一服务端实例对应的目标ip地址,并获取第二服务端实例的连接延时数据。

基于上述任意实施例,本实施例中目标服务端实例确定模块1003,包括:

目标服务端实例确定子模块,用于根据连通性,将各个连接延时数据进行排序,并挑选出满足预设条件的服务端实例作为目标服务端实例。

基于上述实施例,本实施例中目标服务端实例确定子模块,包括:

目标服务端实例确定单元,用于根据连通性,将各个连接延时数据进行排序,并将延时最低的服务端实例作为目标服务端实例。

基于上述实施例,本实施例中服务端实例确定系统还包括:

目标服务端实例变更模块,用于实时依据网络状况和负载状况,自适应变更目标服务端实例。

基于上述实施例,本实施例中目标服务端实例变更模块,包括:

时间间隔判断子模块,用于判断距离上一次变更目标服务端实例的时间间隔是否达到预设时间间隔阈值;

目标服务端实例切换子模块,用于若距离上一次变更目标服务端实例的时间间隔达到预设时间间隔阈值,则依据网络状况和负载状况,切换目标服务端实例。

本申请还提供一种客户端,包括:存储器和处理器;其中,存储器用于存储计算机程序,处理器用于执行计算机程序时实现上述任意实施例的服务端实例确定方法的步骤。该客户端可以是pc(personalcomputer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机等终端设备。参见图11,图11为本申请实施例公开的一种客户端的结构示意图,如图11所示,可以包括存储器11、处理器12和总线13。

其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是客户端的内部存储单元,例如该客户端的硬盘。存储器11在另一些实施例中也可以是客户端的外部存储设备,例如客户端上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器11还可以既包括客户端的内部存储单元也包括外部存储设备。

处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,实现上述任意实施例提供的服务端实例确定方法。

总线13可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

图11仅示出了具有组件11-13的客户端,本领域技术人员可以理解的是,图11示出的结构并不构成对客户端的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的服务端实例确定方法的步骤。该计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1