基于云计算的微服务动态部署的系统及方法

文档序号:10597025阅读:275来源:国知局
基于云计算的微服务动态部署的系统及方法
【专利摘要】本发明是基于云计算的微服务动态部署的系统,其特征在于:所述的系统包括服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器这几个装置,属于互联网云计算方面的技术领域。目的是提供一种通过为系统配置多维度的参数,并设计与这些参数数据结构相对应的条件匹配算法,公开一种微服务的动态部署、管理方法和系统,让云计算微服务在多维度的条件下进行精细匹配,确保每个服务在目标服务区域、并发能力要求以及运行时环境方面的限制因素都得到最优的匹配,使得服务配置达到API级别的粒度,使得计算资源得到更加充分的使用,在平台层(PaaS)优化计算资源的动态分配能力。
【专利说明】
基于云计算的微服务动态部署的系统及方法
技术领域
[0001]本发明涉及一种微服务动态部署的系统及方法,特别是基于云计算的微服务动态部署的系统及方法。
【背景技术】
[0002]云计算(CloudComputing)是基于互联网的相关服务的增加、使用和交付模式,通过互联网来提供动态易扩展且虚拟化的计算资源、存储资源或其他服务资源。云计算(Cloud Computing)是分布式计算(Distributed Computing)、并行计算(ParallelComput i ng )、效用计算(Ut i I i ty Comput ing )、网络存储(Ne twork StorageTechnologies)、虚拟化(Virtualizat1n)、负载均衡(LoadBalance)、热备份冗余(HighAvailable)等传统计算机和网络技术发展融合的产物。
[0003]云计算作为一种服务,是按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,月艮务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
[0004]云计算是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
[0005]云计算有如下特点:
[0006](I)超大规模
[0007]“云”具有相当的规模,Google云计算已经拥有100多万台服务器,Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。“云”能赋予用户前所未有的计算能力。
[0008](2)虚拟化
[0009]云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。
[0010](3)高可靠性
[0011]“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。
[0012](4)通用性
[0013]云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。
[0014](5)高可扩展性
[0015]“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。[ΟΟ??] (6)按需服务
[0017]“云”是一个庞大的资源池,你按需购买;云可以像自来水,电,煤气那样计费。
[0018]⑴低成本
[0019]由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。

【发明内容】

[0020]本发明的目的是在于解决现有的云服务操作性复杂和响应能力差等问题。而提供基于云计算的微服务动态部署的系统及方法。
[0021]本发明为了实现上述目的而采用的技术方案为:基于云计算的微服务动态部署的系统,其特征在于:所述的系统包括服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器,所述的服务管理Portal面向服务的开发者/提供者,为开发者/提供者提供服务部署、操作界面和服务管理的相关工具,所述的工具包括服务创建、月艮务修改、服务删除、服务停用和服务统计;所述的系统管理Portal为系统管理员提供管理门户,存储系统管理信息和系统配置信息,所述系统管理Portal的功能包括添加服务器、修改服务器、删除服务器、服务器网络配置、服务器域名配置和服务器分配记录;所述的服务部署调度装置是负责所有微服务的部署调度、部署策略计算和部署实施;所述的服务程序管理装置是一个文件存储系统,存储所有由服务开发者/提供者提交到系统的微服务程序文件,并管理所有的文件版本,所存储和管理的程序文件包括源代码或编译过的程序文件,服务容器为运行微服务程序的运行时环境,包括运行了某种计算机语言运行时环境的虚拟机、物理机或其他云主机;所述的服务容器是微服务的运行环境,微服务通过其对外提供服务接口、服务的相关功能以及服务的响应能力,所以每台服务容器都具有对外的网络地址,使得服务使用者(应用程序或终端)能够通过互联网访问服务。
[0022]进一步的,所述的服务管理Portal和系统管理Portal根据系统是否要求或允许服务开发者/提供者和系统管理者能够通过外部网络进行相关管理和配置,选择性地配有对外的网络地址。
[0023]进一步的,所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器设于同一个局域网。
[0024]进一步的,所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器设于不同的局域网内,当服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器设于不同的局域网内时,服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器相互之间能够通过网络相互联通和彼此访问。
[0025]进一步的,所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器相互之间的交互方式包括REST AP1.ffeb Service和RPC。
[0026]采用上述任一项所述基于云计算的微服务动态部署系统的方法,所述的方法包括:
[0027]1)、系统管理员通过系统管理Portal配置每台服务容器的信息,包括:服务器的IP地址、DNS域名、内存总量、网络出口带宽、所处区域(或服务区域)、支持的运行时环境、支持的服务接口通信协议(如TCP/HTTP/HTTPS/Websocket/CoAP等)和可支持的访问并发量;
[0028]2)、当服务开发者/提供者访问服务管理Portal,服务管理Portal通过系统接口 B从系统管理Portal获取服务容器的配置信息,并将相关信息呈现给服务管理Portal的使用者,便于服务开发者/提供者选择服务容器创建的相关参数,这些参数包括:可用的服务容器运行时环境、服务容器的区域、可用的服务容器内存和可用的服务容器并发量;
[0029]3)、微服务提供者通过服务管理Portal创建一个服务容器实例(虚拟的服务容器),创建微服务容器实例时,需要指定如下信息,包括:容器实例名称、目标服务区域、运行时环境类型、服务接口通信协议和访问并发量;
[0030]4)、当微服务提供者通过服务管理Portal提交了创建服务容器实例的配置参数后,服务管理Portal通过系统A接口将相关参数提交给服务部署调度装置,服务部署调度装置根据服务部署条件匹配算法为该服务容器实例选择一台或多台服务容器,并将选中的服务容器的空间(这里是一个虚拟的概念,一个空间由一组服务资源参数决定,包括但不限于:内存使用量、网络带宽使用量、支持的访问并发量等)分配给对应的服务容器实例,为该服务容器实例生成一个唯一标识CID,同时将为其分配的空间信息、对应的服务容器的信息(包括:DNS域名、服务区域等)与CID关联并写入数据库;
[0031]5)、服务部署调度装置将创建服务容器实例的信息通过A接口返回给服务管理Portal,服务管理Portal将服务容器实例的相关信息写入数据库,并将服务容器实例的相关信息呈现给使用者,呈现的方式包括但不限于HTML页面和运行在任何计算机或移动终端的客户端软件,所呈现的信息包括:容器实例名称、运行时环境类型、容器版本、容器能力、容器支持的通信协议和创建时间等;
[0032]6)、微服务开发者/提供者通过服务管理Portal界面选择某个已经创建的服务容器实例,并向其提交(添加)一个微服务应用程序,用户提交微服务应用程序后,服务管理Portal通过调用系统接口 C让用户将微服务应用程序上传至服务程序管理装置,服务管理Portal再通过系统A接口将微服务应用程序的相关信息提交给服务部署调度装置,信息包括服务应用程序在服务程序管理装置中存储位置、访问路径和该微服务对应的服务容器实例;
[0033]7)、服务部署调度装置根据服务管理Portal提交的服务应用程序信息通过系统E接口获取服务应用程序并通过F接口提交给服务容器实例对应的服务容器装置里,并由服务容器的运行时环境启动运行。服务部署调度装置为该微服务生成一个唯一标识AID,并连同微服务的相关信息和它在服务容器中运行的访问路径一起写入数据库;
[0034]8)、服务部署调度装置将微服务在容器中运行的的访问路径和其它相关信息返回给服务管理Portal,包括:微服务的标识AID和服务配置参数,服务管理Portal将微服务的相关信息存入数据库,并呈现给服务管理Portal的使用者,呈现方式包括HTML页面和运行在各种计算或移动设备终端的应用程序界面;
[0035]9)、微服务使用客户端或应用程序根据在服务管理Portal呈现的微服务的访问路径,和服务接口定义的通信协议访问微服务,并使用其提供的服务能力;由于一个微服务根据其在部署时所要求的响应能力,被部署在一个或多个具有相同DNS域名的服务容器上,所以当多个服务使用客户端访问服务时,访问的路径被分配到一台相同的服务容器上或不同的服务容器上,实现服务的负载均衡与服务的高可用性。
[0036]进一步的,每台服务容器设有对应一条配置信息记录,配置信息包括:服务容器的中央处理器能力(如CPU型号和核数)、内存容量、网络带宽、访问并发量、运行时环境、服务区域、服务接口协议和DNS域名,所述的运行时环境为一个整数,为所支持的每种运行时环境类型值的二进制或值,每种运行时环境对应的计算机语言或类型由一个二进制数表示,其二进制数的位数根据系统所支持的运行时环境种类数而定;所述服务区域为一个整数,为所服务区域表示值的二进制或值,每个服务区域由一个二进制数表示,其二进制数的位数根据系统所支持的服务区域数而定;所述服务接口协议为一个整数,为所支持的所有通信协议的表示值的二进制或值,每种通信协议由一个二进制数表示,其二进制数的位数根据系统所支持的总的通信协议数而定。
[0037]更进一步的,所述的每台服务容器至少分配一个DNS访问域名,其中一台或多台服务容器具有相同的域名,所述的域名参数包括:一个前缀、容器所支持的运行时环境标识、容器姐妹数(即具有相同域名的容器数)、该容器所支持的服务区域标识、一个序号和域名后缀,所述的前缀为任意字符串;所述的容器姐妹数为具有相同域名的容器数量N,若一个微服务程序被部署到该容器,则同样的应用程序也会被部署到其他N-1台姐妹容器上;所述的序号为同类容器的一个序列标识,表示具有多组同类容器,同类容器指它们具有相同的运行时环境,相同的容器姐妹数,相同的服务区域;所述的域名前缀、容器所支持的运行时环境标识、容器姐妹数、容器所支持的服务区域标识和序号一起连成的字符串对应一个二级域名或其他级子域名,作为该容器的标识;所述的域名后缀为一级域名(如dasudian.com)或包含了子域名的全域名字符串。
[0038]进一步的,所述的服务部署条件匹配算法如下:
[0039]a)、服务管理Portal将用户欲创建的容器实例的配置参数提交给服务部署调度装置,参数包括:目标服务区域、容器运行时环境、通信协议、要求的内存量和要求访问并发量;
[0040]b)、服务部署调度装置查询系统配置中的通信协议与域名对应表,将在第a步中获得的容器实例要求的通信协议与该对应表中的协议标识进行二进制与运算,若与运算结果为I,则将对应的域名放入备选;若与运算结果为O,则将忽略掉对应的域名;通过匹配得到一个备选DNS列表LI。
[0041]C)、将在第a步中获得的容器实例要求的运行时环境与域名备选列表LI里的每个域名的运行时环境标识做二进制与运算,若与运算结果为I,则将对应的域名放入备选列表L2;若与运算结果为O,则将忽略掉对应的域名,通过匹配后得到一个备选DNS域名列表L2;
[0042]d)、将在第a步中获得的容器实例要求的目标服务区域与域名备选列表L2中的每个域名的服务区域标识做二进制与运算,将每个域名对应的与运算结果按从大到小的顺序排序,得到备选域名列表L3;
[0043]e)、从备选域名列表L3中选出第一个域名(在第d步中获得与运算值结果最大者),并查询可用服务容器表(可用服务容器表信息包括:容器标识符ID、容器可用内存量、可分配的访问并发量和对应的DNS域名),若能查询到与所选出的域名对应的服务容器SC (SC可能为一台容器,或为多台姐妹容器),则进入第f步,否则按顺序从域名列表L3中选出下一条域名,并重复第e步;
[0044]f )、根据在第e步中选出的域名所对应的容器姐妹数,做以下两种情况的处理:f-a)、容器姐妹数为I,则比较在第a步中获得的容器实例要求的内存量或最大访问并发量,定义为要求能力值CH具体选用那个能力参数做匹配由具体的系统实现而定),与在第e步中获得的容器SC的可用内存量或可用访问并发量,定义为可用能力值Ca作比较,若前者Cr小于后者Ca,则该容器SC被选中为所创建的容器实例提供服务空间,并同时将后者值减去前者值得到一个剩余的可用内存量或剩余的可用访问并发量,称为剩余可用能力值Ct,并更新可用服务容器表;若前者Cr大于后者Ca,则重复第e步,选出新的服务容器SC;
[0045]f-b)、容器姐妹数为η>1,则将第a步中获得的容器实例要求的内存量或最大访问并发量,定义为要求能力值Cr,除以η,商Cn,余Cm,比较Cn值与在第e步中获得的容器SC中某台姐妹容器的可用内存量或可用访问并发量,定义为可用能力值Ca,若前者Cn小于后者Ca,则将Cn分配给SC中的每台姐妹容器承担,并将Cm分成能力单元随机分配给其中的Cm台姐妹容器承担,将每台姐妹容器的可用能力值Ca减去其所承担的能力总值得到剩余的可用能力值Ct,并更新可用服务容器表;若前者Cn大于后者Ca,,则重复第e步,选出新的服务容器SC;
[0046]g)、在第f步中,若某服务容器SC(包括多台姐妹容器的情况)被选中为所创建的容器实例提供服务空间,并将原可用能力值Ca减去被分配掉的Cr之后得到的剩余可用能力值Ct小于某个阈值CO,则将该容器SC从可用容器表中删除,并将其信息记录到不可用容器表,不可用容器表包含的信息包括容器在系统中的唯一标识ID和容器对应的域名。
[0047]采用上述技术方案的有益效果是:本发明通过为系统配置多维度的参数,并设计与这些参数数据结构相对应的条件匹配算法,公开一种微服务的动态部署、管理方法和系统,让云计算微服务在多维度的条件下进行精细匹配,确保每个服务在目标服务区域、并发能力要求以及运行时环境方面的限制因素都得到最优的匹配,使得服务配置达到API级别的粒度,使得计算资源得到更加充分的使用,在平台层(PaaS)优化计算资源的动态分配能力。本发明所涉及服务部署方法所涉及配置项的数据结构设计和算法,优化部署过程中的计算复杂度,使得在大规模集群下的服务部署和管理更加快速和简单;本发明独立于计算资源基础架构,适用于物理机环境、虚拟机环境或公有云主机环境,通过与云计算的基础架构层配合,实现更加灵活、高精度、高效的服务资源配置。
【附图说明】
[0048]图1为本发明所述的整体系统框图;
[0049]图2为本发明所涉动态微服务部署系统所创建的一个服务容器实例的显示界面样例;
[0050]图3为本发明所涉的微服务部署流程和微服务程序提交过程示意图;
[0051 ]图4为本发明中所述的微服务被访问的路径示意图;
[0052]图5为本发明所涉及的服务容器配置参数表的示意图;
[0053]图6为本发明所涉及的服务容器的域名结构的示意图;
[0054]图7为系统所支持的通信协议与域名的对应表示意图;
[0055]图8为示例:创建的容器实例要求支持的协议标识与某台/组容器支持的协议标识作二进制与操作,结果为I的示意图;
[0056]图9为示例:创建的容器实例要求支持的协议标识与某台/组容器支持的协议标识作二进制与操作,结果为O的示意图;
[0057]图10为示例:创建的容器实例要求支持的运行时环境标识与某台/组容器支持的运行时环境标识作二进制与操作,结果为I的示意图;
[0058]图11为示例:创建的容器实例要求支持的运行时环境标识与某台/组容器支持的运行时环境标识作二进制与操作,结果为O的示意图;
[0059]图12为示例:创建的容器实例要求支持的服务区域标识与某台/组容器支持的服务区域标识作二进制与操作,结果值为将按从大到小的顺序将对应的DNS域名进行排序的示意图;
[0060]图13为本发明所涉及系统的可用容器信息表,表信息包括但不限于:可用容器ID、可用的内存量、可用并发量、容器对应的域名等的示意图;
[0061]图14为本发明所涉及系统的不可用容器信息表,表信息包括但不限于:不可用容器ID、容器对应的域名的示意图。
【具体实施方式】
[0062]以下结合附图和本发明优选的具体实施例对本发明的内容作进一步地说明。所举实例只用于解释本发明,并非用于限定本发明的范围。
[0063]如图1至图14中所示,本方案中所述的基于云计算的微服务动态部署的系统,所述的系统包括服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器,所述的服务管理Portal面向服务的开发者/提供者,为开发者/提供者提供服务部署、操作界面和服务管理的相关工具,所述的工具包括服务创建、服务修改、服务删除、服务停用和服务统计;所述的系统管理Portal为系统管理员提供管理门户,存储系统管理信息和系统配置信息,所述系统管理Portal的功能包括添加服务器、修改服务器、删除服务器、服务器网络配置、服务器域名配置和服务器分配记录;所述的服务部署调度装置是负责所有微服务的部署调度、部署策略计算和部署实施;所述的服务程序管理装置是一个文件存储系统,存储所有由服务开发者/提供者提交到系统的微服务程序文件,并管理所有的文件版本,所存储和管理的程序文件包括源代码或编译过的程序文件,服务容器为运行微服务程序的运行时环境,包括运行了某种计算机语言运行时环境的虚拟机、物理机或其他云主机;所述的服务容器是微服务的运行环境,微服务通过其对外提供服务接口、服务的相关功能以及服务的响应能力,所以每台服务容器都具有对外的网络地址,使得服务使用者(应用程序或终端)能够通过互联网访问服务,在本方案中所述的服务管理Portal和系统管理Portal根据系统是否要求或允许服务开发者/提供者和系统管理者能够通过外部网络进行相关管理和配置,选择性地配有对外的网络地址;在本方案中所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器设于同一个局域网,当然也可以是设在不同的局域网内,但是当所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器是设在不同的局域网内时,所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器相互之间能够通过网络相互联通和彼此访问即可;而在本方案中所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器采用的是设于同一个局域网内;在本方案中所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器相互之间的交互方式包括REST API,Web Service和RPC。
[0064]在本方案中,采用上述中所述基于云计算的微服务动态部署系统的方法,所述的方法包括:
[0065]1)、系统管理员通过系统管理Portal配置每台服务容器的信息,包括:服务器的IP地址、DNS域名、内存总量、网络出口带宽、所处区域(或服务区域)、支持的运行时环境、支持的服务接口通信协议(如TCP/HTTP/HTTPS/Websocket/CoAP等)和可支持的访问并发量;
[0066]2)、当服务开发者/提供者访问服务管理Portal,服务管理Portal通过系统接口 B从系统管理Portal获取服务容器的配置信息,并将相关信息呈现给服务管理Portal的使用者,便于服务开发者/提供者选择服务容器创建的相关参数,这些参数包括:可用的服务容器运行时环境、服务容器的区域、可用的服务容器内存和可用的服务容器并发量;
[0067]3)、微服务提供者通过服务管理Portal创建一个服务容器实例(虚拟的服务容器),创建微服务容器实例时,需要指定如下信息,包括:容器实例名称、目标服务区域、运行时环境类型、服务接口通信协议和访问并发量;
[0068]4)、当微服务提供者通过服务管理Portal提交了创建服务容器实例的配置参数后,服务管理Portal通过系统A接口(见图1)将相关参数提交给服务部署调度装置,服务部署调度装置根据服务部署条件匹配算法为该服务容器实例选择一台或多台服务容器,并将选中的服务容器的空间(这里是一个虚拟的概念,一个空间由一组服务资源参数决定,包括但不限于:内存使用量、网络带宽使用量、支持的访问并发量等)分配给对应的服务容器实例,为该服务容器实例生成一个唯一标识CID,同时将为其分配的空间信息、对应的服务容器的信息(包括:DNS域名、服务区域等)与CID关联并写入数据库;
[0069]5)、服务部署调度装置将创建服务容器实例的信息通过A接口返回给服务管理Portal,服务管理Portal将服务容器实例的相关信息写入数据库,并将服务容器实例的相关信息呈现给使用者,呈现的方式包括但不限于HTML页面和运行在任何计算机或移动终端的客户端软件,所呈现的信息包括:容器实例名称、运行时环境类型、容器版本、容器能力、容器支持的通信协议和创建时间等(如图2);
[0070]6)、微服务开发者/提供者通过服务管理Portal界面选择某个已经创建的服务容器实例(如图2),并向其提交(添加)一个微服务应用程序,用户提交微服务应用程序后,月艮务管理Portal通过调用系统接口 C让用户将微服务应用程序上传至服务程序管理装置(如图3),服务管理Portal再通过系统A接口将微服务应用程序的相关信息提交给服务部署调度装置,信息包括服务应用程序在服务程序管理装置中存储位置、访问路径和该微服务对应的服务容器实例;
[0071]7)、服务部署调度装置根据服务管理Portal提交的服务应用程序信息通过系统E接口获取服务应用程序并通过F接口提交给服务容器实例对应的服务容器装置里(如图3),并由服务容器的运行时环境启动运行。服务部署调度装置为该微服务生成一个唯一标识AID,并连同微服务的相关信息和它在服务容器中运行的访问路径一起写入数据库;
[0072]8)、服务部署调度装置将微服务在容器中运行的的访问路径和其它相关信息返回给服务管理Portal,包括:微服务的标识AID和服务配置参数,服务管理Portal将微服务的相关信息存入数据库,并呈现给服务管理Portal的使用者,呈现方式包括HTML页面和运行在各种计算或移动设备终端的应用程序界面;
[0073]9)、微服务使用客户端或应用程序根据在服务管理Portal呈现的微服务的访问路径,和服务接口定义的通信协议访问微服务,并使用其提供的服务能力;由于一个微服务根据其在部署时所要求的响应能力,被部署在一个或多个具有相同DNS域名的服务容器上,所以当多个服务使用客户端访问服务时,访问的路径被分配到一台相同的服务容器上或不同的服务容器上,实现服务的负载均衡与服务的高可用性如图4所示。
[0074]在本方案中,每台服务容器都对应一条配置信息记录,如图5所示,配置信息包括:服务容器的中央处理器能力(如CPU型号,核数等)、可用的内存容量、可用的网络带宽、可用的访问并发量、支持的运行时环境、服务区域、支持的服务接口协议和DNS域名等。其中支持的运行时环境为一个整数,为所支持的每种运行时环境类型值的二进制或值(如图5),在本发明所涉及的系统内,每种运行时环境对应的计算机语言或类型由一个二进制数表示,其二进制数的位数根据系统所支持的运行时环境种类数而定,比如,如果系统总共支持8种运行时环境,则每个运行时环境由一个8位(一个字节)的二进制数值表示,如00000001(整数I)代表Java,00000010(整数2)代表C语言,00000100(整数4)代表PHP等,具体的某个值代表某种运行时环境,本发明不作限制,可以在具体的系统实现中定义。
[0075]同样,每台服务容器的服务区域也为一个整数,为所服务区域表示值的二进制或值(如图5),在本发明所涉及的系统内,每个服务区域由一个二进制数表示,其二进制数的位数根据系统所支持的服务区域数而定,比如,如果系统总共支持8个服务区域,则每个服务区域由一个8位(一个字节)的二进制数值表示,如00000001 (整数I)代表华南区,00000010(整数2)代表华中区,00000100(整数4)代表华北区等,具体的某个值代表某个服务区域,本发明不作限制,可以在具体的系统实现中定义。
[0076]同样,每台服务容器支持的通信协议也为一个整数,为所支持的所有通信协议的表示值的二进制或值(如图5),在本发明所涉及的系统内,每种通信协议由一个二进制数表示,其二进制数的位数根据系统所支持的总的通信协议数而定,比如,如果系统总共支持4个服务区域,则每个服务区域由一个4位(半个字节)的二进制数值表示,如0001(整数I)代表HTTP ,0010(整数2)代表HTTPS ,0100(整数4)代表Websocket等,具体的某个值代表某种通信协议,本发明不作限制,可以在具体的系统实现中定义。
[0077]本发明所涉及的服务容器配置,每台服务容器必须被分配一个DNS访问域名,且可以一台或多台容器具有相同的域名,每个域名由如下参数决定:一个前缀、容器所支持的运行时环境标识、容器姐妹数(即具有相同域名的容器数)、该容器所支持的服务区域标识、一个序号和域名后缀,如图6所示。其中,前缀为任意字符串,具体的系统实现时,可以定义为一个有意义的字符串;容器姐妹数为具有相同域名的容器数量N,若一个微服务程序被部署到该容器,则同样的应用程序也会被部署到其他N-1台姐妹容器上,则当微服务使用客户端访问该微服务时,其访问路径可以到达任何一台姐妹容器,以实现微服务的负载均衡和高可用性。序号为同类容器的一个序列标识,表示具有多组同类容器,同类容器指它们具有相同的运行时环境,相同的容器姐妹数,相同的服务区域。域名前缀与容器所支持的运行时环境标识、容器姐妹数、容器所支持的服务区域标识、序号一起连成的字符串对应一个二级域名或其他级子域名,作为该容器的标识。域名后缀为一级域名(如dasudian.com)或包含了子域名的全域名字符串,一个完整的容器域名不例为:“dac3261.paas.dasudian.com”。
[0078]具体的说在本方案中,所述的服务部署条件匹配算法如下:
[0079]a)、服务管理Portal将用户欲创建的容器实例的配置参数提交给服务部署调度装置,参数包括:目标服务区域、容器运行时环境、通信协议、要求的内存量和要求访问并发量;
[0080]b)、服务部署调度装置查询系统配置中的通信协议与域名对应表(如图7),将在第
7-1步中获得的容器实例要求的通信协议与该对应表中的协议标识进行二进制与运算,如图8所示,若与运算结果为1(如图8),则将对应的域名放入备选;若与运算结果为0(图9),则将忽略掉对应的域名;通过匹配得到一个备选DNS列表LI。
[0081]C)、将在第a步中获得的容器实例要求的运行时环境与域名备选列表LI里的每个域名的运行时环境标识做二进制与运算,若与运算结果为1(如图10),则将对应的域名放入备选列表L2;若与运算结果为O (如图11),则将忽略掉对应的域名,通过匹配后得到一个备选DSN域名列表L2;
[0082]d)、将在第a步中获得的容器实例要求的目标服务区域与域名备选列表L2中的每个域名的服务区域标识做二进制与运算,如图12所示,将每个域名对应的与运算结果按从大到小的顺序排序,得到备选域名列表L3;
[0083]e)、从备选域名列表L3中选出第一个域名(如图13所示,在第d步中获得与运算值结果最大者),并查询可用服务容器表(可用服务容器表信息包括:容器标识符ID、容器可用内存量、可分配的访问并发量和对应的DNS域名),若能查询到与所选出的域名对应的服务容器SC(SC可能为一台容器,或为多台姐妹容器),则进入第f步,否则按顺序从域名列表L3中选出下一条域名,并重复第e步;
[0084]f)、根据在第e步中选出的域名所对应的容器姐妹数,做以下两种情况的处理:
[0085]f-a)、容器姐妹数为I,则比较在第a步中获得的容器实例要求的内存量或最大访问并发量,定义为要求能力值Cr(具体选用那个能力参数做匹配由具体的系统实现而定),与在第e步中获得的容器SC的可用内存量或可用访问并发量,定义为可用能力值Ca作比较,若前者Cr小于后者Ca,则该容器SC被选中为所创建的容器实例提供服务空间,并同时将后者值减去前者值得到一个剩余的可用内存量或剩余的可用访问并发量,称为剩余可用能力值Ct,并更新可用服务容器表(图13);若前者Cr大于后者Ca,则重复第e步,选出新的服务容器SC;
[0086]f-b)、容器姐妹数为η>1,则将第a步中获得的容器实例要求的内存量或最大访问并发量,定义为要求能力值Cr,除以η,商Cn,余Cm,比较Cn值与在第e步中获得的容器SC中某台姐妹容器的可用内存量或可用访问并发量,定义为可用能力值Ca,若前者Cn小于后者Ca,则将Cn分配给SC中的每台姐妹容器承担,并将Cm分成能力单元随机分配给其中的Cm台姐妹容器承担,将每台姐妹容器的可用能力值Ca减去其所承担的能力总值得到剩余的可用能力值Ct,并更新可用服务容器表(图13);若前者Cn大于后者Ca,,则重复第e步,选出新的服务容器SC;
[0087]g)、在第f步中,若某服务容器SC(包括多台姐妹容器的情况)被选中为所创建的容器实例提供服务空间,并将原可用能力值Ca减去被分配掉的Cr之后得到的剩余可用能力值Ct小于某个阈值CO,则将该容器SC从可用容器表(图13)中删除,并将其信息记录到不可用容器表(图14),不可用容器表包含的信息包括容器在系统中的唯一标识ID和容器对应的域名。
[0088]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.基于云计算的微服务动态部署的系统,其特征在于:所述的系统包括服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器, 所述的服务管理Portal面向服务的开发者/提供者,为开发者/提供者提供服务部署、操作界面和服务管理的相关工具,所述的工具包括服务创建、服务修改、服务删除、服务停用和服务统计; 所述的系统管理Portal为系统管理员提供管理门户,存储系统管理信息和系统配置信息,所述系统管理Portal的功能包括添加服务器、修改服务器、删除服务器、服务器网络配置、服务器域名配置和服务器分配记录; 所述的服务部署调度装置是负责所有微服务的部署调度、部署策略计算和部署实施; 所述的服务程序管理装置是一个文件存储系统,存储所有由服务开发者/提供者提交到系统的微服务程序文件,并管理所有的文件版本,所存储和管理的程序文件包括源代码或编译过的程序文件,服务容器为运行微服务程序的运行时环境,包括运行了某种计算机语言运行时环境的虚拟机、物理机或其他云主机; 所述的服务容器是微服务的运行环境,微服务通过其对外提供服务接口、服务的相关功能以及服务的响应能力,所以每台服务容器都具有对外的网络地址,使得服务使用者(应用程序或终端)能够通过互联网访问服务。2.根据权利要求1所述的基于云计算的微服务动态部署的系统,其特征在于:所述的服务管理Portal和系统管理Portal根据系统是否要求或允许服务开发者/提供者和系统管理者能够通过外部网络进行相关管理和配置,选择性地配有对外的网络地址。3.根据权利要求1所述的基于云计算的微服务动态部署的系统,其特征在于:所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器设于同一个局域网。4.根据权利要求1所述的基于云计算的微服务动态部署的系统,其特征在于:所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器设于不同的局域网内,当服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器设于不同的局域网内时,服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器相互之间能够通过网络相互联通和彼此访问。5.根据权利要求1所述的基于云计算的微服务动态部署的系统,其特征在于:所述的服务管理Portal、系统管理Portal、服务部署调度装置、服务程序管理装置和服务容器相互之间的交互方式包括REST APKffeb Service和RPC。6.采用如权利要求1至5中任一项所述基于云计算的微服务动态部署系统的方法,其特征在于:所述的方法包括: 6-1)、系统管理员通过系统管理Portal配置每台服务容器的信息,包括:服务器的IP地址、DNS域名、内存总量、网络出口带宽、所处区域(或服务区域)、支持的运行时环境、支持的服务接口通信协议(如TCP/HTTP/HTTPS/Websocket/CoAP等)和可支持的访问并发量; 6-2)、当服务开发者/提供者访问服务管理Portal,服务管理Portal通过系统接口 B从系统管理Portal获取服务容器的配置信息,并将相关信息呈现给服务管理Portal的使用者,便于服务开发者/提供者选择服务容器创建的相关参数,这些参数包括:可用的服务容器运行时环境、服务容器的区域、可用的服务容器内存和可用的服务容器并发量; 6-3)、微服务提供者通过服务管理Portal创建一个服务容器实例(虚拟的服务容器),创建微服务容器实例时,需要指定如下信息,包括:容器实例名称、目标服务区域、运行时环境类型、服务接口通信协议和访问并发量; 6-4)、当微服务提供者通过服务管理Portal提交了创建服务容器实例的配置参数后,服务管理Portal通过系统A接口将相关参数提交给服务部署调度装置,服务部署调度装置根据服务部署条件匹配算法为该服务容器实例选择一台或多台服务容器,并将选中的服务容器的空间(这里是一个虚拟的概念,一个空间由一组服务资源参数决定,包括但不限于:内存使用量、网络带宽使用量、支持的访问并发量等)分配给对应的服务容器实例,为该服务容器实例生成一个唯一标识CID,同时将为其分配的空间信息、对应的服务容器的信息(包括:DNS域名、服务区域等)与CID关联并写入数据库; 6-5)、服务部署调度装置将创建服务容器实例的信息通过A接口返回给服务管理Portal,服务管理Portal将服务容器实例的相关信息写入数据库,并将服务容器实例的相关信息呈现给使用者,呈现的方式包括但不限于HTML页面和运行在任何计算机或移动终端的客户端软件,所呈现的信息包括:容器实例名称、运行时环境类型、容器版本、容器能力、容器支持的通信协议和创建时间等; 6-6)、微服务开发者/提供者通过服务管理Portal界面选择某个已经创建的服务容器实例,并向其提交(添加)一个微服务应用程序,用户提交微服务应用程序后,服务管理Portal通过调用系统接口 C让用户将微服务应用程序上传至服务程序管理装置,服务管理Portal再通过系统A接口将微服务应用程序的相关信息提交给服务部署调度装置,信息包括服务应用程序在服务程序管理装置中存储位置、访问路径和该微服务对应的服务容器实例; 6-7)、服务部署调度装置根据服务管理Portal提交的服务应用程序信息通过系统E接口获取服务应用程序并通过F接口提交给服务容器实例对应的服务容器装置里,并由服务容器的运行时环境启动运行。服务部署调度装置为该微服务生成一个唯一标识AID,并连同微服务的相关信息和它在服务容器中运行的访问路径一起写入数据库; 6-8)、服务部署调度装置将微服务在容器中运行的的访问路径和其它相关信息返回给服务管理Portal,包括:微服务的标识AID和服务配置参数,服务管理Portal将微服务的相关信息存入数据库,并呈现给服务管理Portal的使用者,呈现方式包括HTML页面和运行在各种计算或移动设备终端的应用程序界面; 6-9)、微服务使用客户端或应用程序根据在服务管理Portal呈现的微服务的访问路径,和服务接口定义的通信协议访问微服务,并使用其提供的服务能力;由于一个微服务根据其在部署时所要求的响应能力,被部署在一个或多个具有相同DNS域名的服务容器上,所以当多个服务使用客户端访问服务时,访问的路径被分配到一台相同的服务容器上或不同的服务容器上,实现服务的负载均衡与服务的高可用性。7.根据权利要求6中所述基于云计算的微服务动态部署系统的方法,其特征在于:每台服务容器设有对应一条配置信息记录,配置信息包括:服务容器的中央处理器能力(如CPU型号和核数)、内存容量、网络带宽、访问并发量、运行时环境、服务区域、服务接口协议和DNS域名,所述的运行时环境为一个整数,为所支持的每种运行时环境类型值的二进制或值,每种运行时环境对应的计算机语言或类型由一个二进制数表示,其二进制数的位数根据系统所支持的运行时环境种类数而定;所述服务区域为一个整数,为所服务区域表示值的二进制或值,每个服务区域由一个二进制数表示,其二进制数的位数根据系统所支持的服务区域数而定;所述服务接口协议为一个整数,为所支持的所有通信协议的表示值的二进制或值,每种通信协议由一个二进制数表示,其二进制数的位数根据系统所支持的总的通信协议数而定。8.根据权利要求7中所述基于云计算的微服务动态部署系统的方法,其特征在于:所述的每台服务容器至少分配一个DNS访问域名,其中一台或多台服务容器具有相同的域名,所述的域名参数包括:一个前缀、容器所支持的运行时环境标识、容器姐妹数(即具有相同域名的容器数)、该容器所支持的服务区域标识、一个序号和域名后缀,所述的前缀为任意字符串;所述的容器姐妹数为具有相同域名的容器数量N,若一个微服务程序被部署到该容器,则同样的应用程序也会被部署到其他N-1台姐妹容器上;所述的序号为同类容器的一个序列标识,表示具有多组同类容器,同类容器指它们具有相同的运行时环境,相同的容器姐妹数,相同的服务区域;所述的域名前缀、容器所支持的运行时环境标识、容器姐妹数、容器所支持的服务区域标识和序号一起连成的字符串对应一个二级域名或其他级子域名,作为该容器的标识;所述的域名后缀为一级域名(如dasudian.com)或包含了子域名的全域名字符串。9.根据权利要求6中所述基于云计算的微服务动态部署系统的方法,其特征在于:所述的服务部署条件匹配算法如下: 9-1)、服务管理Portal将用户欲创建的容器实例的配置参数提交给服务部署调度装置,参数包括:目标服务区域、容器运行时环境、通信协议、要求的内存量和要求访问并发量; 9-2)、服务部署调度装置查询系统配置中的通信协议与域名对应表,将在第9-1步中获得的容器实例要求的通信协议与该对应表中的协议标识进行二进制与运算,若与运算结果为I,则将对应的域名放入备选;若与运算结果为O,则将忽略掉对应的域名;通过匹配得到一个备选DNS列表LI。 9-3)、将在第9-1步中获得的容器实例要求的运行时环境与域名备选列表LI里的每个域名的运行时环境标识做二进制与运算,若与运算结果为I,则将对应的域名放入备选列表L2;若与运算结果为O,则将忽略掉对应的域名,通过匹配后得到一个备选DNS域名列表L2; 9-4)、将在第9-1步中获得的容器实例要求的目标服务区域与域名备选列表L2中的每个域名的服务区域标识做二进制与运算,将每个域名对应的与运算结果按从大到小的顺序排序,得到备选域名列表L3; 9-5)、从备选域名列表L3中选出第一个域名(在第9-4步中获得与运算值结果最大者),并查询可用服务容器表(可用服务容器表信息包括:容器标识符ID、容器可用内存量、可分配的访问并发量和对应的DNS域名),若能查询到与所选出的域名对应的服务容器SC (SC可能为一台容器,或为多台姐妹容器),则进入第9-6步,否则按顺序从域名列表L3中选出下一条域名,并重复第9-5步; 9-6)、根据在第9-5步中选出的域名所对应的容器姐妹数,做以下两种情况的处理: a)、容器姐妹数为I,则比较在第9-1步中获得的容器实例要求的内存量或最大访问并发量,定义为要求能力值Cr(具体选用那个能力参数做匹配由具体的系统实现而定),与在第9-5步中获得的容器SC的可用内存量或可用访问并发量,定义为可用能力值Ca作比较,若前者Cr小于后者Ca,则该容器SC被选中为所创建的容器实例提供服务空间,并同时将后者值减去前者值得到一个剩余的可用内存量或剩余的可用访问并发量,称为剩余可用能力值Ct,并更新可用服务容器表;若前者Cr大于后者Ca,则重复第7-5步,选出新的服务容器SC; b)、容器姐妹数为n> I,则将第9-1步中获得的容器实例要求的内存量或最大访问并发量,定义为要求能力值Cr,除以η,商Cn,余Cm,比较Cn值与在第9_5步中获得的容器SC中某台姐妹容器的可用内存量或可用访问并发量,定义为可用能力值Ca,若前者Cn小于后者Ca,则将Cn分配给SC中的每台姐妹容器承担,并将Cm分成能力单元随机分配给其中的Cm台姐妹容器承担,将每台姐妹容器的可用能力值Ca减去其所承担的能力总值得到剩余的可用能力值Ct,并更新可用服务容器表;若前者Cn大于后者Ca,,则重复第9-5步,选出新的服务容器SC; 9-7)、在第9-6步中,若某服务容器SC(包括多台姐妹容器的情况)被选中为所创建的容器实例提供服务空间,并将原可用能力值Ca减去被分配掉的Cr之后得到的剩余可用能力值Ct小于某个阈值CO,则将该容器SC从可用容器表中删除,并将其信息记录到不可用容器表,不可用容器表包含的信息包括容器在系统中的唯一标识ID和容器对应的域名。
【文档编号】H04L29/08GK105959138SQ201610280798
【公开日】2016年9月21日
【申请日】2016年4月29日
【发明人】犹杰
【申请人】深圳前海大数点科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1