1.本发明涉及分布式服务管理技术领域,尤其是一种分布式服务的部署方法及系统。
背景技术:2.随着互联网技术的快速发展,应用面对的用户越来越多,原有的应用的架构不能满足需求,许多应用改为分布式架构以满足需求,但是大量部署的分布式服务也会存在一些问题。
3.分布式服务需求的服务器也会更多,应该选择什么样的服务器或虚拟机才能满足我们的要求,如果选择的服务器或虚拟机配置过高,可能会带来经济和服务器性能的浪费,如果选择服务器或者虚拟机配置太低。会导致用户体验不好。现有的分布式服务大多部署在云平台虚拟机上,由于不同分布式服务对于服务器或虚拟机配置要求不同,服务商也不能针对性的提供服务,因此无论对于云平台服务商还是客户如何准确提供一种分布式服务部署方案都十分重要。
4.现有的部署方法是基于经验及目前配置的性能进行分析总结,推荐部署方案,这种方式往往不能得到性价比最高的部署方案。
技术实现要素:5.本发明提供了一种分布式服务的部署方法及系统,用于解决现有分布式服务的部署方案选择盲目的问题。
6.为实现上述目的,本发明采用下述技术方案:
7.本发明第一方面提供了一种分布式服务的部署方法,所述部署方法包括以下步骤:
8.获取每种服务在不同配置的虚拟机下的服务性能数据;
9.基于所述服务性能数据,分别得到每种服务的最大并发数与虚拟机配置的函数关系,以及最短响应时间与虚拟机配置的函数关系;
10.根据得到的函数关系,得到部署分布式服务的最佳配置。
11.进一步地,所述方法还包括将虚拟机的不同配置与分布式服务进行排列组合,得到每种组合下每个服务的最大并发数mcu与最短响应时间mtu,计算mcu和mtu的均值服务性能,对比每种组合的均值服务性能数据,得到最优服务部署方案。
12.进一步地,计算mcu的均值服务性能,对比每种组合的均值服务性能数据,得到最优服务部署方案的具体过程为:
13.获取第i种部署方案的每个服务的最大并发数数据集d
i
中的最大值mcu
max
,其中,d
i
={mcu1,mcu2…
mcu
i
…
mcu
k
};
14.将d
i
中所有数据除以mcu
max
,将所有数据进行归一化处理;
15.计算每个分组后的方差值,以方差由小到大的顺序排列,并结合mcu
max
,得到稳定
且具有较大并发数的组合。
16.进一步地,所述服务性能数据包括网络延迟数据和响应时间。
17.进一步地,所述方法在所述获取每种服务在不同配置的虚拟机下的服务性能数据之前还包括步骤:
18.生成多种不同配置的虚拟机;
19.设置每种服务的响应时间上限和并发数下限,并将每种服务部署在所述不同配置的虚拟机上;
20.测试每种服务在不同配置虚拟机、不同并发数下的服务性能。
21.进一步地,所述方法还包括基于所述服务性能数据,得到响应时间,具体过程为:
22.得到网络延迟数据为t
delay
={t
d1
,t
d2
…
t
dj
…
t
dn
},t
dj
代表第j次请求的网络延迟情况,对应的理论响应时间
[0023][0024]
d
ij
={d
ij1
,d
ij2
…
d
ijk
…
d
ijo
}表示第i个服务在第j种配置服务器下响应数据集合,其中d
ijk
表示d
ij
在并发数为k的情况下的理论响应时间;
[0025]
所述理论响应时间t
ijk
=d
ijk
‑
t
delay
,t
delay
为基于网络延迟数据得到的平均延时。
[0026]
进一步地,得到每种服务的最大并发数与虚拟机配置的函数关系的具体过程为:
[0027]
根据所述服务性能数据,得到每个服务在每种配置下服务响应时间和并发数集合,d
ij
={d
ij1
,d
ij2
…
d
ijk
…
d
ijo
}表示第i个服务在第j种配置服务器下响应数据集合,其中d
ijk
表示d
ij
在并发数为k的情况下的响应时间;
[0028]
筛选d
ij
的响应时间小于设置的所述响应时间上限的数据集合,在这些数据中选取最大并发数e;
[0029]
筛选d
ij
并发数大于设定的所述并发数下限的数据集合,在该数据中选取最小的响应时间t
min
。
[0030]
本发明第二方面提供了一种分布式服务的部署系统,所述系统包括:
[0031]
数据采集单元,用于获取每种服务在不同配置的虚拟机下的服务性能数据;
[0032]
数据处理单元,基于所述服务性能数据,分别得到每种服务的最大并发数与虚拟机配置的函数关系,以及最短响应时间与虚拟机配置的函数关系;
[0033]
配置推荐单元,根据得到的函数关系,得到部署分布式服务的最佳配置。
[0034]
进一步地,所述系统还包括:
[0035]
虚拟机配置单元,生成多种不同配置的虚拟机;
[0036]
服务部署单元,设置每种服务的响应时间上限和并发数下限,并将每种服务部署在所述不同配置的虚拟机上;
[0037]
测试单元,测试每种服务在不同配置虚拟机、不同并发数下的服务性能。
[0038]
本发明第三方面提供了一种计算机存储介质,所述计算机存储介质中存储有计算
机指令,所述计算机指令所述的部署系统上运行时,使所述部署系统执行所述的部署方法。
[0039]
本发明第二方面的所述分布式服务部署系统能够实现第一方面及第一方面的各实现方式中的部署方法,并取得相同的效果。
[0040]
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
[0041]
本发明将不同服务在不同服务配置和并发数下进行测试得到对应的服务响应时间从而得到测试模型,然后根据测试模型可以预测服务在不同配置和不同用户数下的响应时间,由此可以知道分布式服务的在分布式中在不同服务器或虚拟机上的性能,根据各个应用在不同服务器上的表现计算得到最优的分布式部署方案。
附图说明
[0042]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043]
图1是本发明所述方法实施例1的流程示意图;
[0044]
图2是本发明所述方法实施例2的流程示意图;
[0045]
图3是本发明所述系统实施例1的结构示意图;
[0046]
图4是本发明所述系统实施例2的结构示意图。
具体实施方式
[0047]
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
[0048]
本发明提出了基于测试模型的分布式服务部署的方法,首先我们将不同服务在不同服务配置和并发数下进行测试得到对应的服务响应时间从而得到测试模型,然后根据测试模型可以预测服务在不同配置和不同用户数下的响应时间,由此可以得到分布式服务在不同服务器或虚拟机上的性能,根据各个应用在不同服务器上的表现计算得到最优的分布式部署方案。同样对于云服务商可以根据客户应用定制最优的硬件配置。
[0049]
如图1所示,本发明一种分布式服务的部署方法,包括以下步骤:
[0050]
s1,获取每种服务在不同配置的虚拟机下的服务性能数据;
[0051]
s2,基于所述服务性能数据,分别得到每种服务的最大并发数与虚拟机配置的函数关系,以及最短响应时间与虚拟机配置的函数关系;
[0052]
s3,根据得到的函数关系,得到部署分布式服务的最佳配置。
[0053]
步骤s1中,通过nginx代理工具实现数据的采集,获取的服务性能数据包括每个服务在不同配置虚拟机下的响应时间和网络延迟时间,用于计算评估服务性能。
[0054]
网络延迟数据t
delay
={t
d1
,t
d2
…
t
dj
…
t
dn
}网络延迟数据,t
dj
代表第j次请求的网络
延迟情况,服务请求的理论响应时间
[0055][0056]
d
ij
={d
ij1
,d
ij2
…
d
ijk
…
d
ijo
}表示第i个服务在第j种配置服务器下响应数据集合,其中d
ijk
表示d
ij
在并发数为k的情况下的响应时间。
[0057]
对于采集到的网络延迟数据我们采用置信区间去统计该时间段的延时情况,首先计算t
delay
的平均值x
delay
,然后计算的标准方差σ
delay
最后按照预设的显著水平α
delay
,通过置信空间数据得到置信区间(delay
l
,delay
h
),然后根据置信区间值计算得到平均延时t
delay
[0058]
得到服务准确的响应时间为
[0059]
t
ijk
=d
ijk
‑
t
delay
。
[0060]
步骤s2中,将采集到的数据交由测试模型模块进行分析处理,得到每个服务在每一种配置下服务响应时间和并发数数据集合d,d
ij
={d
ij1
,d
ij2
…
d
ijk
…
d
ijo
}表示第i个服务在第j种配置服务器下响应数据集合,其中d
ijk
表示d
ij
在并发数为k的情况下的响应时间,按照步骤2设置的最大响应时间要求或最小并发数要求,即对于d
ij
的响应时间必须小于设置的最大响应时间t
maxi
得到符合要求的数据集合,在这些数据种选取最大并发数e,对于d
ij
并发数大于设定最小并发数e
mini
,得到符合要求的数据集合,在符合要求的数据中选取最小的响应时间t
min
,按照上述过程我们可以得到每个服务在每个配置下满足的最大并发数数据集合和最小响应时间。通过曲线模拟拟合分别得到最大并发数与配置函数mcu=f1(c),以及最短响应时间与配置之间的关系mtu=f2(c),从而得到我们需要的测试模型。
[0061]
步骤s3中,按照上述方式得到每个服务的测试模型,如果只需要获取分布式应用最佳的服务器配置,按照此模型可以推测出对应最佳服务器配置。此外对于上述设置的服务器配置与分布式服务进行排列组合,按照上述测试模型得到每种组合方式下的最大并发数数据d
mcu
={d1,d2…
d
i
…
},
[0062]
其中d
i
={mcu1,mcu2…
mcu
i
…
mcu
k
}表示第i种部署方案的每个服务的最大并发数数据,我们首先对d
mcu
数据进行处理,即对于d
i
={mcu1,mcu2…
mcu
i
…
mcu
k
}进行处理,第一步得到最大值mcu
max
,第二步对于d
i
种所有数据除以mcu
max
,将所有数据处理在[0,1]之间,第三步求取每个分组后的方差值,取方差较小的组合,最后再结合mcu
max
,得到稳定且并发数较大的组合,同样按照上述方案得到每种组合下的最小响应时间数据t
mcu
={t1,t2…
t
i
…
},并对对t
mcu
进行处理,用每种组合的最小响应时间除以所有响应时间,然后求取方差,选取方差较小的组合,结合每个组合的最小响应时间得到稳定且响应时间最小的组合。最后对比每种组合的服务性能数据得到最优服务部署方案。
[0063]
如图2所示,本发明所述部署方法的另一实施例,包括以下步骤:
[0064]
生成多种不同配置的虚拟机;将程序部署在一个服务器集群中,能确保虚拟机能够正常创建,在这里我们采用vmware生成虚拟机,假设我们生成m种配置的虚拟机,用c={c1,c2…
c
j
…
c
m
}来表示其中c
j
表示第j种配置虚拟机
[0065]
设置每种服务的响应时间上限和并发数下限,并将每种服务部署在所述不同配置的虚拟机上;假设我们需要部署的分布式服务有k个,分别设置每个应用的响应时间上限和并发数下限,分别用t
max
={t
max1
,t
max2
…
t
maxj
…
t
maxk
}和e
min
={e
min1
,e
min2
…
e
minj
…
e
mink
}表示,t
maxj
表示第j个服务设置的最大响应时间,e
minj
表示第j个服务设置的最小并发数
[0066]
测试每种服务在不同配置虚拟机、不同并发数下的服务性能;
[0067]
获取每种服务在不同配置的虚拟机下的服务性能数据;通过nginx代理工具实现数据的采集,获取的服务性能数据包括每个服务在不同配置虚拟机下的响应时间和网络延迟时间,用于计算评估服务性能。
[0068]
网络延迟数据t
delay
={t
d1
,t
d2
…
t
dj
…
t
dn
}网络延迟数据,t
dj
代表第j次请求的网络延迟情况,服务请求的理论响应时间
[0069][0070]
d
ij
={d
ij1
,d
ij2
…
d
ijk
…
d
ijo
}表示第i个服务在第j种配置服务器下响应数据集合,其中d
ijk
表示d
ij
在并发数为k的情况下的响应时间。
[0071]
对于采集到的网络延迟数据我们采用置信区间去统计该时间段的延时情况,首先计算t
delay
的平均值x
delay
,然后计算的标准方差σ
delay
最后按照预设的显著水平α
delay
,通过置信空间数据得到置信区间(delay
l
,delay
h
),然后根据置信区间值计算得到平均延时t
delay
,得到服务准确的响应时间为
[0072]
t
ijk
=d
ijk
‑
t
delay
。
[0073]
基于所述服务性能数据,分别得到每种服务的最大并发数与虚拟机配置的函数关系,以及最短响应时间与虚拟机配置的函数关系;将采集到的数据交由测试模型模块进行分析处理,得到每个服务在每一种配置下服务响应时间和并发数数据集合d,d
ij
={d
ij1
,d
ij2
…
d
ijk
…
d
ijo
}表示第i个服务在第j种配置服务器下响应数据集合,其中d
ijk
表示d
ij
在并发数为k的情况下的响应时间,按照步骤2设置的最大响应时间要求或最小并发数要求,即对于d
ij
的响应时间必须小于设置的最大响应时间t
maxi
得到符合要求的数据集合,在这些数据种选取最大并发数e,对于d
ij
并发数大于设定最小并发数e
mini
,得到符合要求的数据集合,在符合要求的数据中选取最小的响应时间t
min
,按照上述过程我们可以得到每个服务在每个配置下满足的最大并发数数据集合和最小响应时间。通过曲线模拟拟合分别得到最大并发数与配置函数mcu=f1(c),以及最短响应时间与配置之间的关系mtu=f2(c),从而得到我们需要的测试模型。
[0074]
根据得到的函数关系,得到部署分布式服务的最佳配置。按照上述方式得到每个服务的测试模型,如果只需要获取分布式应用最佳的服务器配置,按照此模型可以推测出对应最佳服务器配置。此外对于上述设置的服务器配置与分布式服务进行排列组合,按照上述测试模型得到每种组合方式下的最大并发数数据d
mcu
={d1,d2…
d
i
…
}。
[0075]
其中d
i
={mcu1,mcu2…
mcu
i
…
mcu
k
}表示第i种部署方案的每个服务的最大并发数
数据,我们首先对d
mcu
数据进行处理,即对于d
i
={mcu1,mcu2…
mcu
i
…
mcu
k
}进行处理,第一步得到最大值mcu
max
,第二步对于d
i
种所有数据除以mcu
max
,将所有数据处理在[0,1]之间,第三步求取每个分组后的方差值,取方差较小的组合,最后再结合mcu
max
,得到稳定且并发数较大的组合,同样按照上述方案得到每种组合下的最小响应时间数据t
mcu
={t1,t2…
t
i
…
},并对对t
mcu
进行处理,用每种组合的最小响应时间除以所有响应时间,然后求取方差,选取方差较小的组合,结合每个组合的最小响应时间得到稳定且响应时间最小的组合。最后对比每种组合的服务性能数据得到最优服务部署方案。
[0076]
使用本发明方法,部署一套分布式服务部署方案推荐系统,在分布式服务部署之前,通过生成不同配置的虚拟机并将服务分别部署在上面,通过测试脚本测试每个服务在不同配置虚拟机、不同并发数下的响应时间,并以此为原始数据,通过模拟拟合得到在最大响应时间下的最大并发数与服务武器配置的测试模型和在特定并发数下吧响应时间与服务器配置的测试模型。根据这两个测试模型,推测出每个服务对应的服务器最佳配置要求,以及特定服务器配置下,最优的分布式服务部署方案。这样既能在保障服务性能要求的情况下降低服务器配置要求,而且可以在特定服务器配置情况下,给出最优的分布式部署方案,尽可能提升服务性能。
[0077]
如图3所示,本发明提供了一种分布式服务的部署系统,所述系统包括数据采集单元1、数据处理单元2和配置推荐单元3。
[0078]
数据采集单元1用于获取每种服务在不同配置的虚拟机下的服务性能数据;数据处理单元2基于所述服务性能数据,分别得到每种服务的最大并发数与虚拟机配置的函数关系,以及最短响应时间与虚拟机配置的函数关系;配置推荐单元3根据得到的函数关系,得到部署分布式服务的最佳配置。
[0079]
如图4所示,本发明一种分布式服务的部署系统的另一实施例,在实施例的基础上所述系统还包括虚拟机配置单元4、服务部署单元5和测试单元6。
[0080]
虚拟机配置单元4生成多种不同配置的虚拟机;服务部署单元5设置每种服务的响应时间上限和并发数下限,并将每种服务部署在所述不同配置的虚拟机上;测试单元6测试每种服务在不同配置虚拟机、不同并发数下的服务性能。
[0081]
本发明还提供了一种计算机存储介质,所述计算机存储介质中存储有计算机指令,所述计算机指令在所述的部署系统上运行时,使所述部署系统执行所述的部署方法。
[0082]
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。