一种基于神经网络的微服务模型

2019-03-29 08:11刘先莉刘志勤张智慧
西南科技大学学报 2019年1期
关键词:预处理神经元神经网络

刘先莉 杨 雷 刘志勤 张智慧

(西南科技大学计算机科学与技术学院 四川绵阳 621010)

近年来,传统的企业IT系统正逐步向基于云计算基础设施的IT系统演进,软件产品的运行环境发生了深刻的变化,随之而来的是软件本身的模型架构和实现在向“云”化和服务化的方向转型[1]。在传统的IT行业中,大多数软件都是由多个独立系统堆砌组成,这些系统的常见问题是维护成本高、可靠性低和扩展性差。“微服务(Microservice[2])”概念由Lemwis和Fowler在2014年首次定义:一个云应用程序设计模式,意味着应用程序被划分为较小的独立服务,每个服务负责实现一个功能。微服务的思想源于与传统整体式架构(Monolithic Architecture[3])应用的对比。

微服务是“Cloud Native[4]”,它允许在频繁发布不同服务的同时保持系统其他部分的稳定性和可用性,使得更容易开发、理解和维护单个服务[5],但是当作为一个整体实现时,它也呈现出复杂性。使用微服务时,有时需要向不同的应用服务添加一些代码,代码量是重复的;整个应用程序可能只需要部署一小组应用程序服务区域,而微服务模型可能需要构建、测试、部署和运行几十个单独的服务,使得操作和维护的成本增加;而作为一个分布式系统,它引入了复杂性、版本控制、网络延迟等问题。

目前,微服务已经得到良好的应用[6]和对比分析[7],但是并未形成统一的微服务模型方案,针对上述问题,从新的角度研究微服务技术,引入神经网络模型,提出了一种基于神经网络的微服务模型。模型结合了神经网络与微服务,使微服务具备神经元的特性,融入神经网络的优点。在Web应用的实际开发中验证了该模型的实用性和有效性。

1 神经网络

人工神经网络(Artificial neural network,ANN),简称神经网络(Neural network,NN)或类神经网络是模拟人脑神经系中对复杂信息的处理机制的一种数学模型[8]。图1是一个典型的神经网络结构的示意图,可以看出,输入到神经网络的信息通过输入层、隐藏层和输出层的顺序传输到输出层,最终得到神经网络的输出结果。输入层和隐藏层都有n个神经元,输出层有1个神经元。整个网络的输入是x1,x2,x3,…,xn,对应传递给隐藏层的第1,2,3,…,n个神经元中,隐藏层神经元以一定的方式聚集输入层的信息,作为每个神经元的输入,然后通过激励函数的作用产生输出信息。隐藏层神经元的激励函数一般采用非线性函数,隐藏层神经元的输出被传输到输出层,输出层输出作为整个网络的输出信息y。神经网络技术具有诸多优点:

(1)自主学习:对复杂和不确定问题具备自我学习能力,在学习过程中进行自我完善和创新;

(2)信息存储与运算:信息存储与操作集成为一体,即信息的存储反映在神经元连接的分布中[9];

(3)信息综合:能够很好地协调各种输入信息的关系,能够处理各种定量和定性的信息,具有较强的信息综合能力[10];

(4)自适应:善于联想、泛化、类比和推广,任何局部损坏都不会影响整体效果,适应外部变化并保持良好的性能,具有较强的鲁棒性和容错性;

(5)自组织:自适应是基于自组织的实现,依据外部环境的变化进行自组织[11]。

图1 典型神经网络结构示意图Fig.1 Typical neural network structure

2 传统微服务模型

微服务可以根据业务功能的独立性来进行划分[12]。每个单独的业务功能称为服务,每个服务对应一个独立的功能。服务划分是实现微服务架构的重要一步,良好的划分和拆分可以使系统达到松耦合和高内聚的效果[13]。微服务的灵活组装可以满足上层的各种业务处理需求。在需求分析和微服务架构设计过程中,区域动词和名词通常用于划分微服务。例如,对于电子商务后台系统,它可以分为发票、订单、目录、支付、购物车、交易、库存、物流、商品等子系统,每个名词和动词都可以是微服务。通过结合这些微服务,可以实现购买商品的电子商务平台用户的整个业务流程。在此拆分之后,系统具有灵活性、敏捷性和可扩展性的特点,并且形成多个高度自治的微服务。

组合微服务有很多种方法,包括:微服务代理模式、微服务分支模式、微服务异步消息模式、微服务共享数据模式、微服务串联模式和微服务聚合模式[14]。最常见的是微服务串联模式,微服务串联模式结构如图2所示,类似于一个工作流:第一个负责接收请求并响应服务使用方;连接服务后,它与服务1交互;然后服务1与服务2交互;最后,服务2生成的结果通过服务1和服务序列逐个处理,并返回给服务使用方。

图2 微服务串联模式结构示意图Fig.2 Schematic diagram of microservice serial mode structure

3 基于神经网络的微服务模型

3.1 模型概述

Web应用中,假设微服务足够小,将一次数据请求看作一个微服务,将微服务具体化,每个服务都比较简单,作为神经网络的输入数据。在神经网络中,运算是通过大量的神经元联结进行的。神经元处理单元可表示不同的对象,将一个微服务看做一个神经元,只关注于一个业务功能。融入神经网络模型,以达到微服务的灵活组装的目的进而满足软件应用的各种各样的业务处理需求。神经网络中处理单元的类型分为三类:(1)输入单元:把单个微服务数据经过数据预处理得到x1,x2,…,xi,…,xn,将这n个输入数据作为神经网络的输入单元;(2)隐藏单元:隐藏单元由数据库表分类神经元、请求操作分类神经元、条件数据分类神经元和4个返回数据分类神经元(GET,POST,PUT,DELETE)组成;(3)输出单元:模型中只有1个输出单元,输出微服务的执行结果y。图3为基于神经网络的微服务模型结构。

图3 基于神经网络的微服务模型结构Fig.3 Microservice model based on Neural network

3.2 微服务数据预处理

由于微服务数据的特殊性和复杂性,与纯文本数据相比,它具有一定的结构属性,与关系模型数据相比,它具有弱的结构属性。因此,微服务数据是具有半结构化属性的文本数据。微服务数据的预处理过程如下:

步骤1 分词划分。首先要做的数据预处理就是分词(Word Segmentation)[15],由于微服务数据的特殊性,使用正则匹配来分割英文文本,删除所有标点符号和空格,只保留字符和数字,用空格分隔。

pattern = ′,|。|/|;|’|′|[|]|<|>|→|:|"|{|}|~|!|@|#||%|.|&|(|)|-|=|—|+|,|。|、|;|′|′|【|】|·|!| |…|(|)′

步骤 2为每个词创建一个索引。

步骤 3 为每项微服务数据创建一个矩阵,如果词出现标记为1,否则标记为0。

3.3 搭建神经网络

神经网络是由许多神经元的互连形成的,在此基础上构造了由数据库表分类神经元、请求操作分类神经元、条件数据分类神经元和返回数据分类神经元组成的链锁式神经网络,如图4所示。

图4 链锁式神经网络Fig.4 Chain-locked neural network

神经元按照锁链结构依次进行计算处理,链锁式神经网络可以使神经元在空间上增强或扩大作用范围。各类微服务神经元的功能如下:

(1)数据库表分类神经元:确定微服务作用的数据库表,数据库表分类神经元结构如图5所示。对于数据库表采用One-Hot编码向量的表示形式。One-Hot编码即独热编码,又称一位有效编码,它使用N位状态寄存器编码N个状态,每个状态由其自己的寄存器位编码,其中只有一个在任何时候都有效,这解决了分类器不能很好地处理属性数据的问题,并且在一定程度上也起到了扩展特征的作用。对每个数据库表编号,针对每个数据库表建立n维的向量,向量的每个维度表示一个表。式(2)中h表示一个数据库表的向量表示。然后确定神经元的连接权值(w)和内部偏差值(θ),然后输入经过数据预处理的数据x1,x2,…,xi,…,xn,输出结果y由式(1)函数计算得到。

图5 数据库表分类神经元Fig.5 Database table classification neuron

(1)

(2)

(2)条件数据分类神经元:确定微服务请求的条件数据,微服务请求参数主要以“‘参数名称’:‘参数值’”形式传递条件数据参数。

(3)请求操作分类神经元:确定微服务的请求操作类型,请求方法是请求一定的Web页面的程序或用于特定的URL[16]。请求操作分类如下:

① GET:用于请求特定已被识别的资源,经服务器端解析并返回响应实体主体;

② POST:将数据提交到指定的资源来处理请求,数据包含在请求主体中,到达传输实体主体的作用;

③ PUT:用从客户端传递到服务器的数据替换指定的最新内容,然后保存在指定的位置;

④ DELETE:请求服务器删除指定的资源。

(4)返回数据分类神经元:根据神经元(3)请求操作分类神经元的执行结果选择GET,POST,PUT,DELETE 4种不同返回数据分类神经元进行分类,得到微服务要求的返回数据。

4 模型的实践分析

4.1 实验方案

为验证基于神经网络的微服务模型的实用性,根据微服务的分类属性,根据数据库在(material,problem,member)3类表中选取1 000项微服务数据进行实验研究,基于神经网络的微服务模型流程图如图6所示。首先对数据进行预处理,然后根据链锁式神经元依次对数据进行分类处理,进而分类出微服务作用的数据库表,依次分类出微服务条件数据,然后对请求操作进行分类,得出结果进入GET,POST,PUT,DELETE 4组不同返回数据分类的神经元中,最后执行得到结果。实验分别基于神经网络的微服务模型与传统Web应用开发模型开发相同功能的Web应用,将对PC端和手机端进行测试,从数据响应时间进行对比与分析。实验中使用的PC端和手机端的详细测试配置见表1。

图6 基于神经网络的微服务模型流程图Fig.6 Flow chart of microservice model based on neural network

项目PC端手机端品牌联想(LENOVO)OPPO型号昭阳ES2-80R7Plusm系统版本Windows10专业版64位Android5.1.1RAM8 GB3 GBROM1 TB32 GB浏览器Google Chrome66.0.3359.181Google Chrome68.0.3440.70

4.2 实验结果分析

实验中根据对基于神经网络的微服务模型和传统的Web应用开发模型的对比测试得到以下结果。在验证过程中,实现了个人受助详情(help_ask_detail)页面(PC端和手机端浏览器的运行效果界面图略)。实验过程中采用本地JSON格式数据,文字和图片信息均保留在本地,以排除网络等因素对Web应用性能表现的影响。采用2.1节提出的方法对1 000 项微服务数据进行数据预处理,对数据库采取One-Hot编码(material:[ 1 0 0 ],problem:[ 0 1 0 ],member:[ 0 0 1 ])。数据库表分类神经元、条件数据分类神经元、请求操作分类神经元、返回数据分类神经元及最终执行结果都能达到100%准确率,实验结果如表2所示,说明所建立的基于神经网络的微服务模型具有良好的泛化能力。

针对基于神经网络的微服务模型和传统的Web应用开发模型进行对比测试,采用两种模型开发相同功能的Web应用,在PC端和手机端浏览器运行100项、500项和1 000项的微服务数据请求进行测试。图7和图8是数据响应时间统计的对比分析,数据响应时间反映了在不同的微服务模型下针对于相同数据源,微服务数据执行完成所需要的响应时间越短,速度越快,带给用户的体验感越好。从图中可以看出,两种模型得到的结果表明所建立的基于神经网络的微服务模型具有一定的实用性和有效性。

表2 实验结果Table 2 Experimental result

图7 PC端数据响应时间统计Fig.7 Response time statistics of PC-side data

图8 手机端数据响应时间统计Fig.8 Response Time Statistics of Mobile Data

5 结束语

通过将微服务技术和神经网络模型相结合,设计并提出了一种基于神经网络的微服务模型。模型将微服务定义为神经元,且将微服务具体化,把一次数据请求看作一个微服务,作为神经网络的输入数据,微服务既作为输入单元也作为处理单元。实验采取对1 000项微服务数据进行数据预处理,并对数据库表采取One-Hot编码,经过由数据库表分类神经元、请求操作分类神经元、条件数据分类神经元和返回数据分类神经元组成的链锁式神经网络模型处理后,得到微服务的执行结果。实验结果表明该模型通过将微服务处理过程神经网络化,使得Web应用开发过程变得更加灵活,具有一定的实用价值。未来的研究思路是通过融合神经网络信息综合能力、自我学习能力、信息存储与运算和自组织能力等优点,继续优化此模型,并进一步实现微服务扩展、合并、解体等功能,以提高Web应用的开发效率。

猜你喜欢
预处理神经元神经网络
求解奇异线性系统的右预处理MINRES 方法
高COD二噻烷生产废水预处理研究
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
跃动的神经元——波兰Brain Embassy联合办公
基于预处理MUSIC算法的分布式阵列DOA估计
基于神经网络的拉矫机控制模型建立
ERK1/2介导姜黄素抑制STS诱导神经元毒性损伤的作用
毫米波导引头预定回路改进单神经元控制
侧脑室注射DIDS对缺血再灌注脑损伤大鼠神经元凋亡的拮抗作用