面向智能制造的微服务聚类与选择方法
王立平1,2, 史慧杰2, 王冬1    
1. 清华大学 机械工程系, 北京 100084;
2. 电子科技大学 机械与电气工程学院, 成都 611731
摘要:智能制造要求工业软件能够实现敏捷开发, 对工业软件应用微服务架构是当下重要的研究方向。为了提高开发效率, 需要将微服务形式的功能组件发布在互联网中并构建微服务库进行管理, 供用户根据需求挑选。面对用户日益复杂的业务需求, 需要微服务库能够将其所包含的大量微服务进行组合来拓展所能实现的功能。针对服务组合过程中的检索和选择2个环节, 分别设计了基于微服务的功能需求与非功能需求的服务聚类和服务选择算法, 在微服务库中选出最优的微服务组合提供给客户。实验结果表明, 所提出的聚类与组合方法取得了良好的效果, 提高了用户的满意度并实现了微服务的高效利用。
关键词智能制造    微服务    服务聚类    服务选择    
Clustering and selection method of microservices for intelligent manufacturing
WANG Liping1,2, SHI Huijie2, WANG Dong1    
1. Department of Mechanical Engineering, Tsinghua University, Beijing 100084, China;
2. School of Mechanical and Electrical Engineering, University of Electronic Science and Technology of China, Chengdu 611731, China
Abstract: [Objective] Intelligent manufacturing requires the agile development of industrial software, and microservices architecture for industrial software application is an important research direction at present. To improve developmental efficiency of industrial software, functional components in the form of microservices must be published on the internet, and a microservices library needs to be built for management, enabling users to choose according to their needs. To meet the demands of the increasingly complex business needs of users, the microservices library must efficiently combine numerous contained microservices to expand achievable functions. Based on the binding mechanism between the registry and microservices library, the quality of the two links of retrieval and selection in the microservices combination significantly impacts user experience. [Methods] In the process of service retrieval, a service clustering algorithm based on Sentence BERT and SOM (SBERT-SOM-k) is proposed to efficiently find a group of microservices that meet specific functional requirements of the microservices library. This method converts microservices into a text vector through Sentence BERT, mapping them to the output layer nodes of SOM. The iterated weight vector represents these output layer nodes, which can effectively improve the disadvantage of the k-means algorithm that is sensitive to noise and outliers. Because of the absence of a special microservices set related to industrial software at present, the experiment uses the open web service test dataset OWLS-TC4 to compare SBERT-SOM-k with three clustering algorithms: SBERT-k, LDA-k, and TFIDF-k and uses three indicators of accuracy, recall, and F-measure to evaluate the performance of the algorithm. In the service selection phase, to further select the optimal combination of microservices, nonfunctional requirements, such as availability, reliability, and response time, are considered as quality of service (QoS) indicators, which transformed into a multiconstraint single-objective optimization problem based on QoS. Furthermore, an improved genetic algorithm is proposed, which is redesigned in terms of encoding, crossover, mutation, selection, and constraint punishment. The improved genetic algorithm is used to achieve stable solutions for multiconstraint single- objective optimization problems. The experiment used QWS2.0, a real web service dataset that exists on the internet, to compare the number of iterations and fitness values of the improved genetic algorithm (IGA), cross unimproved but constrained genetic algorithm (NICGA), and cross unconstrained improved genetic algorithm (NICCGA) for obtaining the optimal solution under different task node numbers. [Results] The results of service clustering experiments show that the average accuracy of different clustering algorithms is the same. However, SBERT-SOM-k still has significant advantages over SBERT-k, LDA-k, and TF-IDF-k, with the average recall rates increased by 29.56%, 19.36%, and 31.70%, and the corresponding average F-measure increased by 22.41%, 13.77%, and 25.33%, respectively. Additionally, IGA can improve the optimization speed and quality of the service composition, effectively preventing premature convergence. [Conclusions] The proposed clustering and selection method has achieved good results. It can rapidly select microservices from the microservices library, meeting the needs of users. Furthermore, integrating these microservices into an industrial software system registry based on the microservices architecture will enhance user satisfaction and help to realize the efficient use of microservices.
Key words: intelligent manufacturing    microservices    service clustering    service selection    

智能制造的发展离不开工业软件的深入应用,而面对当今企业多样化的业务需求,如何有针对性地开发配套的工业软件,如制造执行系统(MES)等,是企业实现更好发展亟需解决的问题。目前,传统工业软件的开发大多采用单体式架构的定制化开发,成本高,交付慢,会造成业务模块高度耦合且不能应对企业需求的变化。从IT视角来看,微服务具备细粒度、可重用、可灵活组合的特点,利用基于微服务形式的组件来实现工业软件系统的业务逻辑可解决传统软件开发过程中的困难,因此,基于微服务架构开发工业软件系统十分具有前景。

在互联网和云计算的高速发展下,基于微服务可重用的特点,可将微服务厂商提供的和现有软件系统拆解后的与智能制造相关的微服务发布在互联网中,构建微服务库这样的系统平台进行管理,并不断扩充微服务的种类与数量,供用户灵活使用和组装,进而提高开发效率。而单一的微服务已无法满足用户日益复杂的业务需求,因此在微服务库的构建中,微服务组合是其中的关键技术,并且微服务组合的好坏直接关系到用户的体验效果。

微服务可以看作是微服务架构下的Web服务,微服务组合的研究可参考Web服务组合的研究[1]。微服务组合包含服务检索和服务选择环节。在服务检索环节,通常通过服务聚类,将功能方面相似的服务聚到同一类中以便提高服务检索效率和准确性[2]。近年来,越来越多的研究采用自然语言来对服务功能进行描述,目前的主流方法是首先计算表征服务描述文档各文本向量之间的相似度,进而实现聚类。例如,Chen等[3]使用Word2vec工具来训练Wikipedia语料库的词向量模型来扩展服务描述文档,再运用潜在Dirichlet分布(latent Dirichlet allocation,LDA)主题模型和k-means算法实现服务聚类;Yang等[4]使用连续词袋(continuous bag-of-words,CBOW)模型进行词向量表征,并借此构建词对主题模型(biterm topic model,BTM),使用Gibb采样算法进行训练,得到文本主题分布后再进行服务聚类,但相关方法的聚类精确度仍有待提高。在服务选择环节,面对多维的服务质量(QoS)属性,为了获得最优的Web服务组合,许多学者使用了如遗传算法、粒子群算法[5]、蚁群算法[6]、人工蜂群算法[7]等启发式算法来解决该NP难题,取得了不错的效果。其中,遗传算法被认为是更适合处理大规模的服务选择优化问题。Purohit等[8]分析了遗传算法在Web服务选择中的应用;徐甜等[9]在标准遗传算法基础上引入多尺度交叉算子和信息共享因子,提高了问题求解效率,但并没有考虑如何进行合理的约束惩罚。罚函数法在计算违反约束条件个体的适应度值时,通过添加相应的惩罚因子来降低其被选择的概率,但使用普通的罚函数法来改进遗传算法会出现惩罚参数选取较为困难的问题[10]

针对上述问题,本文面向微服务库提出了聚类与组合方法。基于使用连体BERT网络的句子嵌入(sentence embeddings using siamese BERT-networks,Sentence-BERT)和自组织映射(self-organizing map,SOM)设计了服务聚类算法,提高了服务聚类的准确度和效率,从而方便进行满足用户功能需求的服务检索;对遗传算法进行了交叉操作和约束惩罚方面的改进,使其更适合于服务选择的数学模型,在提高准确率的同时缩短了迭代次数,提高了微服务组合的寻优效率,满足用户对微服务的非功能需求,并最终提高了用户的满意度。

1 微服务组合流程

在基于微服务架构的工业软件系统中,微服务注册中心对各个可用微服务实例的IP(internet protocol)地址和端口(port)进行了注册,供客户端和后台微服务获取服务列表信息,从而实现客户端访问后台微服务和微服务之间的相互调用,在此基础上建立注册中心与微服务库的绑定机制,如图 1所示。基于微服务架构的工业软件系统的微服务可以从微服务库中获取并选优,将微服务库中满足其业务功能需求和非功能需求的微服务地址长期绑定到MES系统的注册中心中,从而建立起工业软件系统开发与微服务库之间的联系,实现敏捷开发。

图 1 注册中心与微服务库的绑定机制

对微服务的绑定即是一个微服务组合的过程,应当先对微服务库进行服务检索,再进行服务选择。具体流程为:根据用户的业务需求得出相应的业务流程,业务流程的一个功能节点对应一个微服务;然后从微服务库中选出满足功能需求的候选微服务集,此为服务检索环节;再从微服务集中选出满足整个业务流程非功能需求的最优微服务组合,此为服务选择环节。服务组合流程图如图 2所示。

图 2 微服务组合流程图

2 服务聚类

面对互联网微服务库中海量的微服务,在服务检索环节,单单基于关键词或语义的搜索会大大浪费时间和资源。通过服务聚类可有效提高服务检索的效率,服务聚类是指将微服务库中的微服务按其语义功能的相似性进行聚类,这样对整个微服务库进行检索时可以聚焦到某一个类别中进行检索,从而大大提高服务检索的效率。因此提高服务聚类的准确性和效率十分必要。

2.1 基于Sentence-BERT和SOM的服务聚类算法

类似于Web服务,微服务库中每个微服务都有其语义文本描述,但是针对其文本较短的特点,本文提出基于Sentence-BERT和SOM的服务聚类算法。

基于转换器的双向编码表征(bidirectional encoder representation from transformers,BERT)模型是一个预训练的语言表征模型,一经提出,大大提高了各项自然语言处理(NLP)的测试结果,但BERT模型在文本语义相似度等句子对的回归任务上需要把2个句子同时送入网络,这样会导致巨大的计算开销。Sentence-BERT模型是在预训练BERT网络上增加了一个平均池化(mean-pooling)的策略,从而生成一个固定维度的句子嵌入,如图 3所示,其中uv分别是句子A和B的表征向量,计算它们的余弦相似度在-1到1之间。该模型使用孪生(siamese)或三元组(triplet)网络结构来更新权重,进而推导出语义上有意义的句子嵌入,大大减少了计算工作量,更适合文本相似度度量、语义搜索、语义聚类等任务[11]

图 3 Sentence-BERT模型孪生网络结构

SOM神经网络是由芬兰学者Kohonen提出的一种用于特征提取的无监督学习聚类算法[12],SOM神经网络由输入层和输出层构成,对于输入层来说,每一个样本都相当于一个外界的刺激信号,输出层模拟大脑皮层对不同的样本做出响应,从而激活不同的神经元。SOM输出层还可以在低维形态下,拟合高维空间数据集中输入样本间的特征,在保留数据原始拓扑关系下使得一类样本被映射到一个神经元附近,实现了数据降维和可视化。SOM神经网络结构如图 4所示,其中,输入层有n个神经元,与输入特征维度相同,x=(x1, x2, …, xn),输出层有X×Y个神经元,每个神经元通过n条权边与输入节点相连,输出层的每个神经元用一个n维向量 wij来表征。

图 4 SOM神经网络结构图(输出层为二维)

SOM包括竞争过程和权值向量更新过程。竞争过程即输出层神经元相互竞争后的最优匹配选择,在归一化输入向量和权值向量后,对于任一输入样本,计算其与输出层中各神经元的Euclid距离。其中,具有Euclid距离最小值的特定神经元成为唯一的竞争胜利者,即满足式(1)的神经元x(i, j)为最佳匹配神经元。

$ x(i, j)=\arg \min\limits _{i, j}\left\|\boldsymbol{x}-\boldsymbol{w}_{i j}\right\| . $ (1)

权值向量更新过程是对获胜的神经元拓扑邻域内的神经元进行更新, 并对学习后的权值重新归一。以获胜神经元为中心,设定一个正方形的邻域半径,该半径范围内的区域称为优胜邻域。优胜邻域内的所有神经元在更新过程中的节点权重都要受到影响,SOM神经网络中用节点权重更新函数来表示这种影响关系的强弱:

$ h_{a, b}(t)=\mathrm{e}^{-d_{a, b}^2 /\left(2 r^2(t)\right)} . $ (2)

其中ab分别为获胜神经元和邻域内任一神经元,da, b表示神经元ab之间的距离,r(t)表示领域半径。

r(t)是动态变化的,并且随t的增加而逐渐减小:

$r(t)=r_0 \mathrm{e}^{-t / \tau_1}. $ (3)

其中: r0为初始邻域半径,τ1为时间常数。

进一步,权值向量的更新过程如式(4)所示,随着t的增加逐渐拟合输入样本间的特征。

$ w(t+1)=w(t)+\eta(t) h_{a, b}(t)(x-w(t)) . $ (4)

η(t)为学习率,并且随训练时间t增加而逐渐下降:

$ \eta(t)=\eta_0 \mathrm{e}^{-t / \tau_2}. $ (5)

其中,η0为0到1之间的初始值,τ2为时间常数。

k-means算法是一种典型的基于距离划分簇的无监督聚类算法,将给定的样本集依据空间距离的大小划分为k个簇,使得簇内的样本点紧密依靠在一起,而簇间的点尽量远离。k-means的工作思路如下:随机选取样本集中k个向量作为k个簇的初始聚类中心,对于其他样本点,计算其与各个簇中心向量的Euclid距离,并划分到距离最近的簇中;然后分别计算各个簇中所有样本点的均值,并更新为该簇新的中心向量;重复迭代此过程,若中心向量不再发生变化,停止并输出聚类结果。

基于上述研究内容,本文提出基于Sentence-BERT和SOM的服务聚类算法,其工作原理框架如图 5所示。

图 5 基于Sentence-BERT和SOM的服务聚类算法框架

步骤1   对微服务的描述文档提取信息后利用Sentence-BERT模型进行训练,得到相应的微服务文本向量;

步骤2   对微服务文本向量进行SOM自组织学习训练将其映射到输出层,进而产生用来表征输出层获胜神经元的权值向量集,并且每个输出层的获胜神经元都对应一个或多个微服务;

步骤3   用聚类方法k-means对权值向量集直接进行聚类,将其划分为k类,进而权值向量所在神经元对应的微服务也就被划分为同样的k类,从而实现了对微服务的聚类。

该模型通过将大量文本向量映射到SOM神经网络输出层的节点中,并以迭代后的权值向量代表输出层的节点,一方面可以有效改善k-means算法对噪声和异常点敏感的缺点,进而提高聚类效果;另一方面,随着微服务库的中服务数量的增多,针对新增的服务可以通过已有的权值向量矩阵将其映射到SOM神经网络输出层的节点中,从而实现自动归类,避免了对整个微服务库重新聚类,提高了效率,降低了微服务库的管理难度。

2.2 服务聚类实验

服务聚类实验的环境为:集成开发环境Pycharm,解释器Python3.7,深度学习框架Pytorch1.7.0,CPU i9-10920X。由于目前还没有专门的与工业软件相关的微服务集,因此实验采用公开的Web服务测试数据集OWLS-TC4中来自9个不同领域的1 083个服务作为实验对象,使用python中lxml包的etree模块批量提取数据集服务的文本描述内容,以各领域中包含的服务集为标定真实数据。

在信息检索与聚类统计领域中常采用准确率P、召回率R这两个方面的评价指标来衡量结果的好坏。P表示正确归属到某一簇中的样本数占所有归属到该簇样本数的百分比,R表示正确归属到某一簇中的样本数占事实依据类中样本数的百分比。但有时候在不同条件的对比下PR会出现一高一低这种矛盾的情况,这时就需要用到调和它们的F值来综合衡量结果的好坏或算法的优劣,F值的计算公式如下:

$ F=\frac{2 P R}{P+R}. $ (6)

在服务检索环节中,采用基于语义的服务匹配方法,即在输入查找内容后,需要返回在一定语义相似度以上的服务。因此,要想对服务聚类的效果进行评价,首先要通过实验来确定其服务匹配效果最佳的相似度,具体做法为基于Sentence-BERT模型,将微服务文本描述转变为高质量的文本表示向量,采用余弦相似度对服务进行匹配,余弦相似度越大,服务匹配相似度也就越高。由于随着服务匹配相似度的提高,R在降低,P在提高,故综合考虑F值的大小确定服务匹配相似度,结果见图 6,确定服务检索的服务匹配最佳相似度为0.8。

图 6 不同服务匹配相似度下的F

接下来利用基于Sentence-BERT和SOM的服务聚类算法SBERT-SOM-k对OWLS-TC4中的1 083个服务所组成的服务库进行服务聚类实验。首先使用Sentence-BERT模型将OWLS-TC4服务集转化为1 083×786维的数据集矩阵,代表 1 083个786维的微服务文本向量,然后随机生成初始的权值向量集在SOM自组织学习训练中不断进行更新,对整个数据集矩阵的所有微服务文本向量训练完成即为迭代一次,最后再使用k-means算法对代表一个或多个微服务的权值向量集进行聚类,整个聚类过程中的实验参数为:输出层形状(shape)13×13,权值向量集形状786×169;迭代次数3;k值9。

然后选择以下3种聚类方法来与本文所提方法进行比较。

1) SBERT-k:使用Sentence-BERT模型将微服务集表征为微服务文本向量后,直接使用k-means算法进行聚类,而未经过SOM自组织映射。

2) LDA-k:使用训练过的LDA主题模型对给定服务集中每一服务的描述文档进行主题分布的预测,得到服务集的概率主题分布矩阵,对该矩阵使用k-means算法从而实现对服务集的聚类。

3) TFIDF-k:对给定服务集中每一服务的描述文档构建词袋,并计算每个词的TF-IDF值,最终会生成一个文档词频矩阵,同样对该矩阵使用k-means算法从而实现对服务集的聚类。

分别取5次实验结果的平均值,所得结果如表 1所示。

表 1 不同聚类方法的实验结果对比
聚类模型 P平均值/% R平均值/% F平均值/%
SBERT-SOM-k 92.40 71.42 80.57
SBERT-k 95.23 41.86 58.16
LDA-k 93.17 52.06 66.80
TFIDF-k 90.65 39.72 55.24

实验结果表明,不同聚类算法的P平均值基本一致,这是因为在相同的服务检索方法下,无论是在整个服务库还是在不同聚类算法划分的各个类中其准确率都差别不大。但SBERT-SOM-k相比SBERT-k、LDA-k和TF-IDF-k仍然有明显优势,在R平均值上分别提升了29.56%、19.36%和31.70%,相应地在F平均值上分别提升了22.41%、13.77%和25.33%。

3 服务选择

在服务聚类的基础上进行服务检索选取出同功能不同性能的候选微服务集后,接下来提出改进的遗传算法,基于业务流程对微服务的非功能需求(可用性、可靠性、响应时间等)进行迭代,从而选出满足业务流程最优的微服务组合提供给用户。

3.1 遗传算法改进与应用

GA是模拟生物在自然界基于其适应能力遗传和进化而设计的一种全局寻优启发式算法,广泛用于搜索应用问题的近似最优解。为了将GA应用于服务选择问题中,本文先对服务选择问题进行形式化描述,即建立相应的数学模型,进而对遗传算法进行改进并应用于服务选择优化问题中。

QoS是普遍使用的非功能需求衡量标准,与在微服务被调用过程中可能会出现的通信延时、数据包丢失、传输顺序错误等问题有关,这些问题在基于微服务架构的工业软件系统使用过程中会严重影响用户的使用体验。在服务选择问题中选取几种常用的QoS指标:可用性、可靠性、响应时间、执行代价、信任度。将服务选择问题转换为基于QoS下的多约束单目标优化问题求解来研究,包括设置目标函数、全局与局部约束条件的形式化。首先假定服务组合的流程满足如下条件[13]:1) 一个任务只能由一个服务来实现,例如,(taski, wsi, j)即任务taski由服务wsi, j实现;2) 实现任务taski的服务存在多个即有{wsi, j|j=1, 2, …, m},并且这些服务的功能需求是相同的,而非功能需求QoS是不同的;3) 服务组合的流程是基于顺序结构的。

借鉴文[14]给出单个服务的目标函数:

$ \begin{aligned} F_{\mathrm{ws}_{i, j}}=\frac{w_{\text {avali }} Q_{i j}^{\text {avail }}+w_{\text {reli }} Q_{i j}^{\text {reli }}+w_{\text {trust }} Q_{i j}^{\text {trust }}}{w_{\text {etime }} Q_{i j}^{\text {etime }}+w_{\text {cost }} Q_{i j}^{\text {cost }}}, \\ w_{\text {avail }}+w_{\text {reli }}+w_{\text {trust }}=1, \\ w_{\text {etime }}+w_{\text {cost }}=1, \\ 0 <w_{\text {aval }}<1, \\ 0<w_{\text {reli }}<1, \\ 0<w_{\text {trust }}<1, \\ 0<w_{\text {etime }}<1, \\ 0<w_{\text {cost }}<1 . \end{aligned} $ (7)

其中wavailwreliwtrustwetimewcost分别表示可用性Qijavail、可靠性Qijreli、响应时间Qijetime、执行代价Qijcost、信任度Qijtrust的权重。

故组合服务目标函数为 $ \sum\limits_{i=1}^n \sum\limits_{j=1}^m x_{i j} F_{\mathrm{ws}_{i, j}}$,其中 $ \sum\limits_{j=1}^m x_{i j}=1, x_{i j}=0$或1,表示一个任务只能由一个服务实现。

局部约束条件为:实现每个任务所需的响应时间与执行代价要求小于某一常量,而可靠性、可用性与信任度的数值要求大于某一常量。

$ \left\{\begin{array}{l} \text { etime }_i \leqslant Q_{\mathrm{et}}, \\ \text { cost }_i \leqslant Q_{\mathrm{c}}, \\ \text { reli }_i \geqslant Q_{\mathrm{r}}, \\ \text { avail }_i \geqslant Q_{\mathrm{a}}, \\ \text { trust }_i \geqslant Q_{\mathrm{t}} . \end{array}\right. $

其中:etimei、costi、relii、availi、trusti分别代表实现第i个任务所需的响应时间、执行代价、可靠性、可用性、信任度,QetQcQrQaQt为客户要求的常量数值,用于约束服务或服务流程的服务质量。i=1, 2, …nn表示任一服务流程所实现的任务数。

相应的全局约束条件为对整个服务流程的QoS条件进行约束:

$ \left\{\begin{array}{l} \sum\limits_{i=1}^n \text { etime }_i \leqslant Q_{\mathrm{et}}, \\ \sum\limits_{i=1}^n \operatorname{cost}_i \leqslant Q_{\mathrm{c}}, \\ \sum\limits_{i=1}^n \text { reli }_i \geqslant Q_{\mathrm{r}}, \\ \sum\limits_{i=1}^n \text { avail }_i \geqslant Q_{\mathrm{a}}, \\ \sum\limits_{i=1}^n \text { trust }_i \geqslant Q_{\mathrm{t}} . \end{array}\right. $

而在全局约束条件下,如果只是单纯地从实现每个任务的候选服务集中挑选出单个服务目标函数值最高的且满足局部约束条件的服务,然后把它们按照流程组合起来以作为服务选择的最佳方案,则组合后的服务其QoS值很可能不满足全局约束条件,因此需要运用启发式算法来迭代求解出最优方案。

下面针对具体的服务选择问题,进行遗传算法的设计与改进。

编码操作:不同于传统求解函数最优解的二进制编码,服务选择问题采用十进制编码,对每个任务的候选微服务集进行编号作为染色体的基因位,在交叉和变异操作时,只需对编号进行操作即可。

交叉算子:对传统的单点交叉方式进行改进,设计一种基于适应度交叉概率的交叉算子。具体为进行交叉操作时,遍历选择种群内的每一条染色体,每次选择的染色体其适应度值设为fa,再从剩下的染色体中随机选择一条,其适应度值设为fb,然后将这两条染色体以一定的概率进行单点交叉,对该概率设计交叉概率函数:

$P=\frac{1}{1+\left(\frac{f_{\mathrm{a}}}{f_{\mathrm{b}}}\right)^2} \text {. } $ (8)

即该个体适应度值相对要交叉的染色体适应度值越高时,交叉概率越低,这样设计的目的是为了更好地保留下一代优良的个体。

变异算子:流程任务数不会太大,选择单点变异即可。

选择算子:由于种群个体较多,不适合使用轮盘赌,使用精英保留策略,用当前种群最优个体取代适应度值低于fmin+0.2(fmax-fmin)的个体,其中fmaxfmin分别代表当前种群最优个体和最差个体的适应度值。

约束处理:一些不满足约束条件的个体可能具有一些好的基因,应当适当地保留这些个体,若直接舍弃,属于过度惩罚,不利于搜索朝最优解靠近。而目前常用的约束处理方法如可行性法则和罚函数法,存在过度惩罚和约束惩罚项参数确定困难的问题。针对于此,提出一种非参数的罚函数方法,适合多约束条件下目标函数优化问题。设计罚适应函数

$ F(x)= \begin{cases}f(x), & k=0 ; \\ 1-\left(\frac{1}{2}\right)^{c-k}, & \text { 其他. }\end{cases} $ (9)

其中:f(x)代表未经过约束惩罚的适应度函数,k代表违反约束条件的个数,c代表约束条件总数。F(x)保证违反约束条件的个数越多,惩罚后的适应函数越小,且F(x)是凸函数,致使约束违反个数较少时,F(x)不至于过小,约束违反个数较多时,F(x)不至于过大,使对适应函数的惩罚更加合理。

通过上述对遗传算法的设计与改进,使其更加适合服务选择的优化问题,改进的遗传算法流程图如图 7所示。

图 7 改进的遗传算法流程图

3.2 服务选择实验

服务选择实验的环境为:Matlab R2019b,CPU R7-5800H。实验采用互联网中真实存在的Web服务数据集QWS2.0。该数据集对Web服务的十几种QoS属性进行了度量,包括候选服务的响应时间、可用性和可靠性等。因为在该数据集中服务缺少价格属性和信誉属性的数据值,因此对这两个属性的数据值采用随机模拟,其中价格属性数据值的随机范围是[50, 100],信誉属性数据值的随机范围是[10, 100]。下述实验所有的候选服务均选自QWS2.0数据集。因为局部约束对服务非功能需求的限制与服务检索后的结果相同,最终也是获得候选服务集,且不需要算法迭代,所以本文不考虑。

服务组合包含的基本逻辑结构有顺序、并行、选择与循环。因在服务组合模型中所有的逻辑结构最终都可以转化为顺序结构的研究[15],因此本节将设计顺序结构的服务组合流程进行服务选择实验。具体为分别设计6、9、12个任务节点的顺序服务组合流程,其中每个任务所包含的候选服务数均为10。

实验中遗传操作的种群个体数设为20,突变概率设为0.2。

分别对改进的遗传算法IGA、交叉无改进但约束有改进的遗传算法NICGA、交叉约束都无改进的遗传算法NICCGA进行实验仿真,每种遗传算法的最优解适应度和得到最优解的迭代次数均取10次实验的平均值,对比结果如表 2图 8所示。

表 2 不同任务节点数下遗传算法最优解适应度对比
任务节点个数 IGA NICGA NICCGA
6 5.506 5.506 5.506
9 7.884 7.892 7.576
12 9.942 9.872 8.838

图 8 不同任务节点数下遗传算法得到最优解的迭代次数对比

可以看出,使用上述3种算法最终都会收敛到最优适应度并获得最优的服务组合。在任务节点个数为6时,3种算法都可以取得最优解,但IGA收敛速度更快。随着任务节点个数的增加,遗传算法收敛迭代次数在不断增加,但IGA迭代次数仍远小于NICGA和NICCGA,且IGA和NICGA适应度明显优于未经过约束惩罚处理的NICCGA。这表明IGA可提高服务组合寻优速度,并提高解的质量,有效防止早熟收敛的发生,具有良好的效果。

4 结论

本文提出了面向智能制造的微服务聚类与选择方法。针对用户对微服务的功能需求,设计了基于Sentence-BERT和SOM的服务聚类模型,有效提高了服务检索环节的效率和准确率。针对用户对微服务的非功能需求,设计了改进的遗传算法,能够在服务选择环节中更高效地选出更优的微服务组合。最终能够更快速地从微服务库中选出更符合用户需求的微服务,从而绑定到基于微服务架构的工业软件系统注册中心中,实现敏捷开发并提升用户的使用体验,为微服务库构建过程中服务组合逻辑的实现提供了技术支撑。

参考文献
[1]
辛园园, 李俊晖, 李阵. 微服务组合方法研究进展[J]. 无线通信技术, 2018, 27(3): 42-46.
XIN Y Y, LI J H, LI Z. Research progress of microservices composition methods[J]. Wireless Communication Technology, 2018, 27(3): 42-46. (in Chinese)
[2]
BEGUM M F, KUMAR P N, BALAJI T, et al. Clustering Web documents to bootstrap the discovery of Web services[J]. International Journal of Advance Research in Computer Science and Management, 2017, 3(2): 2394-2697.
[3]
CHEN Y P, WANG X, XIA H, et al. Research on Web service clustering method based on word embedding and topic model[M]//LIU Y, WANG L P, ZHAO L, et al. Advances in Intelligent Systems and Computing, Fuzzy Systems and Knowledge Discovery. Cham, Switzerland: Springer, 2019: 980-987.
[4]
YANG D J, HE D. Web service clustering method based on word vector and biterm topic model[C]//2021 IEEE 6th International Conference on Cloud Computing and Big Data Analytics. Chengdu, China: IEEE, 2021: 299-304.
[5]
FEKIH H, MTIBAA S, BOUAMAMA S. An efficient user-centric Web service composition based on harmony particle swarm optimization[J]. International Journal of Web Services Research, 2019, 16(1): 1-21. DOI:10.4018/IJWSR.2019010101
[6]
XIA Y M, CHEN J L, MENG X W. On the dynamic ant colony algorithm optimization based on multi-pheromones[C]//Seventh IEEE/ACIS International Conference on Computer and Information Science. Portland, OR, USA: IEEE, 2008: 630-635.
[7]
DAHAN F, MATHKOUR H, ARAFAH M. Two-Step artificial bee colony algorithm enhancement for QoS-Aware Web service selection problem[J]. IEEE Access, 2019, 7: 21787-21794. DOI:10.1109/ACCESS.2019.2894683
[8]
PUROHIT L, KUMAR S, KSHIRSAGAR D. Analyzing genetic algorithm for web service selection[C]//2015 1st International Conference on Next Generation Computing Technologies. Dehradun, India: IEEE, 2015: 999-1003.
[9]
徐甜, 刘凌霞. 基于改进遗传算法的Web服务优化组合研究[J]. 计算机应用与软件, 2016, 33(5): 24-27.
XU T, LIU L X. On optimisation of Web service composition based on improved genetic algorithm[J]. Computer Applications and Software, 2016, 33(5): 24-27. (in Chinese)
[10]
李笠, 李广鹏, 常亮, 等. 约束进化算法及其应用研究综述[J]. 计算机科学, 2021, 48(4): 1-13.
LI L, LI G P, CHANG L, et al. Survey of constrained evolutionary algorithms and their applications[J]. Computer Science, 2021, 48(4): 1-13. (in Chinese)
[11]
REIMERS N, GUREVYCH I. Sentence-BERT: Sentence embeddings using siamese BERT-networks[C]//Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). Hong Kong, China: Association for Computational Linguistics, 2019: 3982-3992.
[12]
KOHONEN T. The self-organizing map[J]. Proceedings of the IEEE, 1990, 78(9): 1464-1480. DOI:10.1109/5.58325
[13]
杨洁. 服务计算: 服务管理与服务组合流程[M]. 北京: 清华大学出版社, 2017.
YANG J. Service computing: Service management and service composition process[M]. Beijing: Tsinghua University Press, 2017. (in Chinese)
[14]
夏虹, 李增智. 粒子群算法求解Web服务组合中基于QoS的服务选择[J]. 北京邮电大学学报, 2009, 32(4): 63-67.
XIA H, LI Z Z. A particle swarm optimization algorithm for service selection problem based on quality of service in web services composition[J]. Journal of Beijing University of Posts and Telecommunications, 2009, 32(4): 63-67. (in Chinese)
[15]
张旭云. Web服务组合中QoS评估及服务选择的关键技术研究[D]. 南京: 南京大学, 2011.
ZHANG X Y. Research on QoS evaluation and service selection in web service composition[D]. Nanjing: Nanjing University, 2011. (in Chinese)