CN106293704A - 多语言云编译的动态微服务编辑方法、装置和服务器 - Google Patents

多语言云编译的动态微服务编辑方法、装置和服务器 Download PDF

Info

Publication number
CN106293704A
CN106293704A CN201610599644.6A CN201610599644A CN106293704A CN 106293704 A CN106293704 A CN 106293704A CN 201610599644 A CN201610599644 A CN 201610599644A CN 106293704 A CN106293704 A CN 106293704A
Authority
CN
China
Prior art keywords
micro services
scripted code
services
server
described micro
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.)
Granted
Application number
CN201610599644.6A
Other languages
English (en)
Other versions
CN106293704B (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.)
Beijing Beson Cloud Ltd By Share Ltd
Original Assignee
Beijing Beson Cloud Ltd By Share 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 Beijing Beson Cloud Ltd By Share Ltd filed Critical Beijing Beson Cloud Ltd By Share Ltd
Priority to CN201610599644.6A priority Critical patent/CN106293704B/zh
Publication of CN106293704A publication Critical patent/CN106293704A/zh
Application granted granted Critical
Publication of CN106293704B publication Critical patent/CN106293704B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了的多语言云编译的动态微服务编辑方法、终端和服务器,该方法中当开发人员在编辑设备上触发微服务编辑的指令时,该编辑设备调出编译窗口,以供开发人员在该窗口中编辑微服务的脚本代码。编辑结束后,编辑设备将脚本代码发送至服务器,服务器对该脚本代码进行检验后,将相应的检验结果反馈至编辑设备,以实现对微服务的编辑。由于编辑的微服务是能够实现预设功能的一个功能点,而不是整个业务系统,因此,在添加新的功能点的过程中,由微服务组成的业务系统的其它业务仍然可以正常运行,从而实现对业务系统进行升级的过程中不影响整个业务系统的正常运行,并且有效提高系统功能扩展的灵活性、开放性、可维护性以及可伸缩性。

Description

多语言云编译的动态微服务编辑方法、装置和服务器
技术领域
本发明属于计算机技术领域,具体涉及一种多语言云编译的动态微服务编辑方法、装置和服务器。
背景技术
随着面向对象设计模式和企业架构模式出现,一个系统从功能实现、代码组织等角度来思考,通常分为三个层次:表示层、业务逻辑层、数据访问层,表示层是基于Html的Web页面,通过RestAPI取数据进行渲染;业务逻辑层是应用系统的核心代码,通常用来实现系统业务规则;数据访问层是访问数据库或信息的中间媒介;这是我们常见的经典三层架构模式,这种模式虽然在一定程度上解决了系统模块间调用复杂、职责不清的问题,但这种传统的架构风格在开发效率、构建部署、维护成本,以及可扩展性、可伸缩方面有很大不足和局限性。
这种架构方式的系统开发完成后是各个功能、模块相对固定的,提供的接口和实现都是约定好的,最终经过开发、编译、打包、部署,最后运行是放在一个进程中,它就像一块铁块,笨重且无法拆分,也无法扩展,后期系统中任何一点的变化都需要线下重新开发、编译,打包,部署,整个过程周期长、维护成本高。而随着业务系统的不断发展,需求的不断增加,系统的可扩展性、可维护性、可运维、可管理性却在不断下降。
综合现有技术中存在以下缺点:(1)扩展复杂:代码全部在一个项目系统中,这使得整个扩展过程非常复杂繁琐,并且有可能破还原有代码的结构;(2)代码重用率低:系统代码逻辑只是为了当前所开发并耦合到系统中,这降低了代码的重用率;。(3)开发周期长效率低:扩展或添加新的需求时,需要开发人员线下重新开发、编译、测试、上传、配置、打包、部署系统,这使得开发周期很长效率很低。(4)难以维护:系统开发人员和技术的应用有可能都已经迭代过无数次,系统中代码之间的互相调用、互相耦合也错综复杂,不是很了解系统的人不敢轻举妄动。随着系统的需求和功能越来越多,团队越来越大,相应的沟通成本、开发成本、管理成本都会成倍增加,当系统出现缺陷时,也会造成分析问题、定位问题、修复问题的时间更长;随着代码量的增加也有可能导致“修复越多,缺陷越多”的恶性循环;系统中一个小的改动就需要重新部署整个应用系统。(5)开发语言局限性:应用系统如果使用某种语言开发,那么再次需求扩展时则还必须已经此语言进行扩展,无法尝试新的编程语言或框架,这目前在现实中也不可能使用一个技术平台或方案来解决所有问题。(6)硬件成本高难以水平扩展:所有的程序代码在服务器的同一个进程中,会导致水平扩展难和成本高的局面,因为系统中不同的模块功能实际上对服务器的要求是不同的,有的是CPU密集计算机型,需要有性能较强的CPU处理器,有的是需要内存IO密集型,需要使用大量内存进行数据缓存,如果将系统所要求的服务器基础设施按同一种标准去采购,则硬件成本会非常高。(7)可靠性低:所有模块功能都运行在一个进程中,任何一个模块功能中的一个错误bug,比如内存泄露/CPU持续走高,将会有可能弄垮或拖慢整个进程,从而影响到整个应用的可靠性。(8)无法分布式部署支撑高并发:由于无法将外部依赖的Dll或Jar与现有系统程序进行物理机进行有效的分离,随着系统的不断升级和扩展,这样庞大且复杂的系统,要伸缩必须为整体式的伸缩,无法有效分离式伸缩,系统中用户所需要经常操作的核心业务点可能只有30%,而现在却要将非核心的70%做同样的部署伸缩,不能达到资源的最大化集约使用。(9)影响持续集成和交付:由于业务系统的庞大复杂,加上无数次的扩展升级,所以构建一次的时间也会非常漫长,失败的次数也会大大增加,如果构建过程错误,排查问题也会非常困难。另外对系统做的任何一点细微的修改都需要将整个系统重新构建、重新部署。多个开发人员共同开发一个系统,还需要等待其他开发人员完成后才能部署,这大大降低了团队的灵活性和功能交付频率;(10)另外在项目打开和运行十分缓慢、系统难以开发、测试、持续集成困难、部署环境依赖复杂、技术栈绑定,编程语言、框架、数据库的升级和更换非常困难等等。
如何应对这些问题,对软件系统的灵活性、开放性、可维护性、可伸缩性,以及软件系统对于市场和客户的反应能力都提出了更高的要求。如何快速地增加、扩展、升级当前标准的系统功能为客户量身定制,并且有效的保障提升软件开发质量和开发效率,已经成为软件行业的重要挑战。
现有的业务系统在升级过程(具体地,例如,为业务系统新增加功能模块或者对之前的业务系统的功能进行修改时)中,整个业务系统将停止使用,使得与该业务系统相关的业务停止运行。
发明内容
本发明所要解决的技术问题是如何使得对业务系统进行升级的过程中不影响整个业务系统的正常运行,并且有效提高系统功能扩展的灵活性、开放性、可维护性以及可伸缩性。
针对该技术问题,本发明提供了一种多语言云编译的动态微服务编辑方法,包括:
T1:在接收到微服务编辑的指令后,调出微服务的编辑窗口,以作为所述微服务的脚本代码的编辑窗口;
T2:在接收到所述微服务的脚本代码编辑结束的信息后,将所述微服务的脚本代码发送至服务器,以使所述服务器对所述微服务的脚本代码进行检验,并反馈所述检验的检验结果;
T3:显示接收到的所述检验结果后;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
优选地,所述窗口包括至少一个子窗口,用于添加所述微服务的特征参数和脚本代码;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
优选地,包括:
C1:在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,判断服务器中是否存在所述微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果,否则,执行步骤C2;
C2:对接收到的微服务的脚本代码进行编译,监测所述编译的过程是否出现错误,若是,向所述编辑设备反馈添加的微服务的脚本代码编译错误的检验结果;否则,将所述微服务的脚本代码添加至所述服务器中,存储所述微服务的脚本代码编译后生成的微服务实例,并向所述编辑设备反馈所述微服务的脚本代码添加成功的检验结果;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
优选地,所述步骤C1具体包括:
在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,生成所述微服务的脚本代码对应的哈希值,根据所述哈希值判断所述微服务库中是否存在与所述哈希值对应的微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果;否则,执行所述步骤C2。
优选地,还包括:
将添加成功的微服务的特征参数添加至预先创建的微服务列表中;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
另一方面,本发明还提供了一种多语言云编译的动态微服务编辑装置,包括:
调用模块,用于在接收到微服务编辑的指令后,调出微服务的编辑窗口,以作为所述微服务的脚本代码的编辑窗口;
发送模块,用于在接收到所述微服务的脚本代码编辑结束的信息后,将所述微服务的脚本代码发送至服务器,以使所述服务器对所述微服务的脚本代码进行检验,并反馈所述检验的检验结果;
显示模块,用于显示接收到的所述检验结果后;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
优选地,所述窗口包括至少一个子窗口,用于添加所述微服务的特征参数和脚本代码;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
优选地,包括:
第一判断模块,用于在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,判断服务器中是否存在所述微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果,否则,执行步骤C2;
第二判断模块,用于对接收到的微服务的脚本代码进行编译,监测所述编译的过程是否出现错误,若是,向所述编辑设备反馈添加的微服务的脚本代码编译错误的检验结果;否则,将所述微服务的脚本代码添加至所述服务器中,存储所述微服务的脚本代码编译后生成的微服务实例,并向所述编辑设备反馈所述微服务的脚本代码添加成功的检验结果;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
优选地,所述第一判断模块还用于在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,生成所述微服务的脚本代码对应的哈希值,根据所述哈希值判断所述微服务库中是否存在与所述哈希值对应的微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果;否则,执行所述步骤C2。
优选地,还包括:
添加模块,用于将添加成功的微服务的特征参数添加至预先创建的微服务列表中;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
本发明提供了的多语言云编译的动态微服务编辑方法、终端和服务器,该方法中当开发人员在编辑设备上触发微服务编辑的指令时,该编辑设备调出编译窗口,以供开发人员在该窗口中编辑微服务的脚本代码。编辑结束后,编辑设备将脚本代码发送至服务器,服务器对该脚本代码进行检验后,将相应的检验结果反馈至编辑设备,以实现对微服务的编辑。由于编辑的微服务是能够实现预设功能的一个功能点,而不是整个业务系统,因此,在添加新的功能点的过程中,由微服务组成的业务系统的其它业务仍然可以正常运行,从而实现对业务系统进行升级的过程中不影响整个业务系统的正常运行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的多语言云编译的动态微服务编辑方法流程示意图;
图2是本发明实施例提供的多语言云编译的动态微服务编辑装置结构框图;
图3是本发明实施例提供的服务器侧的多语言云编译的动态微服务编辑方法流程示意图;
图4是本发明实施例提供的多语言云编译的动态微服务编辑服务器的结构框图;
图5是本发明实施例提供的多语言动态微服务调用过程流程示意图;
图6是本发明实施例提供的多语言动态微服务编辑及调用过程的框架示意图;
图7是本发明实施例提供的多语言动态微服务编辑过程流程示意图;
图8是本发明实施例提供的多语言动态微服务在线开发的界面结构示意图;
图9是本发明实施例提供的多语言动态微服务的属性结构示意图;
图10是本发明实施例提供的多语言动态微服务的进程实例状态上报示意图;
图11是本发明实施例提供的多语言动态微服务的API网关处的微服务的属性示意图;
图12是本发明实施例提供的多语言动态微服务容器内存装置结构图;
图13是本发明实施例提供的多语言动态微服务扩容过程流程示意图;
图14是本发明实施例提供的多语言动态微服务部署/分布/伸缩的示意图;
图15是本发明实施例提供的多语言动态微服务容器管理模块装置示意图;
图16是本发明实施例提供的多语言动态微服务编译的模块示意图;
图17是本发明实施例提供的多语言动态微服务的微服务列表结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的多语言云编译的动态微服务编辑方法流程示意图。参见图1,该方法包括:
T1:在接收到微服务编辑的指令后,调出微服务的编辑窗口,以作为所述微服务的脚本代码的编辑窗口;
T2:在接收到所述微服务的脚本代码编辑结束的信息后,将所述微服务的脚本代码发送至服务器,以使所述服务器对所述微服务的脚本代码进行检验,并反馈所述检验的检验结果;
T3:显示接收到的所述检验结果;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
需要说明的是,对代码进行检查包括进行代码分析、语法检查等。
多语言云编译的动态微服务的编辑一般由开发人员对服务器中的微服务进行添加或者更改的操作,这个过程可以是在开发人员在编辑设备(编辑设备可以是电脑,通过电脑上相应的用于添加微服务的程序执行)上进行。
例如,开发人员将编辑在脚本代码编辑完成后,点击编辑界面上的“提交”后,编辑设备将编辑代码提交至服务器,服务器对该脚本代码检验后,将检验结果反馈至编辑设备,以提示开发人员该微服务的脚本代码是否添加成功。若未添加成功,通过提示的原因,继续进行修改,以完成微服务的添加。
微服务是用于实现预设业务系统中的预设功能的脚本代码,例如,在学生管理系统这一业务系统中,微服务A用于实现学生成绩添加这一功能、微服务B用于实现学生个人信息添加这一功能、微服务C用于实现学生信息删除和更改这一功能……,所有的微服务均只能实现学生管理系统中的一个预设功能,整个学生管理系统按照一定的规则对这些微服务进行调用实现整个学生管理系统的功能。学生管理系统的各个微服务之间相互独立,当个别微服务出现故障或者需要进行升级时,不会造成整个学生管理系统不能调用。另一方面,在系统开发的过程中,各个微服务也可以采用不同的语言进行编写(C#、VB.NET、JAVA、Python),容易使不同的开发人员尝试技术创新,甚至每个功能扩展点都可以采用不同的编程语言编写,实现的功能组件的共用。。
本发明提供了的多语言云编译的动态微服务编辑方法中,当开发人员在编辑设备上触发微服务编辑的指令时,该编辑设备调出编译窗口,以供开发人员在该窗口中编辑微服务的脚本代码。编辑结束后,编辑设备将脚本代码发送至服务器,服务器对该脚本代码进行检验后,将相应的检验结果反馈至编辑设备,以实现对微服务的编辑。由于编辑的微服务是能够实现预设功能的一个功能点,而不是整个业务系统,因此,在添加新的功能点的过程中,由微服务组成的业务系统的其它业务仍然可以正常运行,从而实现对业务系统进行升级的过程中不影响整个业务系统的正常运行。
进一步地,所所述窗口包括至少一个子窗口,用于添加所述微服务的特征参数和脚本代码;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
图2是本发明实施例提供的多语言云编译的动态微服务编辑装置结构框图。参见图2,该多语言云编译的动态微服务编辑装置20包括:调用模块21、发送模块22和显示模块23。
调用模块21,用于在接收到微服务编辑的指令后,调出微服务的编辑窗口,以作为所述微服务的脚本代码的编辑窗口;
发送模块22,用于在接收到所述微服务的脚本代码编辑结束的信息后,将所述微服务的脚本代码发送至服务器,以使所述服务器对所述微服务的脚本代码进行检验,并反馈所述检验的检验结果;
显示模块23,用于显示接收到的所述检验结果后;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
本发明实施例提供的多语言云编译的动态微服务编辑装置中,当开发人员在编辑设备上触发微服务编辑的指令时,调用模块21调出编译窗口,以供开发人员在该窗口中编辑微服务的脚本代码。编辑结束后,发送模块22编辑设备将脚本代码发送至服务器,服务器对该脚本代码进行检验后,将相应的检验结果反馈至编辑设备,显示模块23显示检验结果,以实现对微服务的编辑。由于编辑的微服务是能够实现预设功能的一个功能点,而不是整个业务系统,因此,在添加新的功能点的过程中,由微服务组成的业务系统的其它业务仍然可以正常运行,从而实现对业务系统进行升级的过程中不影响整个业务系统的正常运行。
进一步地,所述窗口包括至少一个子窗口,用于添加所述微服务的特征参数和脚本代码;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
第三方面,图3是本发明实施例提供的服务器侧的多语言云编译的动态微服务编辑方法流程示意图。参见图3,包括:
C1:在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,判断服务器中是否存在所述微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果,否则,执行步骤C2;
C2:对接收到的微服务的脚本代码进行编译,监测所述编译的过程是否出现错误,若是,向所述编辑设备反馈添加的微服务的脚本代码编译错误的检验结果;否则,将所述微服务的脚本代码添加至所述服务器中,存储所述微服务的脚本代码编译后生成的微服务实例,并向所述编辑设备反馈所述微服务的脚本代码添加成功的检验结果;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
进一步地,在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,生成所述微服务的脚本代码对应的哈希值,根据所述哈希值判断所述微服务库中是否存在与所述哈希值对应的微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果;否则,执行所述步骤C2。
进一步地,将添加成功的微服务的特征参数添加至预先创建的微服务列表中;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
本实施例提供了的多语言云编译的动态微服务编辑方法中,当服务器接收到脚本代码后,检验服务器中的微服务仓库中是否存在该微服务,若不存在,对该脚本代码的编译进行监测,编译过程正常后,将该微服务添加至服务器中的微服务仓库中,完成对微服务的编辑。由于编辑的微服务是能够实现预设功能的一个功能点,而不是整个业务系统,因此,在添加新的功能点的过程中,由微服务组成的业务系统的其它业务仍然可以正常运行,从而实现对业务系统进行升级的过程中不影响整个业务系统的正常运行。
第四方面,图4是本发明实施例提供的多语言云编译的动态微服务编辑服务器的结构框图。参见图4,该多语言云编译的动态微服务编辑服务器40,包括:第一判断模块41和第二判断模块42。
第一判断模块41,用于在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,判断服务器中是否存在所述微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果,否则,执行步骤C2;
第二判断模块42,用于对接收到的微服务的脚本代码进行编译,监测所述编译的过程是否出现错误,若是,向所述编辑设备反馈添加的微服务的脚本代码编译错误的检验结果;否则,将所述微服务的脚本代码添加至所述服务器中,存储所述微服务的脚本代码编译后生成的微服务实例,并向所述编辑设备反馈所述微服务的脚本代码添加成功的检验结果;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
进一步地,所述第一判断模块还用于在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,生成所述微服务的脚本代码对应的哈希值,根据所述哈希值判断所述微服务库中是否存在与所述哈希值对应的微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果;否则,执行所述步骤C2。
进一步地,还包括:
添加模块,用于将添加成功的微服务的特征参数添加至预先创建的微服务列表中;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
本实施例提供了的多语言云编译的动态微服务编辑服务器中,服务器的第一判断模块41接收到脚本代码后,检验服务器中的微服务仓库中是否存在该微服务,若不存在,第二判断模块42对该脚本代码的编译进行监测,编译过程正常后,将该微服务添加至服务器中的微服务仓库中,完成对微服务的编辑。由于编辑的微服务是能够实现预设功能的一个功能点,而不是整个业务系统,因此,在添加新的功能点的过程中,由微服务组成的业务系统的其它业务仍然可以正常运行,从而实现对业务系统进行升级的过程中不影响整个业务系统的正常运行。
参见图6,服务器中的各种微服务(例如,图6中的微服务A、微服务B等)由开发人员在线开发。服务器接收到调用请求后,根据请求信息调用微服务(如图6所示,可以调用单独的一个微服务,也可以调用两个或者多个微服务,例如,按照一定的规则调用微服务A和微服务B,这种调用方式相当于调用了一个新的微服务F),在微服务完成预设功能后,将执行任务的结果反馈至终端,在反馈的过程中信息传输的途径会由网关进行包装,从socket传输转换为http的传输方式后,将结果反馈至终端。其中,socket传输是网关和服务器之间的数据传输方式,http的传输方式是网关和终端之间的传输方式。
作为一种具体的实施例,微服务的添加过程如下所示,参见图7:
1)根据业务系统划分出来的微服务在线添加/编辑动态脚本代码。添加的信息有:微服务中英文标识、允许最大最小服务实例个数、微服务服务类型(CPU消耗型/内存消耗型)、微服务所用语言(C#/VB.NET/JAVA/Python)、微服务执行方式(同步执行/异步队列)、微服务动态脚本代码、超时限制、动态伸缩扩容阈值(CPU/内存)。
2)将微服务英文标识、业务脚本代码进行并进行唯一性哈希、生成一个36位MD5字符串,能够唯一标识此微服务脚本代码。唯一性哈希信息除了有脚本代码,英文标识、还有所用语言、服务类型。
3)根据此微服务唯一性哈希值判断NoSql脚本存储仓库(Redis)中是否已经存在。
4)如果NoSql微服务脚本代码存储仓库中不存在,则跳转到6。
5)如果NoSql微服务脚本代码存储仓库中存在,则跳转到8。
6)选择对应的语言编译器对脚本进行编译,如果微服务脚本代码没有编译语法错误,则微服务脚本代码保存到NoSql脚本存储仓库。
7)如果微服务脚本代码有编译语法错误,则跳转到8
8)根据上下文提示操作者,已经存在于NoSql脚本存储仓库中或编译存在语法错误或添加编辑成功,跳转到1、再次添加新的微服务脚本代码。
微服务编辑的界面如图8所示,通过该界面将微服务对微服务的脚本代码进行编辑,并添加微服务的属性信息。其中,图9中示出了动态微服务的属性类别。可理解的是,在动态脚本添加或者编辑后,会将微服务的状态(创建、销毁或变更)上报至网关,当然上报至网关的数据中还包括微服务的连接数,线程数等,具体参见图10。
如图11所示,动态微服务的API网关记载了动态微服务的信息,例如,微服务的注册、微服务的发现、动态微服务的身份验证等,具体参见图11。
图12是动态微服务的容器装置结构图,微服务存储于容器装置中,在容器装置中通过多语言动态脚本代码编译引擎装置和多语言动态脚本代码执行引擎装置对微服务进行实例化。这些微服务存储于多语言动态脚本存储仓库中。
对服务器中的微服务的调用过程参见图5,多语言动态微服务调用过程流程示意图,包括如下步骤:
1)前端业务系统,发起业务服务请求调用,传递到动态微服务API网关。
2)根据请求服务参数、用户信息,判断用户身份是否已经验证。
3)如果身份验证已经通过,则跳转到5。
4)如果身份验证没有通过,则跳转到28。
5)根据请求服务参数,判断此动态微服务是否已经在动态微服务框架中注册。
6)如果此请求的动态微服务已经注册,则跳转到8。
7)如果此请求的动态微服务没有注册,则跳转到28。
8)判断此动态微服务在注册列表中是否有效、是否健康,必须为有效的且至少有一个微服务节点可以使用。
9)如果此动态服务有效且有可用节点,则跳转到11。
10)如果此动态服务无效或无可用节点,则跳转到28。
11)选择一种负载均衡调度策略。
微服务的负载均衡策略、采用以下6种方式:
1.随机
2.轮循
3.最小连接数
4.CPU/内存最小利用率
5.最快响应时间
6、服务器配置对应的权重
其中最小连接数、CPU/内存最小利用率、最快响应时间、之前已经由底层的各个微服务定期上报给微服务API网关/综合管理调度器,所以可以很快速从综合管理调度器中获取到这些值,从多个可用的微服务节点中选择出最一个最佳节点,进行下一步请求路由。
12)将动态微服务请求包装,这里的包装主要是将rest(Http)请求包装为微服务内部所需要的Thrift(Socket)通信传输协议,然后路由至实际远程微服务节点。
13)传递包装的请求信息,如果遇到网络中断或无响应,则跳转到8。
14)根据微服务哈希标识,检测容器内存是否已经编译存在此实例或微服务脚本代码发生变化。
15)如果此动态微服务实例已经存在,则跳转到17。
16)如果此动态微服务实例不存在,则跳转到24。
17)如果此动态微服务实例脚本代码未发生变化,则跳转到19。
18)如果此动态微服务实例脚本代码已经发生变化(当动态微服务脚本代码发生变化时,原实例失效,新实例产生,这里是使用时再产生,不调用使用不产生),则跳转到24。
19)动态微服务从内存读取定位已编译的内存服务实例。
20)微服务动态脚本执行引擎驱动运行实例运行指定函数方法。
21)如果执行异常或超时,则跳转到22,再跳转到28。
22)异步记录运行日志&性能、耗时情况调用计数器加1,更新最后调用时间。
23)运行结果返回动态微服务网关。
24)从动态微服务脚本Nosql仓库中读取脚本代码。
25)将脚本代码载入动态微服务脚本编译引擎。
26)加载动态微服务关联语言外部关联模块和资源进行编译。
27)将编译内存字节放置于内存并实例化,然后跳转到19。
28)结束返回友好信息给前端调用者。
对于这些微服务,还可以通过如图13所示的方式进行扩展。如图13所示,
1)从动态微服务综合管理调度器中,获取已注册有效动态微服务列表。微服务列表的结构如图17所示。
2)获取此微服务所有服务器健康状态,健康指标状态之前已上报。
每个动态微服务、根据系统配置定时上报微服务数据到微服务综合管理调度中心,上报的数据有以下12种:
1.CPU使用率
2.内存使用率
3.线程数量
4.TCP连接数
5.执行日志
6.响应时间
7.IO状况
8.垃圾回收GC状况
9.TCP端口状态(是否连通)
10.微服务的创建
11.微服务的销毁
12.微服务的版本变更
3)判断动态微服务类型
4)如果为CPU消耗型,则跳转到6。
5)如果为内存消耗型,则跳转到9。
6)判断CPU使用率是否超过所配置的最大平均值(此微服务的所有实例CPU利用率平均值)。
7)如果CPU使用率已经超过所配置的最大平均值,则跳转到12。
8)如果CPU使用率没有超过所配置的最大平均值,则跳转到14。
9)判断内存使用率是否超过所配置的最大平均值(此微服务的所有实例内存利用率平均值)。
10)如果内存使用率已经超过所配置的最大平均值,则跳转到12。
11)如果内存使用率没有超过所配置的最大平均值,则跳转到18。
12)对微服务进行非阻塞微服务实例动态复制扩展(需要准备好足够的可用物理机,扩展最大数量及增量根据配置)。
13)根据配置休息指定时间再次启动检测,跳转到1。
14)判断CPU使用率是否低于最小平均值。
15)如果CPU使用率低于最小平均值,跳转到21。
16)如果CPU使用率高于最小平均值,跳转到13。
17)减少动态微服务器实例(减少的数量根据配置),跳转到13。
18)判断内存使用率是否低于最小平均值。
19)如果内存使用率低于最小平均值,跳转到24。
20)如果内存使用否高于最小平均值,跳转到13。
21)判断CPU使用率低于最小平均值且连续超出指定持续时间。
22)如果CPU使用率低于最小平均值连续已经超出指定持续时间,跳转到17。
23)如果CPU使用率低于最小平均值连续没有超出指定持续时间,跳转到13。
24)判断内存使用率低于最小平均值且连续超出指定持续时间。
25)如果内存使用率低于最小平均值连续已经超出指定持续时间,跳转到17。
26)如果内存使用率低于最小平均值连续没有超出指定持续时间,跳转到13。
27)跳转到13。
图14是动态微服务的部署/分布/伸缩示意图,当检测到需要对微服务(例如图14中的微服务A、微服务B和微服务C)进行复制扩容时,直接将该微服务复制至其它服务器,以提供更多的可调用微服务。图15是微服务的容器管理装置,通过该装置中的检测模块、复制模块等对微服务的扩容进行控制。
图16是本发明提供的微服务的总体结构模块示意图,通过该模块中的各个模块之间的协作共同完成微服务的调用、编辑和扩容的过程。
本发明提供的多语言云编译实现动态微服务技术,是把系统的每一个服务都映射为一段动态脚本代码,在远程服务器动态微服务云编译引擎会把它翻译成可执行代码放置于内存当中(这段代码可以用常见的编程语言C#、VB.NET、JAVA、Python等编写),在调用时会根据路由算法,路由到此服务器的动态微服务中进行运行,以此解决系统中功能模块之间耦合的问题,提高软件重用性,降低代码的复杂度。使系统在开发阶段各模块的职能更加明确,功能模块之间的耦合更为松散,让系统更具有可扩展性、维护性、可运维性,进而大大降低项目的开发费用和成本。
本发明的方案采用多语言云编译实现动态微服务体系结构,可以使各个微服务功能模块具有更大的独立性,各个微服务之间是相对独立的,可以完全独立开发,独立部署、独立运行、独立运维,有利于在大规模软件开发过程中提高开发的并行性和效率,改善提高软件系统的的可测试性和可维护性。
本发明并不局限于应用软件所用的这一种语言,可以实现.C#、VB.NET、JAVA、Python在线开发、在线编译、自动编译、自动部署,不需要像传统方式一样,需要线下使用开发软件VisualStudio、Eclipse、Sublime在电脑本地进行开发、编译。
微服务API网关/综合管理调度器,负责动态微服务的注册、发现、负载均衡、身份验证、健康汇总、限流、请求路由。微服务API网关的存在,有效的连接了微服务内部和外部前端业务页面渲染,屏蔽了后台微服务的复杂性,后台个别微服务的变化和升级不会对微服务API网关和客户有任何影响。
动态微服务在创建实例启动时,会将微服务的地址信息和端口信息上报注册给微服务API网关综合管理调度器。这样前端业务在调用到动态微服务时就可以知道微服务所在位置,将请求根据所设置的负载均衡策略,路由到真实的微服务目标地址。
利用多语言云编译实现动态微服务体系,每微服务都使用最小耦合来进行处理,不同专家和团队负责开发不同的模块,每个微服务专注一件事,边界清晰且彼此隔离,开发者都可以快速线上开发、集成、测试、部署、独立完成上线部署流程,彼此间互不影响。实现快速灵活敏捷开发、有效减少运维成本和管理成本、提高开发效率。
利用多语言云编译实现动态微服务体系,可以使软件开发人员以产品的心态和角度来做微服务,使开发人员不断增强服务意识、提高服务质量。
利用多语言云编译实现动态微服务体系,支撑业务快速变化,服务之间是快速融合,实现将多个动态微服务按照业务的需求,进行有机的、灵活的组装和编排,以适应满足急剧增长的客户个性化业务逻辑需求,还可以有效合并减少客户端请求交互次数、简化客户端代码量、进一步提高系统性能和开发效率。
利用多语言云编译实现动态微服务体系,可以交将微服务的开发给第三方公司,提高行业内的合作,达到优势互补的目的。微服务在开发完成后,立即也可被其他系统所调用,完全能够提高微服务的可重用性。
利用多语言云编译实现动态微服务体系,有利于在大规模软件系统开发过程中,使开发团队能够并行进行,提高开发的效率和质量。并且在开发和调试过程中,当部分微服务发生问题的时候,并不会影响到其他微服务,将有利于软件测试、部署工作的开展和进行。
利用多语言云编译实现动态微服务体系,可以使系统在运行时刻可以动态地替换微服务组件,根据运行环境的变化或某些条件而引起新的行为,动态的提高软件系统的自适应性。
利用多语言云编译实现动态微服务体系,可以在线开发微服务、在线编译、在线调试,微服务开发编译后可立即部署,供软件系统直接调用。
利用多语言云编译实现动态微服务体系,可以在线修复微服务,实现微服务的快速升级扩展或替换,使微服务热部署、动态可插拔。可以实现微服务多版本,实现业务系统灰度升级,服务降级,服务分布式跟踪等。
利用多语言云编译实现动态微服务体系,将微服务编译后的实例放置于进程内存中,后端全部采用Thrift(Socket)通信,就像直接引用对象一样方便且高效、减少网络延迟、提高系统的吞吐量,并且体系有同步、异步(队列非阻塞)、定时多种调用处理方式,进一步提高用户体验。
利用多语言云编译实现动态微服务体系,可能使开发团队容易尝试技术创新,与平台无关、语言无关,支持多语言(C#/VB.NET/JAVA/Python),可以选择不仅可以用现有系统所用的语言开发,也可以用其它语言进行开发跨平台运行。
利用多语言云编译实现动态微服务体系,系统稳定性增强,单个服务的失效不会影响其他服务,可以一定程度实现服务降级,而不会让整个系统瘫痪。
利用多语言云编译实现动态微服务体系,可以可视化监控,即时看到每个微服务每分钟/每小时/每天会有多少次的调用,被哪些业务调用,调用的每个时间点是多少,执行的性能和状态如何。当微服务出现问题时,即时短信/QQ/邮件报警,并可以通过错误跟踪监控系统可以快速定位异常信息。另外系统支持特有的applicationContext上下文,可以从客户请求到结束做全程调用链式和依赖关系跟踪。
利用多语言云编译实现动态微服务体系,同一个微服务实例提供多个版本,当新发布的版本出现问题或不稳定时,可以立即切换到上一个微服务版本,实现微服务版本快速rollback回滚。
利用多语言云编译实现动态微服务体系,很容易通过建立新的微服务来扩展系统业务逻辑。当向系统中加入新的微服务时,不必重新编译原有系统的前提下按需对系统功能进行扩充,从而快速响应客户个性化需求变化。
利用多语言云编译实现动态微服务体系,可以将动态在线扩展的业务逻辑可以同时部署到多台服务器上,实现自动化业务逻辑的负载均衡、横向扩展及分布式部署,从而适应多用户、高并发请求。
需要说明的是,构建多语言云编译实现动态微服务,可以动态的扩展增加系统的功能。当发现当前系统不能满足目前的需求时,只需要在线增加一个相应的动态脚本,不停止现有系统运行的情况下,对现有模块在线进行功能扩展或补充即可,而不用重新在线下开发,再次构造整个系统重新部署,从而实现敏捷业务扩展开发,即时满足客户个性化定制需求。
多语言云编译实现动态微服务对于软件运行时的扩展提供了很好的平台,业务动态脚本逻辑的指令集可以支持常见语言(C#/VB.NET/JAVA/Python),语言编译器通过框架可以生成低级指令的对象代码,整个系统所需要的脚本代码在首次运行时被动态编译成高效的原始代码,并放置于内存之中,大大提高了系统的执行速度。
在体系结构方面,传统的软件体系结构不利于大规模的集群化开发、部署,对现代软件产业的发展造成了极大的限制。采用多语言云编译实现动态微服务体系结构,可以使各个功能模块具有更大的独立性,改善了软件的可测试性和可维护性。与传统的软件体系结构相比,在这种微服务的体系结构中,使得而各个新扩展的微服务之间是相对独立的,这使得程序的结构简单,各部分可以完全独立开发,独立部署、独立运行,有利于在大规模软件开发过程中提高开发的并行性和效率。
多语言云编译实现动态微服务提供的强大可扩展性和组装性,正是通过不断的微服务进行扩展,使得它就像一棵树的树根一样不断地发展,从而赋予系统功能模块的无限可扩展性,使得系统能够不断地去满足新的需求。
多语言云编译实现动态微服务它允许自定义程序代码执行顺序的关系和执行逻辑,每个动态可扩展脚本都可以单独在线编程调试、升级维护、配置,可以根据需要动态编译、安装、载入、运行、停止、启用、停用、卸载,既不影响其它已有微服务功能模块的工作,又具有极大的灵活性。
本发明并不局限于应用软件所用的这一种语言,可以实现.Net、VB.NET、Java、Python在线编译服务,不需要像传统方式一样,使用开发软件VisualStudio或Eclipse在电脑本地进行开发,而是直接在线开发,在线动态编译、实现编译即服务并通过预留接口动态切入当前系统,实现原有功能的快速扩展。
多语言云编译实现动态微服务是基于SOA/ESB/MicroService的构建模式,这样的动态扩展也可以直接移植融合到远程业务接口或添加到您需要扩展的地方,不同的动态扩展之间,可以互相调用,也可以调用外部其它接口,从而构造复合的动态的微服务组件,使之更加灵活多变。
多语言云编译实现动态微服务是把软件开发中的功能细分,使开发者可以使用不同语言在线开发,动态部署,动态运行的方案,以减少重复代码编写,然后在系统运行需要时编译、加载、运行时,这套框架体系可以提高开发效率的编程思想。
多语言云编译实现动态微服务,这个微服务甚至可以交给第三方公司开发,提高行业内的合作,达到优势互补的目的。在开发完成后,微脚本功能也可被其他程序系统所调用,能提高软件的可重用性。
有利于在大规模软件开发过程中,使开发能够并行进行,提高开发的效率和质量。并且在开发和调试过程中,当部分微服务动态脚本发生问题的时候,由于各个微服务动态脚本之间相对独立,并不会影响到其他微服务,将有利于软件测试工作的开展和进行,便于在测试和调试的过程中发现问题解决问题。另外,对部分微服务动态脚本的修改,不会影响到其他微服务动态脚本,避免了因为改正错误而引出新问题的情况,而且系统在运行时刻可以动态地替换微服务组件,根据运行环境的变化或某些条件而引起新的行为,从而动态的提高软件系统的自适应性。
与现有技术相比,本发明公开的技术方案具有以下优点:
1)即时生效:由于微服务是开线开发、在线编译,所以开发编译后可立即生成微服务,可以开发后的微服务可以直接立即调用,不需要开发人员重新编译,重新部署系统;
2)增强代码可维护性:微服务代码在线开发、在线调试、在线运行,如果遇到问题,可以在线修复微服务,快速升级扩展或替换微服务、启用或停用微服务,实现微服务动态可插拔。
3)微服务会降低业务的复杂度,迫使你去合理划分系统边界,合理设计领域模型,使迭代的周期更短,可以多版本,灰度升级,服务降级,服务分布式跟踪等。
4)代码重用率高:微服务动态脚本把每个方面实现为独立的功能点,功能点之间是松散耦合的。松散耦合的实现通常意味着更好的代码重用性,可以将其移值到其它系统中直接调用,从而降低了软件的开发成本和难度,一次开发,微服务即可在任何地方调用(远程/本地)。
5)性能高:微服务体系根据上下文调用需要,即时将脚本进行编译,编译后的实例放置于内存中,就像直接引用对象一样方便且高效,且有同步、异步(队列非阻塞)、定时多种调用处理方式。
6)多种语言支持:微服务对于应用系统,如果需要扩展添加新的功能,不仅可以用现有语言开发,也可以用其它语言进行开发,并且可以跨平台运行。
7)易于管理:每个微服务开发者都可以单独开发、集成、测试、部署、完成上线流程,有效减少运维成本和管理成本,提高开发效率。
8)技术创新:微服务容易尝试技术创新,甚至每个功能扩展点微服务都可以采用不同的编程语言编写。
9)稳定性增强:系统稳定性增强,单个微服务的失效不会影响其他微服务,可以一定程度实现服务降级。
10)易于开发:每个微服务都使用最小耦合来进行处理,将系统中的模块进一步细化成不同的微服务,降低了模块之间的耦合度,不同专家和团队负责开发不同的模块,彼此间互不影响。实现快速敏捷开发。
11)代码集中易于理解。使用微服务体系可以将需要多次使用的公用代码集中到一处实现,这样代码的修改范围就可以得到严格的控制,减少代码修改对系统稳定性的影响,减少代码的冗余度和耦合度,增强可读性,提高软件质量,解决了面向对象编程跨模块造成的代码混乱和代码分散问题。
12)分布式:微服务实现将动态在线扩展的业务逻辑可以同时部署到多台服务器上,实现微服务业务逻辑的负载均衡横向扩展及分布式部署,从而适应多用户、高并发请求。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种多语言云编译的动态微服务编辑方法,其特征在于,包括:
T1:在接收到微服务编辑的指令后,调出微服务的编辑窗口,以作为所述微服务的脚本代码的编辑窗口;
T2:在接收到所述微服务的脚本代码编辑结束的信息后,将所述微服务的脚本代码发送至服务器,以使所述服务器对所述微服务的脚本代码进行检验,并反馈所述检验的检验结果;
T3:显示接收到的所述检验结果;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
2.根据权利要求1所述的方法,其特征在于,所述窗口包括至少一个子窗口,用于添加所述微服务的特征参数和脚本代码;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
3.一种多语言云编译的动态微服务编辑方法,其特征在于,包括:
C1:在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,判断服务器中是否存在所述微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果,否则,执行步骤C2;
C2:对接收到的微服务的脚本代码进行编译,监测所述编译的过程是否出现错误,若是,向所述编辑设备反馈添加的微服务的脚本代码编译错误的检验结果;否则,将所述微服务的脚本代码添加至所述服务器中,存储所述微服务的脚本代码编译后生成的微服务实例,并向所述编辑设备反馈所述微服务的脚本代码添加成功的检验结果;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
4.根据权利要求3所述的方法,其特征在于,所述步骤C1具体包括:
在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,生成所述微服务的脚本代码对应的哈希值,根据所述哈希值判断所述微服务库中是否存在与所述哈希值对应的微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果;否则,执行所述步骤C2。
5.根据权利要求3所述的方法,其特征在于,还包括:
将添加成功的微服务的特征参数添加至预先创建的微服务列表中;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
6.一种多语言云编译的动态微服务编辑装置,其特征在于,包括:
调用模块,用于在接收到微服务编辑的指令后,调出微服务的编辑窗口,以作为所述微服务的脚本代码的编辑窗口;
发送模块,用于在接收到所述微服务的脚本代码编辑结束的信息后,将所述微服务的脚本代码发送至服务器,以使所述服务器对所述微服务的脚本代码进行检验,并反馈所述检验的检验结果;
显示模块,用于显示接收到的所述检验结果后;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
7.根据权利要求6所述的装置,其特征在于,所述窗口包括至少一个子窗口,用于添加所述微服务的特征参数和脚本代码;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
8.一种多语言云编译的动态微服务编辑服务器,其特征在于,包括:
第一判断模块,用于在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,判断服务器中是否存在所述微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果,否则,执行步骤C2;
第二判断模块,用于对接收到的微服务的脚本代码进行编译,监测所述编译的过程是否出现错误,若是,向所述编辑设备反馈添加的微服务的脚本代码编译错误的检验结果;否则,将所述微服务的脚本代码添加至所述服务器中,存储所述微服务的脚本代码编译后生成的微服务实例,并向所述编辑设备反馈所述微服务的脚本代码添加成功的检验结果;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
9.根据权利要求8所述的服务器,其特征在于,所述第一判断模块还用于在接收到用于编辑微服务的编辑设备发送的微服务的脚本代码后,生成所述微服务的脚本代码对应的哈希值,根据所述哈希值判断所述微服务库中是否存在与所述哈希值对应的微服务的脚本代码,若是,向所述编辑设备反馈所述微服务已经存在的检验结果;否则,执行所述步骤C2。
10.根据权利要求8所述的服务器,其特征在于,还包括:
添加模块,用于将添加成功的微服务的特征参数添加至预先创建的微服务列表中;
其中,所述特征参数至少包括:所述微服务的中英文标识、所述微服务允许的最大微服务服务实例个数、所述微服务允许的最小微服务服务实例个数、所述微服务的服务类型、所述微服务所用的语言种类、所述微服务的执行方式。
CN201610599644.6A 2016-07-26 2016-07-26 多语言云编译的动态微服务编辑方法、装置和服务器 Active CN106293704B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610599644.6A CN106293704B (zh) 2016-07-26 2016-07-26 多语言云编译的动态微服务编辑方法、装置和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610599644.6A CN106293704B (zh) 2016-07-26 2016-07-26 多语言云编译的动态微服务编辑方法、装置和服务器

Publications (2)

Publication Number Publication Date
CN106293704A true CN106293704A (zh) 2017-01-04
CN106293704B CN106293704B (zh) 2019-10-15

Family

ID=57662377

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610599644.6A Active CN106293704B (zh) 2016-07-26 2016-07-26 多语言云编译的动态微服务编辑方法、装置和服务器

Country Status (1)

Country Link
CN (1) CN106293704B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI643081B (zh) * 2018-01-22 2018-12-01 中華電信股份有限公司 基於微服務之智慧型版號貼標系統及其方法
CN109189672A (zh) * 2018-08-13 2019-01-11 中国平安人寿保险股份有限公司 微服务的自动测试方法、服务器及计算机可读存储介质
CN109683988A (zh) * 2018-12-25 2019-04-26 鼎信信息科技有限责任公司 微服务启动方法、装置、计算机设备和存储介质
CN110058864A (zh) * 2019-04-18 2019-07-26 成都四方伟业软件股份有限公司 微服务的部署方法及装置
CN110099099A (zh) * 2019-03-28 2019-08-06 中国电子科技集团公司电子科学研究院 针对地面信息港的空间信息微服务封装及服务集成方法
CN110532020A (zh) * 2019-09-04 2019-12-03 中国工商银行股份有限公司 一种微服务编排的数据处理方法、装置及系统
CN110943851A (zh) * 2018-09-25 2020-03-31 中国移动通信集团广东有限公司 基于微服务的告警处理方法、装置及电子设备
CN111158895A (zh) * 2018-11-08 2020-05-15 中国电信股份有限公司 微服务资源调度方法和系统
CN111225014A (zh) * 2018-11-27 2020-06-02 中兴通讯股份有限公司 微服务的生成方法、装置、设备及存储介质
CN111240910A (zh) * 2020-01-02 2020-06-05 北京航天测控技术有限公司 设备健康管理微服务生成方法、装置、设备及可读介质
CN111258567A (zh) * 2018-12-01 2020-06-09 阿里巴巴集团控股有限公司 服务代码开发处理方法及装置
CN111581576A (zh) * 2020-05-08 2020-08-25 湖南蚁坊软件股份有限公司 基于微服务的开发处理方法、装置及存储介质
CN111813396A (zh) * 2020-07-14 2020-10-23 北京自如信息科技有限公司 一种脚本的编辑方法、装置、计算机设备及可读存储介质
CN113076095A (zh) * 2021-04-23 2021-07-06 南京始云网络科技有限公司 一种基于基础与逻辑功能分离的业务实现方法与系统
CN113504939A (zh) * 2021-07-08 2021-10-15 建信金融科技有限责任公司 项目版本发布的管理方法、装置、电子设备及计算机可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100299437A1 (en) * 2009-05-22 2010-11-25 Comcast Interactive Media, Llc Web Service System and Method
CN105162884A (zh) * 2015-09-25 2015-12-16 浪潮(北京)电子信息产业有限公司 一种基于微服务架构的云管理平台
CN105550130A (zh) * 2015-12-14 2016-05-04 中电科华云信息技术有限公司 基于容器的应用环境动态编排的方法及其应用系统
WO2016099346A1 (en) * 2014-12-15 2016-06-23 Telefonaktiebolaget Lm Ericsson (Publ) Method and deployment module for managing a container to be deployed on a software platform

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100299437A1 (en) * 2009-05-22 2010-11-25 Comcast Interactive Media, Llc Web Service System and Method
WO2016099346A1 (en) * 2014-12-15 2016-06-23 Telefonaktiebolaget Lm Ericsson (Publ) Method and deployment module for managing a container to be deployed on a software platform
CN105162884A (zh) * 2015-09-25 2015-12-16 浪潮(北京)电子信息产业有限公司 一种基于微服务架构的云管理平台
CN105550130A (zh) * 2015-12-14 2016-05-04 中电科华云信息技术有限公司 基于容器的应用环境动态编排的方法及其应用系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郭栋等: "一种基于微服务架构的新型云件PaaS平台", 《信息网络安全》 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI643081B (zh) * 2018-01-22 2018-12-01 中華電信股份有限公司 基於微服務之智慧型版號貼標系統及其方法
CN109189672A (zh) * 2018-08-13 2019-01-11 中国平安人寿保险股份有限公司 微服务的自动测试方法、服务器及计算机可读存储介质
CN109189672B (zh) * 2018-08-13 2024-03-29 中国平安人寿保险股份有限公司 微服务的自动测试方法、服务器及计算机可读存储介质
CN110943851B (zh) * 2018-09-25 2022-10-18 中国移动通信集团广东有限公司 基于微服务的告警处理方法、装置及电子设备
CN110943851A (zh) * 2018-09-25 2020-03-31 中国移动通信集团广东有限公司 基于微服务的告警处理方法、装置及电子设备
CN111158895A (zh) * 2018-11-08 2020-05-15 中国电信股份有限公司 微服务资源调度方法和系统
CN111225014A (zh) * 2018-11-27 2020-06-02 中兴通讯股份有限公司 微服务的生成方法、装置、设备及存储介质
US11588908B2 (en) 2018-11-27 2023-02-21 Zte Corporation Method, apparatus and device for generating microservice, and storage medium
WO2020108348A1 (zh) * 2018-11-27 2020-06-04 中兴通讯股份有限公司 微服务的生成方法、装置、设备及存储介质
CN111258567A (zh) * 2018-12-01 2020-06-09 阿里巴巴集团控股有限公司 服务代码开发处理方法及装置
CN111258567B (zh) * 2018-12-01 2023-06-16 阿里巴巴集团控股有限公司 服务代码开发处理方法及装置
CN109683988B (zh) * 2018-12-25 2019-10-18 南方电网数字电网研究院有限公司 微服务启动方法、装置、计算机设备和存储介质
CN109683988A (zh) * 2018-12-25 2019-04-26 鼎信信息科技有限责任公司 微服务启动方法、装置、计算机设备和存储介质
CN110099099A (zh) * 2019-03-28 2019-08-06 中国电子科技集团公司电子科学研究院 针对地面信息港的空间信息微服务封装及服务集成方法
CN110099099B (zh) * 2019-03-28 2021-11-16 中国电子科技集团公司电子科学研究院 针对地面信息港的空间信息微服务封装及服务集成方法
CN110058864B (zh) * 2019-04-18 2023-08-22 成都四方伟业软件股份有限公司 微服务的部署方法及装置
CN110058864A (zh) * 2019-04-18 2019-07-26 成都四方伟业软件股份有限公司 微服务的部署方法及装置
CN110532020A (zh) * 2019-09-04 2019-12-03 中国工商银行股份有限公司 一种微服务编排的数据处理方法、装置及系统
CN110532020B (zh) * 2019-09-04 2023-12-05 中国工商银行股份有限公司 一种微服务编排的数据处理方法、装置及系统
CN111240910A (zh) * 2020-01-02 2020-06-05 北京航天测控技术有限公司 设备健康管理微服务生成方法、装置、设备及可读介质
CN111240910B (zh) * 2020-01-02 2024-04-05 北京航天测控技术有限公司 设备健康管理微服务生成方法、装置、设备及可读介质
CN111581576A (zh) * 2020-05-08 2020-08-25 湖南蚁坊软件股份有限公司 基于微服务的开发处理方法、装置及存储介质
CN111581576B (zh) * 2020-05-08 2024-04-02 湖南蚁坊软件股份有限公司 基于微服务的开发处理方法、装置及存储介质
CN111813396A (zh) * 2020-07-14 2020-10-23 北京自如信息科技有限公司 一种脚本的编辑方法、装置、计算机设备及可读存储介质
CN113076095A (zh) * 2021-04-23 2021-07-06 南京始云网络科技有限公司 一种基于基础与逻辑功能分离的业务实现方法与系统
CN113504939B (zh) * 2021-07-08 2022-09-09 建信金融科技有限责任公司 项目版本发布的管理方法、装置、电子设备及计算机可读介质
CN113504939A (zh) * 2021-07-08 2021-10-15 建信金融科技有限责任公司 项目版本发布的管理方法、装置、电子设备及计算机可读介质

Also Published As

Publication number Publication date
CN106293704B (zh) 2019-10-15

Similar Documents

Publication Publication Date Title
CN106227605B (zh) 一种多语言云编译的动态微服务扩容方法及装置
CN106293704B (zh) 多语言云编译的动态微服务编辑方法、装置和服务器
CN106250199B (zh) 一种多语言云编译的动态微服务调用方法及装置
CN106227611A (zh) 一种多语言云编译的动态微服务调用方法及装置
CN106293808B (zh) 多语言云编译实现系统功能动态拦截扩展的方法及系统
CN112534398B (zh) 用于连接器开发和集成通道部署的系统和方法
US7926051B2 (en) Automatic parallel non-dependent component deployment
US9729615B2 (en) System and method for collaborative designing, development, deployment, execution, monitoring and maintenance of enterprise applications
US9075596B2 (en) Deployment
CN106250178A (zh) 通过多语言云编译实现系统动态功能在线拦截扩展的方法
Oreizy et al. Architecture-based runtime software evolution
US20180024814A1 (en) Automated enterprise software development
US9542175B2 (en) Continuous deployment
Fouquet et al. An eclipse modelling framework alternative to meet the models@ runtime requirements
CN101430644B (zh) 在结构化环境中执行动态程序的系统和方法
CN106293863A (zh) 多语言云编译实现系统功能动态扩展替换的方法及系统
JP2016505952A (ja) コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクト
CN104517181B (zh) 一种核电站企业内容管理系统及方法
CN104142825A (zh) 一种产品的模块化开发方法及系统
CN103218220A (zh) 基于动态可插拔组件的物联网中间件系统
CN106250179A (zh) 通过多语言云编译实现系统动态功能拦截扩展的方法
CN107885658B (zh) 测试前置实现方法、装置、终端设备及存储介质
US20100312879A1 (en) Plug-in provisioning integration in a clustered environment
CN107436775A (zh) 虚拟机上安装业务版本的方法及装置
CN107103064A (zh) 数据统计方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant