CN111464522B - 一种基于容器自动化生成服务的系统及方法 - Google Patents

一种基于容器自动化生成服务的系统及方法 Download PDF

Info

Publication number
CN111464522B
CN111464522B CN202010228416.4A CN202010228416A CN111464522B CN 111464522 B CN111464522 B CN 111464522B CN 202010228416 A CN202010228416 A CN 202010228416A CN 111464522 B CN111464522 B CN 111464522B
Authority
CN
China
Prior art keywords
service
service instance
port
subsystem
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010228416.4A
Other languages
English (en)
Other versions
CN111464522A (zh
Inventor
王超群
李建元
刘飞黄
秦俊峰
于德军
王丰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yinjiang Technology Co ltd
Original Assignee
Yinjiang Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yinjiang Technology Co ltd filed Critical Yinjiang Technology Co ltd
Priority to CN202010228416.4A priority Critical patent/CN111464522B/zh
Publication of CN111464522A publication Critical patent/CN111464522A/zh
Application granted granted Critical
Publication of CN111464522B publication Critical patent/CN111464522B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种基于容器自动化生成服务的系统及方法,本发明通过访问设计子系统,采用向导界面引导用户在无编码方式下实现服务的配置信息,将其转换成具有固定格式的配置文件并存储,并生成对外访问的接口。然后调用引擎子系统的发布接口;引擎子系统首先检查本地是否存在模板镜像文件,如果不存在,则调用模板子系统的下载接口下载模板镜像文件,最后根据配置动态生成服务实例,对外提供Restful风格的API服务。本发明的有益效果在于:在响应新增或变化的业务需求时,减少人力、物力投入的同时缩短了API接口响应周期,满足快速迭代的业务需求。另外,也避免了由于人员变动的不确定性和人员成本问题给维护软件安全性和质量可靠性所带来的问题。

Description

一种基于容器自动化生成服务的系统及方法
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种基于容器自动化生成服务的系统及方法。
背景技术
随着现代社会科学技术的发展,计算机系统已经成为各行各业所不可缺少的工具,而在其中起着核心作用的,则是计算机软件系统。随着各行业不断发展和IT系统的不断建设,Restful风格的API逐渐成为应用系统之间互联互通标准。然而,各行业在一个不断变化的动态环境中生存和发展,为了应对不断增加和变化的需求,维护API接口成为了各行业面前的共性的痛点。
Docker是一个开源应用容器引擎,可以让开发人员打包他们的API接口程序包以及依赖库到一个可移植的镜像文件中,然后,调用Docker原生接口生成该镜像的实例,供外部使用,利用Docker自身特性保证服务的可用性,上述措施一定程度上减轻了维护API接口的工作量。然后,针对每个不断增加和变化的需求,免不了会由几十人编写几十万行代码来完成,考虑到需要投入大量的人力物力不断的维护代码,软件的安全性和质量可靠性,以及人员变动的不确定性和人员成本问题,常常成为现在无所不在的信息化发展过程中的一个严重问题;针对端口随机机制下的Docker服务,实例重启后,服务地址发生变化问题一直困扰着我们;针对采用固定端口机制下Docker服务,第一次发布服务由于端口被占用而造成发布失败。现有很难有一款产品或系统可以很好的解决上述场景,应对快速迭代的业务需求。
发明内容
本发明为克服上述的不足之处,目的在于提供一种基于容器自动化生成服务的系统及方法,本发明通过访问设计子系统,采用向导界面引导用户在无编码方式下实现服务的配置信息,将其转换成具有固定格式的配置文件并存储,并生成对外访问的接口。然后调用引擎子系统的发布接口;引擎子系统首先检查本地是否存在模板镜像文件,如果不存在,则调用模板子系统的下载接口下载模板镜像文件,最后根据配置动态生成服务实例,对外提供Restful风格的API服务。本发明大大方便了API接口的维护,在维护方面可大大减少人力、物力的投入,从而也避免了人员变动的不确定性和人员成本问题给维护软件安全性和质量可靠性所带来的问题。可以满足快速迭代的业务需求。
本发明是通过以下技术方案达到上述目的:一种基于容器自动化生成服务的系统,包括:设计子系统、服务模板子系统和引擎子系统;所述的设计子系统接收系统用户输入服务配置信息,将其转换成具有固定格式的配置文件并存储,通过配置访问接口向引擎子系统发送配置文件,并接收引擎子系统发送的服务实例状态;所述的服务模板子系统存储多个服务实例的模板镜像文件,接收引擎子系统发送的下载镜像请求,通过下载模板接口为引擎子系统提供所需的模板镜像文件;所述的引擎子系统接收设计子系统的服务实例发布请求,根据配置文件自动生成相应的服务实例,为服务实例用户提供统一风格的服务实例,并推送服务实例状态给设计子系统;其中,配置文件由用户输入的服务配置信息按照固定格式转换而成;
作为优选,所述设计子系统、服务模板子系统和引擎子系统之间交互以固定格式消息进行流转;所述的固定格式消息由基本信息、数据来源、授权信息、信息正文组成;所述基本信息针对每个服务实例描述,包括服务名称、服务编号、版本信息,其中版本信息依次叠加,利用自增策略确保不重复;所述数据来源,用来记录服务信息的来源;信息正文是指对服务内容的具体限定,包括范围、主键、更新时间、查询条件;所述授权信息用来标记服务授权信息,外部使用服务实例的接口时需要输入授权信息才有权限使用API接口。
作为优选,所述的设计子系统包括图形化设计模块、配置解析模块、持久化存储器、配置访问接口、服务实例状态报警模块;所述图形化设计模块,通过图形化向导模式,在无需编码的情况实现服务配置信息的注入;所述配置解析模块将注入的配置信息转化成固定格式的配置文件,其中,固定格式的配置文件格式由基本信息、数据来源、信息正文、授权信息组成;所述的持久化存储器提供存储功能,将服务的配置文件存储起来;所述配置访问接口将持久化存储器中的服务配置文件封装后,提供对外访问的入口;所述服务实例状态报警模块,接收引擎子系统发送的服务实例状态信息,以图形化界面的形式及时反馈服务实例的状态。
作为优选,所述的服务模板子系统包含下载模板接口;下载模板接口提供了下载模板镜像文件的功能;所述模板镜像文件为由程序包以及依赖库组合成的静态文件,其中程序包是模板化的,根据注入配置不同而提供不同的功能,其具有访问配置接口,解析和验证配置,接收外部请求,响应外部请求的功能。
作为优选,所述的引擎子系统包括容器引擎模块、发布接口、端口生成模块、下载接口、持久化存储器、状态接口、服务访问入口以及本地镜像文件库;所述容器引擎模块提供容器运行的资源环境,包括硬盘,CPU,内存和网络环境,采用原生的Docker作为容器引擎;所述服务实例为每个发布请求按照配置动态生成的服务实例,对外提供Restful风格的API服务;所述发布接口提供了服务发布功能,接收设计子系统服务实例发布请求;所述端口生成模块采用随机+端口列表的方式生成服务实例对外服务的端口;所述下载接口,提供了调用模板子系统下载模板接口的功能;所述的持久化存储器提供存储功能,将服务实例状态和端口使用列表存储起来;所述状态接口定期查询原生Docker接口获取服务实例状态,并采用持久化存储器记录服务实例状态,如果服务实例状态没有变化,则不推送服务实例状态,如果服务实例状态发生变化,则推送服务实例状态给设计子系统,更新记录中的服务实例状态,其中服务实例状态包括启动和停止两种;所述服务访问入口为服务实例的访问入口路径;所述本地镜像文件库存储了引擎子系统使用过的模板镜像文件。
作为优选,所述随机+端口列表的方式具体为:
i)获取使用精确到毫秒的系统时间数值,作为随机数种子;
ii)基于随机数种子生成随机的4位数,并使用随机数+10000作为服务实例的端口,其中10000为端口范围边界;
iii)利用生成的服务实例的端口与端口使用列表进行比对,如果两者存在相同的端口,则重复执行步骤(ii)重新生成新的端口;如果不重复,则将该端口更新到端口使用列表后,供服务实例使用。
一种基于容器自动化生成服务的方法,包括如下步骤:
(1)系统用户访问设计子系统,采用向导界面引导用户在无编码方式下实现服务的配置信息,配置信息包括服务名称,服务编号,版本信息,范围,主键,更新时间,查询条件以及授权信息,并将其转换成固定格式的配置文件并存储,并生成对外访问的接口;其中,固定格式的配置文件格式由基本信息,数据来源,信息正文,授权信息组成;
(2)调用引擎子系统的发布接口接收设计子系统的服务实例发布请求,请求参数包括服务编号,版本信息,设计子系统的配置访问接口和模板镜像文件名称,其中模板镜像文件名称为同一类服务实例的模板镜像的统称,并根据模板镜像文件名称查找本地镜像文件库,判断模板镜像文件是否存在:若存在则执行步骤(3);若不存在,则触发下载接口,调用服务模板子系统的下载模板接口,下载模板镜像文件,若下载成功则执行步骤(3),否则向设计子系统反馈镜像不存在的提醒信息;
(3)根据模板镜像文件初始化服务实例,指定服务实例端口和设计子系统的配置访问接口;
(4)调用设计子系统的配置访问接口获取服务的配置文件,根据配置文件格式规范验证和解析配置,若配置不符合规范则向设计子系统反馈配置不合法的提醒信息;否则根据配置文件中的基本信息,数据来源,信息正文,授权信息执行程序逻辑,启动程序包;
(5)验证服务实例是否启动成功:如果服务实例启动不成功,则向设计子系统反馈服务实例未启动的提醒信息;如果服务实例启动成功,则向设计子系统反馈服务访问入口地址,通过该地址服务实例用户可以使用相应的服务实例提供的Restful风格的API;其中,服务访问入口地址由IP地址,端口和路径组成。
作为优选,还包括:按照阈值记录服务实例状态,如果服务实例状态没有变化,则不推送服务实例状态,如果服务实例状态发生变化,将服务实例状态推送至设计子系统,设计子系统的服务实例状态报警模块以图形化界面的形式及时反馈服务实例的状态;其中,阈值默认设为10秒钟,阈值为可配置的。
作为优选,所述的服务实例端口采用随机+端口列表的方式,随机+端口列表的方式的端口生成机制具体为:
(i)获取使用精确到毫秒的系统时间数值,作为随机数种子;
(ii)基于随机数种子生成随机的4位数,并使用随机数+10000作为服务实例的端口;
(iii)利用生成的服务实例的端口与端口使用列表进行比对,如果两者存在相同的端口,则重复执行步骤(ii)重新生成新的端口;如果不重复,则将该端口更新到端口使用列表后,供服务实例使用。
作为优选,所述端口的指定取值范围为10000-20000之间;同时,随机+端口列表的方式的端口生成机制中有一个端口使用列表,并采用持久化存储器记录端口使用列表,每次服务实例新增、启动失败和删除时,将及时更新端口使用列表。
本发明的有益效果在于:在响应新增或变化的业务需求时,减少人力、物力投入的同时缩短了API接口响应周期,满足快速迭代的业务需求。另外,也避免了由于人员变动的不确定性和人员成本问题给维护软件安全性和质量可靠性所带来的问题。
附图说明
图1是本发明的系统框架示意图;
图2是本发明的配置文件格式示意图;
图3是本发明实施例的配置文件示例示意图;
图4是本发明实施例的服务实例的状态示意图;
图5是本发明方法的服务自动发布流程示意图;
图6是本发明的随机+端口列表的方式的端口生成机制示意图;
图7是本发明实施例的服务实例1的配置文件示意图;
图8是本发明实施例的服务实例2的配置文件示意图;
图9是本发明实施例的服务实例3的配置文件示意图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:
实施例:如图1所示,一种基于容器自动化生成服务的系统由设计子系统、服务模板子系统和引擎子系统组成。所述的设计子系统接收系统用户输入服务配置信息,将其转换成具有固定格式的配置文件并存储,通过配置访问接口向引擎子系统发送配置文件,并接收引擎子系统发送的服务实例状态;服务模板子系统存储多个服务实例的模板镜像文件,接收引擎子系统发送的下载镜像请求,通过下载模板接口为引擎子系统提供所需的模板镜像文件;引擎子系统接收设计子系统服务实例发布请求,根据配置文件自动生成相应的服务实例,其中配置文件由用户输入的服务配置信息按照固定格式转换而成,为服务实例用户提供统一风格的服务实例,并推送服务实例状态给设计子系统。
其中,设计子系统由图形化设计模块、配置解析模块、持久化存储器、配置访问接口、服务实例状态报警模块组成,图形化设计模块,通过图形化向导模式,在无需编码的情况实现服务配置信息的注入;配置解析模块将注入的配置信息转化成固定格式的配置文件,配置文件格式如图2所示,配置文件示例如图3所示;持久化存储器提供存储功能,将服务的配置文件存储起来;所述配置访问接口将持久化存储器中的服务配置文件封装后,提供对外访问的入口;服务实例状态报警模块,接收引擎子系统发送的服务实例状态信息,以图形化界面的形式及时反馈服务实例的状态,服务实例的状态如图4所示。
模板子系统包含多个模板镜像文件和下载模板接口。下载模板接口提供了下载模板镜像文件的功能;模板镜像文件由程序包以及依赖库组合成,其中程序包有别于普通的应用程序,他是模板化的,根据注入配置不同而提供不同的功能,其具有访问配置接口、解析和验证配置、接收外部请求、响应外部请求的功能。
引擎子系统由容器引擎、服务实例、发布接口、端口生成、下载接口、持久化存储器、状态接口、服务访问入口、本地镜像文件库组成。容器引擎提供容器运行的资源环境,包括硬盘、CPU、内存和网络环境,采用原生的Docker作为容器引擎;服务实例为每个发布请求按照配置动态生成的服务实例,对外提供Restful风格的API服务;发布接口提供了服务发布功能,接收设计子系统服务实例发布请求,根据配置动态生成服务实例,对外提供API服务;端口生成采用随机+端口列表的方式生成服务实例对外服务的端口;下载接口,提供了调用模板子系统下载模板接口的功能;所述的持久化存储器提供存储功能,将服务实例状态和端口使用列表存储起来;所述状态接口按照阈值(默认10秒钟,可配置)定期查询原生Docker接口获取服务实例状态,并采用持久化存储器记录服务实例状态,如果服务实例状态没有变化,比如第一次查询服务实例状态为启动,第二次查询服务实例状态为启动,则不推送服务实例状态,如果服务实例状态发生变化,则推送服务实例状态给设计子系统,更新记录中的服务实例状态,其中服务实例状态包括启动和停止二种,该状态与设计子系统中的状态对照关系如图4所示;所述服务访问入口为服务实例访问路径,由IP地址、端口和路径组成;所述本地镜像文件库存储了引擎子系统使用过的模板镜像文件。
设计子系统、服务模板子系统和引擎子系统之间的服务配置信息以固定格式的消息进行流转,格式如图2所示,具体示例如图3所示。消息由基本信息、数据来源、授权信息、信息正文组成。基本信息对每个服务实例描述,包括服务名称、服务编号、版本信息,其中版本信息依次叠加,利用自增策略确保不重复;数据来源,用来记录服务信息的来源;信息正文是指对服务内容的具体限定,包括范围、主键、更新时间、查询条件;授权信息用来标记服务授权信息,外部使用服务实例的接口时需要输入授权信息才有权限使用API接口。
如图1所述,一种基于容器自动化生成服务的方法,具体如下:首先系统用户访问设计子系统,采用向导界面引导用户在无编码方式下实现服务的配置信息,配置文件格式如图2所示,配置信息包括服务名称、服务编号、版本信息、范围、主键、更新时间、查询条件、授权信息,配置文件示例如图3所示,将其转换成具有固定格式的配置文件并存储,并生成对外访问的接口。
具体的,本发明所述的基于容器化实现自动化生成服务的系方法还包括如下步骤,如图5所示:
S101:调用引擎子系统的发布接口,引擎子系统接收设计子系统的服务发布请求,请求参数包括服务编号、版本信息、设计子系统的配置访问接口、模板镜像文件名称,其中模板镜像文件名称为同一类服务实例的模板镜像的统称,然后根据模板镜像文件名称查找本地镜像文件库,判断模板镜像文件是否存在,如果存在则执行步骤S102;如果不存在,则触发下载接口逻辑,调用服务模板子系统的下载模板接口,下载模板镜像文件,如果下载成功则执行步骤S102;如果下载不成功,则向设计子系统反馈镜像不存在的提醒信息。
S102:根据模板镜像文件初始化服务实例,指定服务实例端口和设计子系统的配置访问接口,其中服务实例端口采用随机+端口列表逻辑,然后调用设计子系统的配置访问接口,获取服务的配置文件,然后根据如图2所示的配置文件格式规范验证和解析配置,如果配置不符合规范则向设计子系统反馈配置不合法的提醒信息,如果配置解析正确,则根据配置文件中的基本信息、数据来源、信息正文、授权信息执行程序逻辑,启动程序包,然后验证服务实例是否启动成功,如果服务实例成功,则向设计子系统反馈服务访问入口地址,该地址由IP地址、端口和路径组成,然后利用该地址服务实例用户使用该服务实例提供的Restful风格的API。后续服务状态接口按照阈值(默认10秒钟,可配置)将服务实例状态推送至设计子系统,设计子系统的服务实例状态报警模块以图形化界面的形式及时反馈服务实例的状态,服务实例的状态如图4所示。
Docker引擎提供随机端口和固定端口二种机制初始化服务实例的端口,随机端口机制,每次Docker引擎自修复服务实例后,服务端口发生变化,第三方应用或服务调用地址还是原有地址,造成API服务不可用;固定端口机制,每次Docker引擎自修复服务实例后,服务端口不变,不影响服务实例用户使用,但是,需要采用一定的机制避免由于端口被占用造成服务启动失败的问题。
为克服Docker引擎提供随机端口和固定端口二种机制的不足,本实施例采用随机+端口使用列表的方式,可以最大化利用端口的同时,又不会由于端口被占用造成服务实例启动失败的问题。
随机+端口列表的方式的端口生成机制如图6所示,为了避免自动生成服务端口与系统软件端口冲突,系统端口的取值范围是:0-65535,在这个取值范围中1023以下的端口已经分配给了常用的一些应用程序,为了避免和第三方的端口冲突,基于容器自动化生成服务的系统及方法中指定端口范围为10000-20000之间。同时,为了避免端口浪费,在此增加一个端口使用列表,并采用持久化存储器记录端口使用列表,每次服务实例新增、启动失败和删除时及时更新端口使用列表。端口生成规则首先通过随机数种子,其中随机数种子使用精确到毫秒的时间数值,避免每次随机数种子重复,生成随机的4位数,然后使用随机数+10000作为服务实例的端口,利用生成的端口与端口使用列表进行比对,如果存在相同的端口,则重复上述步骤重新生成新的端口,如果不重复,则将该端口更新到端口使用列表后,供服务实例使用。
本发明系统利用了Docker引擎底层技术,实现资源隔离与限制能力,确保服务实例各自独立互不影响的运行,然后借助设计子系统向导式设计提供友好的操作方式,实现服务内容的编排工作,最后借助引擎子系统自动实现服务实例的构建,在构建服务的过程中通过随机+端口列表的方式避免服务端口冲突和端口浪费的问题,最终实现自动化构建服务的目的。从而在响应新增或变化的业务需求时,减少人力、物力投入的同时缩短了API接口响应周期,满足快速迭代的业务需求。另外,也避免了由于人员变动的不确定性和人员成本问题给维护软件安全性和质量可靠性所带来的问题。
在本实施例中,用户A试图通过设计子系统发布服务实例1、服务实例2,用户B试图通过设计子系统服务实例3;
引擎子系统本地已存有服务实例1和服务实例3的镜像,没有服务实例2的镜像;服务模板子系统存有服务实例1、2、3的镜像;镜像文件是由程序包以及依赖库组合成一个静态文件,具有访问配置接口,解析和验证配置,接收外部请求,响应外部请求的功能。
服务实例1、2、3的配置文件分别如图7,图8和图9所示。
8:00:00时,用户A操作设计子系统,发布服务实例1和服务实例2,图形化设计模块接收用户A的操作,将用户A的操作(配置信息),传递给配置解析模块,配置解析模块将配置信息转化成标准的配置文件,如图7和图8所示,持久化存储器将服务实例1、2的配置文件存储起来,并生成配置访问接口为外部提供访问服务实例1、2的配置文件的入口,然后调用引擎子系统的发布接口,请求参数包括服务编号、版本信息、设计子系统的配置访问接口、模板镜像文件名称。
引擎子系统接收发布服务实例1和服务实例2的发布服务请求,然后引擎子系统根据参数模板镜像文件名称查找本地镜像文件库,发现本地镜像文件库已经有服务实例1的模板镜像文件,没有服务实例2的模板镜像文件,然后调用服务模板子系统的下载模板接口下载服务实例2的模板镜像文件,初始化服务实例1和服务实例2。
用户A的8:00:00根据步骤S102为服务实例1和服务实例2分别指定端口10003和10006作为二个服务实例的端口。在8:00:01时,用户A关闭了服务实例1,释放了端口10003,同时docker修复服务实例2,端口依然采用10006,由于地址没有变化不影响服务实例用户使用。
8:00:02时,用户B操作设计子系统,生成配置文件,如图9所示,然后调用引擎子系统的请求发布服务实例3,根据步骤S102为服务实例3指定端口10003,由于10003端口已经释放,因此可以复用该端口,避免随着日积月累,端口容易被耗尽的问题。
以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。

Claims (10)

1.一种基于容器自动化生成服务的系统,其特征在于,包括:设计子系统、服务模板子系统和引擎子系统;所述的设计子系统接收系统用户输入服务配置信息,将其转换成具有固定格式的配置文件并存储,通过配置访问接口向引擎子系统发送配置文件,并接收引擎子系统发送的服务实例状态;所述的服务模板子系统存储多个服务实例的模板镜像文件,接收引擎子系统发送的下载镜像请求,通过下载模板接口为引擎子系统提供所需的模板镜像文件;所述的引擎子系统接收设计子系统的服务实例发布请求,根据配置文件自动生成相应的服务实例,为服务实例用户提供统一风格的服务实例,并推送服务实例状态给设计子系统;其中,配置文件由用户输入的服务配置信息按照固定格式转换而成;
具体包括:引擎子系统的发布接口接收设计子系统的服务实例发布请求,请求参数包括服务编号、版本信息、设计子系统的配置访问接口和模板镜像文件名称,其中模板镜像文件名称为同一类服务实例的模板镜像的统称,并根据模板镜像文件名称查找本地镜像文件库,判断模板镜像文件是否存在:若存在,则根据模板镜像文件初始化服务实例,指定服务实例端口和设计子系统的配置访问接口;若不存在,则触发下载接口,调用服务模板子系统的下载模板接口,下载模板镜像文件,若下载成功,则根据模板镜像文件初始化服务实例,指定服务实例端口和设计子系统的配置访问接口;否则向设计子系统反馈镜像不存在的提醒信息;
调用设计子系统的配置访问接口获取服务的配置文件,根据配置文件格式规范验证和解析配置,若配置不符合规范则向设计子系统反馈配置不合法的提醒信息;否则根据配置文件中的基本信息、数据来源、信息正文和授权信息执行程序逻辑,启动程序包;
验证服务实例是否启动成功:如果服务实例启动不成功,则向设计子系统反馈服务实例未启动的提醒信息;如果服务实例启动成功,则向设计子系统反馈服务访问入口地址,通过该地址服务实例用户可以使用相应的服务实例提供的Restful风格的API;其中,服务访问入口地址由IP地址、端口和路径组成。
2.根据权利要求1所述的一种基于容器自动化生成服务的系统,其特征在于:所述设计子系统、服务模板子系统和引擎子系统之间交互以固定格式消息进行流转;所述的固定格式消息包括基本信息、数据来源、授权信息和信息正文;所述基本信息针对每个服务实例描述,包括服务名称、服务编号和版本信息,其中版本信息依次叠加,利用自增策略确保不重复;所述数据来源,用来记录服务信息的来源;信息正文是指对服务内容的具体限定,包括范围、主键、更新时间和查询条件;所述授权信息用来标记服务授权信息,外部使用服务实例的接口时需要输入授权信息才有权限使用API接口。
3.根据权利要求1所述的一种基于容器自动化生成服务的系统,其特征在于:所述的设计子系统包括图形化设计模块、配置解析模块、持久化存储器、配置访问接口和服务实例状态报警模块;所述图形化设计模块,通过图形化向导模式,在无需编码的情况实现服务配置信息的注入;所述配置解析模块将注入的配置信息转化成固定格式的配置文件,其中,固定格式的配置文件格式由基本信息、数据来源、信息正文和授权信息组成;所述的持久化存储器提供存储功能,将服务的配置文件存储起来;所述配置访问接口将持久化存储器中的服务配置文件封装后,提供对外访问的入口;所述服务实例状态报警模块,接收引擎子系统发送的服务实例状态信息,以图形化界面的形式及时反馈服务实例的状态。
4.根据权利要求1所述的一种基于容器自动化生成服务的系统,其特征在于:所述的服务模板子系统包含下载模板接口;下载模板接口提供了下载模板镜像文件的功能;所述模板镜像文件为由程序包以及依赖库组合成的静态文件,其中程序包是模板化的,根据注入配置不同而提供不同的功能,其具有访问配置接口、解析和验证配置、接收外部请求和响应外部请求的功能。
5.根据权利要求1所述的一种基于容器自动化生成服务的系统,其特征在于:所述的引擎子系统包括容器引擎模块、发布接口、端口生成模块、下载接口、持久化存储器、状态接口、服务访问入口和本地镜像文件库;所述容器引擎模块提供容器运行的资源环境,包括硬盘、CPU、内存和网络环境,采用原生的Docker作为容器引擎;所述发布接口提供了服务发布功能,接收设计子系统服务实例发布请求;所述端口生成模块采用随机+端口列表的方式生成服务实例对外服务的端口;所述下载接口,提供了调用模板子系统下载模板接口的功能;所述的持久化存储器提供存储功能,将服务实例状态和端口使用列表存储起来;所述状态接口定期查询原生Docker接口获取服务实例状态,并采用持久化存储器记录服务实例状态,如果服务实例状态没有变化,则不推送服务实例状态,如果服务实例状态发生变化,则推送服务实例状态给设计子系统,更新记录中的服务实例状态,其中服务实例状态包括启动和停止两种;所述服务访问入口为服务实例的访问入口路径;所述本地镜像文件库存储了引擎子系统使用过的模板镜像文件。
6.根据权利要求5所述的一种基于容器自动化生成服务的系统,其特征在于:所述随机+端口列表的方式具体为:
i)获取使用精确到毫秒的系统时间数值,作为随机数种子;
ii)基于随机数种子生成随机的4位数,并使用随机数+10000作为服务实例的端口,其中10000为端口范围边界;
iii)利用生成的服务实例的端口与端口使用列表进行比对,如果两者存在相同的端口,则重复执行步骤(ii)重新生成新的端口;如果不重复,则将该端口更新到端口使用列表后,供服务实例使用。
7.一种基于容器自动化生成服务的方法,其特征在于,包括如下步骤:
(1)系统用户访问设计子系统,采用向导界面引导用户在无编码方式下实现服务的配置信息,配置信息包括服务名称、服务编号、版本信息、范围、主键、更新时间、查询条件和授权信息,并将其转换成固定格式的配置文件并存储,并生成对外访问的接口;其中,固定格式的配置文件格式由基本信息、数据来源、信息正文和授权信息组成;
(2)调用引擎子系统的发布接口接收设计子系统的服务实例发布请求,请求参数包括服务编号、版本信息、设计子系统的配置访问接口和模板镜像文件名称,其中模板镜像文件名称为同一类服务实例的模板镜像的统称,并根据模板镜像文件名称查找本地镜像文件库,判断模板镜像文件是否存在:若存在则执行步骤(3);若不存在,则触发下载接口,调用服务模板子系统的下载模板接口,下载模板镜像文件,若下载成功则执行步骤(3),否则向设计子系统反馈镜像不存在的提醒信息;
(3)根据模板镜像文件初始化服务实例,指定服务实例端口和设计子系统的配置访问接口;
(4)调用设计子系统的配置访问接口获取服务的配置文件,根据配置文件格式规范验证和解析配置,若配置不符合规范则向设计子系统反馈配置不合法的提醒信息;否则根据配置文件中的基本信息、数据来源、信息正文和授权信息执行程序逻辑,启动程序包;
(5)验证服务实例是否启动成功:如果服务实例启动不成功,则向设计子系统反馈服务实例未启动的提醒信息;如果服务实例启动成功,则向设计子系统反馈服务访问入口地址,通过该地址服务实例用户可以使用相应的服务实例提供的Restful风格的API;其中,服务访问入口地址由IP地址、端口和路径组成。
8.根据权利要求7所述的一种基于容器自动化生成服务的方法,其特征在于:还包括:按照阈值记录服务实例状态,如果服务实例状态没有变化,则不推送服务实例状态,如果服务实例状态发生变化,将服务实例状态推送至设计子系统,设计子系统的服务实例状态报警模块以图形化界面的形式及时反馈服务实例的状态;其中,阈值默认设为10秒钟,阈值为可配置的。
9.根据权利要求7所述的一种基于容器自动化生成服务的方法,其特征在于:所述的服务实例端口采用随机+端口列表的方式,随机+端口列表的方式的端口生成机制具体为:
(i)获取使用精确到毫秒的系统时间数值,作为随机数种子;
(ii)基于随机数种子生成随机的4位数,并使用随机数+10000作为服务实例的端口;
(iii)利用生成的服务实例的端口与端口使用列表进行比对,如果两者存在相同的端口,则重复执行步骤(ii)重新生成新的端口;如果不重复,则将该端口更新到端口使用列表后,供服务实例使用。
10.根据权利要求9所述的一种基于容器自动化生成服务的方法,其特征在于:所述端口的指定取值范围为10000-20000之间;同时,随机+端口列表的方式的端口生成机制中有一个端口使用列表,并采用持久化存储器记录端口使用列表,每次服务实例新增、启动失败和删除时,将及时更新端口使用列表。
CN202010228416.4A 2020-03-27 2020-03-27 一种基于容器自动化生成服务的系统及方法 Active CN111464522B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010228416.4A CN111464522B (zh) 2020-03-27 2020-03-27 一种基于容器自动化生成服务的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010228416.4A CN111464522B (zh) 2020-03-27 2020-03-27 一种基于容器自动化生成服务的系统及方法

Publications (2)

Publication Number Publication Date
CN111464522A CN111464522A (zh) 2020-07-28
CN111464522B true CN111464522B (zh) 2022-08-02

Family

ID=71680532

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010228416.4A Active CN111464522B (zh) 2020-03-27 2020-03-27 一种基于容器自动化生成服务的系统及方法

Country Status (1)

Country Link
CN (1) CN111464522B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112558949B (zh) * 2020-12-21 2024-05-28 长沙树根互联技术有限公司 程序构造方法、装置、电子设备及存储介质
CN113672222A (zh) * 2021-08-04 2021-11-19 中汽创智科技有限公司 一种应用程序接口管理装置及其构建方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874028A (zh) * 2016-12-26 2017-06-20 新华三技术有限公司 应用部署方法和装置
US9983891B1 (en) * 2017-03-21 2018-05-29 Veritas Technologies Llc Systems and methods for distributing configuration templates with application containers
CN108874509A (zh) * 2018-06-28 2018-11-23 合肥浪金防伪科技有限公司 一种精简的虚拟器件生成和部署方法
CN110058863A (zh) * 2019-03-16 2019-07-26 平安城市建设科技(深圳)有限公司 Docker容器的构建方法、装置、设备及存储介质
CN110333877A (zh) * 2019-07-09 2019-10-15 西安点告网络科技有限公司 基于应用的可视化容器配置管理方法、装置及系统

Also Published As

Publication number Publication date
CN111464522A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
US11726984B2 (en) Data redistribution method and apparatus, and database cluster
US20110289499A1 (en) Techniques to automatically update software applications
US10275347B2 (en) System, method and computer program product for managing caches
US10545991B2 (en) Synchronizing local and remote data
CN111464522B (zh) 一种基于容器自动化生成服务的系统及方法
US9485202B2 (en) Alerting recipients to errors occurring when accessing external services
US20210303597A1 (en) Increased data availability during replication
CN107483631B (zh) 一种控制缓存实现移动互联网络服务访问的方法
US10776179B2 (en) Multi-application-oriented user data management method and system
WO2023130978A1 (zh) 一种企业数字中台中资源服务应用的调用系统和方法
CN111258565A (zh) 小程序的生成方法、系统、服务器及存储介质
CN110968603A (zh) 一种数据访问方法及装置
WO2017174013A1 (zh) 数据存储管理方法、装置及数据存储系统
CN115328569B (zh) 处理数据冲突的方法、系统、电子设备及计算机可读存储介质
CN114385760A (zh) 增量数据实时同步的方法、装置、计算机设备及存储介质
CN116595086B (zh) 一种基于插件的空间数据服务实现方法和系统
US11205049B2 (en) Method for managing semantic information on M2M/IoT platform
CN114969722A (zh) 一种支撑多数据类型的政务数据隐私计算系统
CN114866416A (zh) 一种多集群统一管理系统及部署方法
CN111459907A (zh) 通过模型配置主数据的方法、系统及存储介质
CN115730016B (zh) 数据同步方法、系统、装置、计算机设备和存储介质
CN113961319B (zh) 作业热迁移的方法、装置、电子设备及存储介质
CN115587390B (zh) 一种公有云对象存储的实现方法
US20160248823A1 (en) Messaging protocol
CN115391328A (zh) 数据获取方法、装置、电子设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 310012 1st floor, building 1, 223 Yile Road, Hangzhou City, Zhejiang Province

Applicant after: Yinjiang Technology Co.,Ltd.

Address before: 310012 1st floor, building 1, 223 Yile Road, Hangzhou City, Zhejiang Province

Applicant before: ENJOYOR Co.,Ltd.

GR01 Patent grant
GR01 Patent grant