服务实例的部署方法、装置及一致性服务系统与流程

文档序号:25604730发布日期:2021-06-25 13:16阅读:124来源:国知局
服务实例的部署方法、装置及一致性服务系统与流程

1.本发明涉及云服务技术领域,更具体地,涉及一种服务实例的部署方法、一种服务实例的部署装置、一种一致性服务系统、及一种计算机可读存储介质。


背景技术:

2.在分布式系统中,分布式一致性服务系统一般基于c/s架构(客户/服务架构)来实现,服务一般由多个服务实例形成的多个节点提供服务,以保证一致性和可用性。客户端提供接口给用户或应用方来访问分布式一致性服务。
3.在分布式一致性服务系统中,默认一台物理机只会部署一个应用方的服务实例。例如,在有两个应用方的服务实例的情况下,一台物理机只部署一个应用方的服务实例的效果可以是如图1a所示。
4.但是在池化的概念中,单台物理机可以部署多个应用方的服务实例,这样可以最大化利用每台物理机的资源,组成一个服务实例的池子。在有两个应用方的服务实例的情况下,单台物理机可以部署多个应用方的服务实例的效果可以是如图1b所示。
5.在如图1b所示的部署方式中,如果单台物理机部署三个服务实例,理论上就能减少两倍数量的物理机。但是这其中存在一些缺陷,如果物理机故障,影响的应用方的数量增多,这也就意味着爆炸半径变大了。在一台物理机只会部署一个应用方的服务实例的情况下,每个应用方对应的多数派物理机故障,只会导致一个应用方不能提供服务,但是在如图1b所示的池化方案中,可能会导致多个应用方不能提供服务。


技术实现要素:

6.本发明实施例的一个目的是提供一种在一致性服务系统中部署服务实例的新技术方案。
7.根据本发明的第一方面,提供了一种服务实例的部署方法,包括:
8.响应于目标应用方加入一致性服务系统的请求,获取所述目标应用方待部署的目标服务实例;
9.获取在所述一致性服务系统的物理机上已部署的至少一个其他应用方的服务实例的当前组合,其中,所述组合用于表征每台物理机上所部署的服务实例;
10.根据所述目标服务实例和所述服务实例的当前组合,得到符合预设条件的服务实例的目标组合;
11.根据所述服务实例的目标组合,将所述目标服务实例部署在所述一致性服务系统中对应的物理机上。
12.可选的,所述目标应用方的目标服务实例采用多数派机制维持一致性。
13.可选的,所述根据所述目标服务实例和所述服务实例的当前组合,得到符合预设条件的服务实例的目标组合之前还包括:
14.获取每台物理机最多部署服务实例的第一数量;
15.获取所述目标应用方待部署的目标服务实例的第二数量;
16.根据所述第一数量和所述第二数量,得到所述预设条件。
17.可选的,所述预设条件包括:
18.每台物理机上部署服务实例的数量小于或等于对应的第一数量;
19.每台物理机上至多部署一个目标服务实例;以及,
20.所述目标应用方与每一其他应用方部署在同一物理机中的服务实例的数量少于所述第二数量的一半。
21.可选的,所述根据所述目标服务实例和所述服务实例的当前组合,得到符合预设条件的服务实例的目标组合的步骤包括:
22.根据所述目标服务实例和所述服务实例的当前组合,得到多个服务实例的备选组合;
23.选取任一符合所述预设条件的服务实例的备选组合,作为所述服务实例的目标组合;或者,选取占用物理机最少的服务实例的备选组合,作为所述服务实例的目标组合。
24.可选的,所述根据所述目标服务实例和所述服务实例的当前组合,得到多个服务实例的备选组合的步骤包括:
25.将目标服务实例对应增加至服务实例的当前组合中,得到多个服务实例的备选组合。
26.可选的,所述方法还包括:
27.接收目标应用方对应的目标客户端发出的数据读取请求,在超过半数的目标服务实例响应所述读取请求并返回对应的应答结果的情况下,将所述应答结果返回至所述目标客户端。
28.可选的,所述方法还包括:
29.接收目标应用方对应的目标客户端发出的更新目标数据的命令,在超过半数的目标服务实例执行所述命令的服务实例的情况下,完成所述目标数据的更新。
30.可选的,所述根据所述新的服务实例组合,将所述目标服务实例部署在所述一致性服务系统中对应的物理机上的步骤包括:
31.根据所述新的服务实例组合,在所述一致性服务系统中对应的物理机中创建应用容器引擎;
32.将所述目标服务实例部署在所述应用容器引擎中。
33.可选的,所述方法还包括:
34.提供触发加入一致性服务系统的请求的入口。
35.根据本发明的第二方面,提供了一种服务实例的部署装置,包括:
36.响应模块,用于响应于目标应用方加入一致性服务系统的请求,获取所述目标应用方待部署的目标服务实例;
37.获取模块,获取在所述一致性服务系统的物理机上已部署的至少一个其他应用方的服务实例的当前组合,其中,所述组合用于表征每台物理机上所部署的服务实例;
38.组合模块,用于根据所述目标服务实例和所述服务实例的当前组合,得到符合预设条件的服务实例的目标组合;
39.部署模块,用于根据所述服务实例的目标组合,将所述目标服务实例部署在所述
一致性服务系统中对应的物理机上。
40.根据本发明的第三方面,提供了一种一致性服务系统,包括根据本发明第二方面所述的装置;或者,包括处理器和存储器,所述存储器用于存储可执行的指令,所述指令用于控制所述处理器执行根据本发明第一方面所述的方法。
41.根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如本发明第一方面所述的方法。
42.在本发明的实施例中,通过响应于目标应用方加入一致性服务系统的请求,获取目标应用方待部署的目标服务实例、及一致性服务系统中已部署的服务实例的当前组合,根据目标服务实例和服务实例的当前组合得到服务号预设条件的服务实例的目标组合,并根据服务实例的目标组合,将目标服务实例部署在一致性服务系统中,可以提供了一种池化服务的部署方式,使得物理机故障造成的爆炸半径最小化。
43.通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
44.被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
45.图1a是现有技术中一台物理机部署一个应用方的服务实例的示意图。
46.图1b是现有技术中一台物理机部署多个应用方的服务实例的示意图。
47.图2是根据本发明实施例的一致性服务系统系统的一个例子的配置结构示意图。
48.图3示出了本发明的实施例的服务实例的部署方法的流程图。
49.图4a示出了一致性服务系统中目标服务实例的部署效果的第一个例子的示意图。
50.图4b示出了一致性服务系统中目标服务实例的部署效果的第二个例子的示意图。
51.图4c示出了一致性服务系统中目标服务实例的部署效果的第三个例子的示意图。
52.图5示出了一致性服务系统所能部署的服务实例所对应的应用方的个数随中物理机的数量变化的趋势图。
53.图6示出了本发明的实施例的服务实例的部署装置的框图。
54.图7示出了本发明的实施例的一致性服务系统的框图。
具体实施方式
55.现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
56.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
57.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
58.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
59.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
60.<硬件配置>
61.在分布式系统中,分布式一致性服务系统一般基于c/s架构(客户/服务架构)来实现,服务一般由多个服务实例形成的多个节点提供服务,以保证一致性和可用性。客户端提供接口给用户或应用方来访问分布式一致性服务。
62.在分布式一致性服务系统中,默认一台物理机只会部署一个应用方的服务实例。例如,在有两个应用方的服务实例的情况下,一台物理机只部署一个应用方的服务实例的效果可以是如图1a所示。
63.但是在池化的概念中,单台物理机可以部署多个应用方的服务实例,这样可以最大化利用每台物理机的资源,组成一个服务实例的池子。在有两个应用方的服务实例的情况下,单台物理机可以部署多个应用方的服务实例的效果可以是如图1b所示。
64.在如图1b所示的部署方式中,如果单台物理机部署三个服务实例,理论上就能减少两倍数量的物理机。但是这其中存在一些缺陷,如果物理机故障,影响的应用方的数量增多,这也就意味着爆炸半径变大了。在一台物理机只会部署一个应用方的服务实例的情况下,每个应用方对应的多数派物理机故障,只会导致一个应用方不能提供服务,但是在如图1b所示的池化方案中,可能会导致多个应用方不能提供服务。
65.如图2所示,一致性服务系统1000可以包括管理服务器1100、多个物理机1200以及网络1300。
66.在一致性服务系统1000中,管理服务器1100可以是负责整个集群的控制和管理。物理机1200作为该集群的一个节点,可以部署一个或多个应用方的服务实例。或者,物理机1200还可以运行有一个或多个容器,每个容器内可以运行一个应用方的服务实例。
67.管理服务器1100例如可以是刀片服务器等。在一个例子中,管理服务器1100可以是一台或多台计算机。在在另一个例子中,管理服务器1100可以如图2所示,包括处理器1110、存储器1120、接口装置1130、通信装置1140、显示装置1150、输入装置1160。尽管服务器也可以包括扬声器、麦克风等等,但是,这些部件与本发明无关,故在此省略。其中,处理器1110例如可以是中央处理器cpu、微处理器mcu等。存储器1120例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1130例如包括usb接口、串行接口等。通信装置1140例如能够进行有线或无线通信。显示装置1150例如是液晶显示屏。输入装置1160例如可以包括触摸屏、键盘等。
68.物理机1200也可以一台或多台计算机。如图2所示,物理机1200可以包括处理器1210、存储器1220、接口装置1230、通信装置1240、显示装置1250、输入装置1260、扬声器1270、麦克风1280,等等。其中,处理器1210可以是中央处理器cpu、微处理器mcu等。存储器1220例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1230例如包括usb接口、耳机接口等。通信装置1240例如能够进行有线或无线通信。显示装置1250例如是液晶显示屏、触摸显示屏等。输入装置1260例如可以包括触摸屏、键盘等。用户可以通过扬声器1270和麦克风1280输入/输出语音信息。
69.网络1300可以是无线网络也可以网络,可以是局域网也可以是广域网。在图2所示的配置环境1000中,及管理服务器1100与物理机1200-1、1200-2、1200-3可以通过网络1300
进行通信。
70.图2所示的配置环境1000仅是解释性的,并且决不是为了要限制本发明、其应用或用途。
71.应用于本发明的实施例中,管理服务器1100的所述存储器1120用于存储指令,所述指令用于控制所述处理器1110进行操作以执行本发明任意实施例提供管理服务器所实施的方法。
72.物理机1200的所述存储器1220用于存储指令,所述指令用于控制所述处理器1210进行操作,以执行本发明任意实施例提供的物理机所实施的方法。
73.本领域技术人员应当理解,尽管在图2中对管理服务器1100和物理机1200都示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,管理服务器1100只涉及处理器1110和存储器1120,或者物理机1200只涉及处理器1210和存储器1220等。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
74.<方法实施例>
75.图3为根据本发明实施例的服务实例的部署方法的示意性流程图。
76.在一个例子中,图3所示的服务实例的部署方法可以是由一致性服务系统实施,该一致性服务系统可以是如图2所示的一致性服务系统1000。
77.如图3所示,本实施例的服务实例的部署方法包括如下步骤s3100~s3400:
78.步骤s3100,响应于目标应用方加入一致性服务系统的请求,获取目标应用方待部署的目标服务实例。
79.具体的,目标应用方是用于向用户提供服务的业务,需要在一致性服务系统中部署目标服务实例。
80.本实施例中的一致性服务系统,可以是多个节点的数据具有一致性的分布式系统。
81.数据的一致性可以为强一致性、弱一致性或最终一致性。强一致性可以是数据更新成功后,任意时刻所有副本中的数据都是一致的,一般采用同步的方式实现。弱一致性可以是数据更新成功后,系统不承诺立即可以读到最新写入的值,也不承诺具体多久之后可以读到。最终一致性可以是弱一致性的一种形式,数据更新成功后,系统不承诺立即可以返回最新写入。
82.在一个实施例中,目标应用方的目标服务实例采用多数派机制维持一致性,具体的,每次需要经过半数以上的目标服务实例响应,目标应用方才可以提供相应的服务。
83.在本实施例中,目标服务实例的数量可以是k,其中,k为大于1的整数,那么,半数以上的目标服务实例的数量可以是任意小于等于k、且大于等于的整数。
84.步骤s3200,获取在一致性服务系统的物理机上已部署的至少一个其他应用方的服务实例的当前组合。
85.当前组合可以表征一致性服务系统中的每台物理机上所部署服务实例。
86.在如图4a所示的实施例中,物理机1~5上部署有服务实例a,物理机6~10上未部署服务实例。那么,当前组合可以是{(a);(a);(a);(a);(a);();();();();()}。
87.在如图4b所示的实施例中,物理机1上部署有服务实例a和服务实例b,物理机2上部署有服务实例a和服务实例b,物理机3上部署有服务实例a,物理机4上部署有服务实例a,物理机5上部署有服务实例a,物理机6上部署有服务实例b,物理机7上部署有服务实例b,物理机8上部署有服务实例b,物理机9和物理机10上未部署服务实例。那么,当前组合可以是{(a,b);(a,b);(a);(a);(a);(b);(b);(b);();()}。
88.在如图4c所示的实施例中,物理机1上部署有服务实例a和服务实例b,物理机2上部署有服务实例a和服务实例b,物理机3上部署有服务实例a和服务实例c,物理机4上部署有服务实例a和服务实例c,物理机5上部署有服务实例a,物理机6上部署有服务实例b和服务实例c,物理机7上部署有服务实例b和服务实例c,物理机8上部署有服务实例b,物理机9上部署有服务实例c,物理机10上未部署服务实例。那么,当前组合可以是{(a,b);(a,b);(a,c);(a,c);(a);(b,c);(b,c);(b);(c);()}。
89.步骤s3300,根据目标服务实例和服务实例的当前组合,得到符合预设条件的服务实例的目标组合。
90.在本发明的一个实施例中,在执行步骤s3300之前,该方法还可以包括如下获取预设条件的步骤:
91.获取每台物理机最多部署服务实例的第一数量;获取目标应用方待部署的目标实例的第二数量;根据第一数量和第二数量,得到预设条件。
92.其中,第一数量可以是根据一致性服务系统中对应物理机的性能确定。如果一台物理机对应的第一数量为10,那么,该物理机上最多可以部署10个服务实例,且无法部署第11个实例。
93.进一步地,一致性服务系统中每台物理机最多部署服务实例的第一数量可以相同,也可以不同。
94.在一个实施例中,预设条件可以包括:
95.每台物理机上部署服务实例的数量小于或等于对应的第一数量;
96.每台物理机上至多部署一个目标服务实例;以及,
97.目标应用方与每一其他应用方部署在同一物理机中的服务实例的数量少于第二数量的一半。
98.例如,一致性服务系统中包含m台物理机,第m个物理机最多部署服务实例的第一数量为n
m
,m∈[1,m],其他应用方的数量为t,目标应用方x的目标服务实例的数量为k,假设第m个物理机上是否部署有第t个其他应用方的服务实例的公式可以表示为当q
m,t
=0时,表示第m个物理机上未部署有第t个其他应用方的服务实例;当q
m,t
=1时,表示第m个物理机上部署有第t个其他应用方的服务实例。第m个物理机上是否部署有目标应用方x的服务实例的公式可以表示为第m个物理机上是否部署有目标应用方x的服务实例的公式可以表示为当q
m,x
=0时,表示第m个物理机上未部署有目标应用方的服务实例;当q
m,x
=1时,表示第m个物理机上部署有目标应用方的服务实例。
[0099]
那么,每台物理机上部署服务实例的数量小于或等于对应的第一数量可以表示为:
[0100][0101]
每台物理机上至多部署一个目标服务实例,即部署目标服务实例的物理机的数量与目标服务实例的数量相等,因此,每台物理机上至多部署一个目标服务实例可以表示为:
[0102][0103]
目标应用方与每一其他应用方部署在同一物理机中的服务实例的数量少于第二数量的一半可以表示为:
[0104][0105]
在本实施例中,目标应用方的目标服务实例在同时满足公式1、2、3的情况下,就可以保证挂掉任意n(其中n为大于等于1且小于的整数)台机器,最多只会影响单个应用方,因为假设影响了目标应用方,意味着目标应用方在这n台机器都部署有对应的服务实例,根据公式3,意味着其他应用方在这个n机器上面部署的实例少于n。如果其他应用方的服务实例采用多数派机制维持一致性,那么,遵从多数派不会影响其他应用方的服务。
[0106]
在一个实施例中,根据目标服务实例和服务实例的当前组合,得到符合预设条件的服务实例的目标组合的步骤可以包括如下所示的步骤s3310~s3320:
[0107]
步骤s3310,根据目标服务实例和服务实例的当前组合,得到多个服务实例的备选组合。
[0108]
在第一个实施例中,得到多个服务实例的备选组合的步骤可以包括:保持每台物理机中已部署的服务实例不变,将目标服务实例增加至服务实例的当前组合中。
[0109]
在如图4b所示的例子中,服务实例的当前组合为{(a,b);(a,b);(a);(a);(a);(b);(b);(b);();()},根据第二数量为5的目标服务实例x和服务实例的当前组合,得到服务实例的备选组合1~5。服务实例的备选组合1可以为{(a,b,x);(a,b,x);(a,x);(a,x);(a,x);(b);(b);(b);();()}。服务实例的备选组合2可以为{(a,b);(a,b);(a,x);(a,x);(a,x);(b,x);(b,x);(b);();()}。服务实例的备选组合3可以为{(a,b);(a,b);(a,x);(a);(a);(b,x);(b,x);(b,x);(x);()}。服务实例的备选组合4可以为{(a,b);(a,b);(a,x);(a,x);(a);(b,x);(b,x);(b);(x);()}。服务实例的备选组合5可以为{(a,b);(a,b);(a,x);(a);(a);(b,x);(b,x);(b);(x);(x)}。
[0110]
在第二个实施例中,得到多个服务实例的备选组合的步骤可以包括:将服务实例的当前组合中的已部署的服务实例和目标服务实例重新组合,得到多个服务实例的备选组合。
[0111]
在如图4b所示的例子中,服务实例的当前组合为{(a,b);(a,b);(a);(a);(a);(b);(b);(b);();()},根据目标服务实例x和服务实例的当前组合,得到服务实例的备选组合6~10。服务实例的备选组合6可以为{(a,x);(a,b);(a,b);(a,b);(a);(x,x);(b);(b);(x);(x)}。服务实例的备选组合7可以为{(a,b,x);(a,x);(a);(a);(b);(a,x);(b,x);(b,x);(b);()}。服务实例的备选组合8可以为{(b,x);(a,x);(a);(a);(a,x);(b,x);(b);(b,x);(a);(b)}。服务实例的备选组合9可以为{(a,b);(a,b);(b,x);(x);(a,x);(b);(b);(x);(a,x);(a)}。服务实例的备选组合10可以为{(b,x);(a,x);(a,x);(a);(a);(b);(b);
(b);(b,x);(a,x)}。
[0112]
步骤s3320,选取任一符合预设条件的服务实例的备选组合,作为服务实例的目标组合。
[0113]
如果每台物理机最多部署服务实例的第一数量均为2,其他应用方的数量t=2,那么,对于服务实例的备选组合1,第一台物理机上部署服务实例的数量为q
1,x
+q
1,a
+q
1,b
=3≥2,对于服务实例的备选组合7,第一台物理机上部署服务实例的数量为q
1,x
+q
1,a
+q
1,b
=3≥2,因此,服务实例的备选组合1和7不符合预设条件中的公式1。
[0114]
第二数量k=5,那么对于服务实例的备选组合2,目标应用方x与其他应用方a部署在同一物理机中的服务实例的数量为目标应用方x与其他应用方b部署在同一物理机中的服务实例的数量为因此,服务实例的备选组合2不符合预设条件中的公式3。
[0115]
对于服务实例的备选组合3,目标应用方x与其他应用方a部署在同一物理机中的服务实例的数量为目标应用方x与其他应用方b部署在同一物理机中的服务实例的数量为因此,服务实例的备选组合3不符合预设条件中的公式3。
[0116]
对于服务实例的备选组合4,目标应用方x与其他应用方a部署在同一物理机中的服务实例的数量为目标应用方x与其他应用方b部署在同一物理机中的服务实例的数量为因此,服务实例的备选组合4符合预设条件3。
[0117]
对于服务实例的备选组合5,目标应用方x与其他应用方a部署在同一物理机中的服务实例的数量为目标应用方x与其他应用方b部署在同一物理机中的服务实例的数量为因此,服务实例的备选组合5符合预设条件3。
[0118]
对于服务实例的备选组合6,第6台物理机中部署了两个目标服务实例,因此,服务实例的备选组合6不符合预设条件中的公式2。
[0119]
对于服务实例的备选组合8,目标应用方x与其他应用方a部署在同一物理机中的服务实例的数量为目标应用方x与其他应用方b部署在同一物理机中的服务实例的数量为因此,服务实例的备选组合8不符合预设条件中的公式3。
[0120]
对于服务实例的备选组合9,目标应用方x与其他应用方a部署在同一物理机中的服务实例的数量为目标应用方x与其他应用方b部署在同一物
理机中的服务实例的数量为因此,服务实例的备选组合9符合预设条件3。
[0121]
对于服务实例的备选组合10,目标应用方x与其他应用方a部署在同一物理机中的服务实例的数量为目标应用方x与其他应用方b部署在同一物理机中的服务实例的数量为因此,服务实例的备选组合8不符合预设条件中的公式3。
[0122]
由此可见,服务实例的备选组合4、5、9符合预设条件。
[0123]
在一个例子中,可以是选取服务实例的备选组合4、5、9中的任一个作为服务实例的目标组合。
[0124]
在另一个例子中,还可以是从符合预设条件的服务实例的备选组合中选取占用物理机数量最少的一个作为服务实例的目标组合。由于服务实例的备选组合4中,无需在第10台物理机中部署服务实例,可以关闭物理机10以降低一致性服务系统的功耗,因此,可以是选取服务实例的备选组合4,作为服务实例的目标组合,如图4b所示。
[0125]
步骤s3400,根据服务实例的目标组合,将目标服务实例部署在一致性服务系统中对应的物理机上。
[0126]
具体的,可以是按照服务实例的目标组合中目标服务实例的部署方式,将每个目标服务实例部署在对应的物理机上。
[0127]
例如,服务实例的目标组合为{(a,b);(a,b);(a,x);(a,x);(a);(b,x);(b,x);(b);(x);()},那么,可以将目标应用方的五个目标服务实例分别部署在第3台物理机、第4台物理机、第6台物理机、第7台物理机和第9台物理机上。
[0128]
在一个实施例中,根据服务实例的目标组合,将目标服务实例部署在一致性服务系统中对应的物理机上的步骤可以进一步包括如下所示的步骤s3410~s3420:
[0129]
步骤s3410,根据新的服务实例组合,在一致性服务系统中对应的物理机中创建应用容器引擎。
[0130]
应用容器引擎可以是docker容器。docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以很容易地在机器和数据中心中运行。
[0131]
在一个物理机上,可以创建有多个应用容器引擎,每个应用容器引擎中可以用于部署一个服务实例。
[0132]
应用容器引擎摆放在物理机中的方式也满足上述预设条件。
[0133]
步骤s3420,将目标服务实例部署在应用容器引擎中。
[0134]
在本发明的实施例中,响应于目标应用方加入一致性服务系统的请求,获取目标应用方待部署的目标服务实例、及一致性服务系统中已部署的服务实例的当前组合,根据目标服务实例和服务实例的当前组合得到服务号预设条件的服务实例的目标组合,并根据服务实例的目标组合,将目标服务实例部署在一致性服务系统中。本发明的实施例提供了一种池化服务的部署方式,可以使得物理机故障造成的爆炸半径最小化。
[0135]
在本发明的一个实施例中,该方法还可以包括:提供触发加入一致性服务系统的请求的入口,以使目标应用方可以通过该入口加入该一致性服务系统。该入口例如是按键、下拉列表选项等。
[0136]
进一步地,可以是在提供给目标应用方的展示页面中,提供触发加入一致性服务系统的请求的入口。
[0137]
在一个实施例中,在执行完步骤s3400之后,该方法还可以包括:
[0138]
接收目标应用方对应的目标客户端发出的数据读取请求,在超过半数的目标服务实例响应该读取请求并返回对应的应答结果的情况下,将应答结果返回至目标客户端。如果少于半数的服务实例响应该读取请求并返回对应的应答结果,则不将对应的应答结果返回至目标客户端。
[0139]
或者,在执行完步骤s3400之后,该方法还可以包括:
[0140]
接收目标应用方对应的目标客户端发出的更新目标数据的命令,在超过半数的目标服务实例执行该命令的情况下,完成目标数据的更新。如果少于半数的服务实例执行该命令,则不对目标数据进行更新。
[0141]
在本实施例中,目标客户端可以是安装有目标应用方的应用程序的客户端。用户可以通过目标客户端中的应用程序,执行相应的操作,使得目标客户端发出数据读取请求或者是更新目标数据的命令。
[0142]
对于遵循多数派机制维持一致性的目标服务实例,需要有半数以上的目标服务实例响应,目标应用方才可以提供数据读取或者数据更新等服务。
[0143]
<例子1>
[0144]
下面以一个具体的例子来说明本发明实施例中服务实例的部署效果。
[0145]
在该例子1中,参见图4a所示,在一致性服务系统的物理机1~10上已部署的至少一个其他应用方的服务实例的当前组合为{(a);(a);(a);(a);(a);();();();();()}。
[0146]
根据待部署的五个目标服务实例x和服务实例的当前组合,得到的符合预设条件的服务实例的目标组合可以为{(a);(a);(a,x);(a,x);(a);(x);(x);(x);();()}。
[0147]
在如图4a所示的服务实例的目标组合中,利用八台物理机,可以部署两个应用方的服务实例。在任意三台物理机同时挂掉的情况下,最多只会导致一个应用方无法提供对外服务。而且,如图4a所示的服务实例的目标组合不仅符合预设条件,占用物理机数量也较少,还达到了充分利用物理机资源的效果。
[0148]
<例子2>
[0149]
参见图4b所示,在一致性服务系统的物理机1~10上已部署的至少一个其他应用方的服务实例的当前组合为{(a,b);(a,b);(a);(a);(a);(b);(b);(b);();()}。
[0150]
根据待部署的五个目标服务实例x和服务实例的当前组合,得到的符合预设条件的服务实例的目标组合可以为{(a,b);(a,b);(a);(a,x);(a,x);(b);(b,x);(b,x);(x);()}。
[0151]
在如图4b所示的服务实例的目标组合中,利用九台物理机,可以部署三个应用方的服务实例。在任意三台物理机同时挂掉的情况下,最多只会导致一个应用方无法提供对外服务。而且,如图4b所示的服务实例的目标组合不仅符合预设条件,占用物理机数量也较少,还可以进一步提高物理机资源利用率。
[0152]
<例子3>
[0153]
如图4c所示,在一致性服务系统的物理机1~10上已部署的至少一个其他应用方的服务实例的当前组合为{(a,b);(a,b);(a,c);(a,c);(a);(b,c);(b,c);(b);(c);()}。
[0154]
根据待部署的五个目标服务实例x和服务实例的当前组合,得到的符合预设条件的服务实例的目标组合可以为{(a,b);(a,b);(a,c);(a,c);(a,x);(b,c);(b,x);(b,x);(c,x);(c,x)}。
[0155]
在如图4c所示的服务实例的目标组合中,利用十台物理机,可以部署四个应用方的服务实例。在任意三台物理机同时挂掉的情况下,最多只会导致一个应用方无法提供对外服务。而且,如图4c所示的服务实例的目标组合不仅符合预设条件,每台物理机都部署了两个应用方的实例,可以实现利用已有的物理机资源最大化部署服务实例的效果。
[0156]
由例子1~例子3可以看出,利用一台物理机部署多个应用方的服务实例,比一台物理机只会部署一个应用方的服务实例的情况下,一致性服务系统中物理机的利用率有明显的提高。
[0157]
如果每个应用方对应5个服务实例,在单台物理机部署1个服务实例到4个服务实例的情况下,一致性服务系统所能部署的服务实例所对应的应用方的个数的趋势图,如图5所示,横坐标表示一致性服务系统中物理机的数量,纵坐标表示所能部署的服务实例所对应的应用方的个数,f1表示单台物理机部署1个服务实例的情况下,一致性服务系统中物理机的数量与一致性服务系统所能部署的服务实例所对应的应用方的个数之间的对应关系;f2表示单台物理机部署2个服务实例的情况下,一致性服务系统中物理机的数量与一致性服务系统所能部署的服务实例所对应的应用方的个数之间的对应关系;f3表示单台物理机部署3个服务实例的情况下,一致性服务系统中物理机的数量与一致性服务系统所能部署的服务实例所对应的应用方的个数之间的对应关系;f4表示单台物理机部署4个服务实例的情况下,一致性服务系统中物理机的数量与一致性服务系统所能部署的服务实例所对应的应用方的个数之间的对应关系。
[0158]
如图5所示,在一致性服务系统中物理机的数量为10台的情况下,单台物理机部署两个服务实例、三个服务实例和四个服务实例并没有区别。在一致性服务系统中物理机的数量为20台的情况下,可以实现物理机资源利用率的最大化,单台物理机部署一个服务实例、两个服务实例、三个服务实例和四个服务实例的情况下,分别能够部署4、8、12、16个应用方的服务实例。
[0159]
<装置实施例>
[0160]
在本实施例中,提供一种服务实例的部署装置7000。如图6所示,该服务实例的部署装置7000包括响应模块7100、获取模块7200、组合模块7300和部署模块7400。该响应模块7100用于响应于目标应用方加入一致性服务系统的请求,获取目标应用方待部署的目标服务实例;该获取模块7200获取在一致性服务系统的物理机上已部署的至少一个其他应用方的服务实例的当前组合,其中,该组合用于表征每台物理机上所部署的服务实例;该组合模块7300用于根据目标服务实例和服务实例的当前组合,得到符合预设条件的服务实例的目标组合;该部署模块7400用于根据服务实例的目标组合,将目标服务实例部署在一致性服务系统中对应的物理机上。
[0161]
在一个实施例中,目标应用方的目标服务实例采用多数派机制维持一致性。
[0162]
在一个实施例中,该装置7000还可以包括:
[0163]
用于获取每台物理机最多部署服务实例的第一数量的模块;
[0164]
用于获取目标应用方待部署的目标服务实例的第二数量的模块;
[0165]
用于根据第一数量和第二数量,得到预设条件的模块。
[0166]
在一个实施例中,预设条件可以包括:
[0167]
每台物理机上部署服务实例的数量小于或等于对应的第一数量;
[0168]
每台物理机上至多部署一个目标服务实例;以及,
[0169]
目标应用方与每一其他应用方部署在同一物理机中的服务实例的数量少于第二数量的一半。
[0170]
在一个实施例中,组合模块7300还可以用于:
[0171]
根据目标服务实例和服务实例的当前组合,得到多个服务实例的备选组合;
[0172]
选取任一符合预设条件的服务实例的备选组合,作为服务实例的目标组合;或者,选取占用物理机最少的服务实例的备选组合,作为服务实例的目标组合。
[0173]
在一个实施例中,根据目标服务实例和服务实例的当前组合,得到多个服务实例的备选组合包括:
[0174]
将目标服务实例对应增加至服务实例的当前组合中,得到多个服务实例的备选组合。
[0175]
在一个实施例中,该装置7000还可以包括:
[0176]
用于接收目标应用方对应的目标客户端发出的数据读取请求,在超过半数的目标服务实例响应读取请求并返回对应的应答结果的情况下,将应答结果返回至目标客户端的模块。
[0177]
在一个实施例中,该装置7000还可以包括:
[0178]
用于接收目标应用方对应的目标客户端发出的更新目标数据的命令,在超过半数的目标服务实例执行命令的服务实例的情况下,完成目标数据的更新的模块。
[0179]
在一个实施例中,部署模块7400还可以用于:
[0180]
根据新的服务实例组合,在一致性服务系统中对应的物理机中创建应用容器引擎;
[0181]
将目标服务实例部署在应用容器引擎中。
[0182]
在一个实施例中,该装置7000还可以包括:
[0183]
用于提供触发加入一致性服务系统的请求的入口的模块。
[0184]
本领域技术人员应当明白,可以通过各种方式来实现服务实例的部署装置7000。例如,可以通过指令配置处理器来实现服务实例的部署装置7000。例如,可以将指令存储在rom中,并且当启动设备时,将指令从rom读取到可编程器件中来实现服务实例的部署装置7000。例如,可以将服务实例的部署装置7000固化到专用器件(例如asic)中。可以将服务实例的部署装置7000分成相互独立的单元,或者可以将它们合并在一起实现。服务实例的部署装置7000可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
[0185]
在本实施例中,服务实例的部署装置7000可以具有多种实现形式,例如,服务实例的部署装置7000可以是任何的提供部署服务实例功能的软件产品或者应用程序中运行的
功能模块,或者是这些软件产品或者应用程序的外设嵌入件、插件、补丁件等,还可以是这些软件产品或者应用程序本身。
[0186]
<一致性服务系统>
[0187]
在本实施例中,还提供一种一致性服务系统8000。该一致性服务系统8000可以是如图2中所示的一致性服务系统1000。
[0188]
在一方面,该一致性服务系统8000可以包括前述的服务实例的部署装置7000,用于实施本发明任意实施例的服务实例的部署方法。
[0189]
在另一方面,如图7所示,一致性服务系统8000还可以包括处理器8100和存储器8200,该存储器8200用于存储可执行的指令;该处理器8100用于根据指令的控制运行一致性服务系统8000执行根据本发明任意实施例的服务实例的部署方法。
[0190]
<计算机可读存储介质>
[0191]
在本实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现如本发明任意实施例的服务实例的部署方法。
[0192]
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0193]
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0194]
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0195]
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利
用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0196]
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0197]
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0198]
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0199]
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
[0200]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1