CN106227605A - 一种多语言云编译的动态微服务扩容方法及装置 - Google Patents

一种多语言云编译的动态微服务扩容方法及装置 Download PDF

Info

Publication number
CN106227605A
CN106227605A CN201610599650.1A CN201610599650A CN106227605A CN 106227605 A CN106227605 A CN 106227605A CN 201610599650 A CN201610599650 A CN 201610599650A CN 106227605 A CN106227605 A CN 106227605A
Authority
CN
China
Prior art keywords
micro services
meansigma methods
preset value
preset
dilatation
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
CN201610599650.1A
Other languages
English (en)
Other versions
CN106227605B (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 CN201610599650.1A priority Critical patent/CN106227605B/zh
Publication of CN106227605A publication Critical patent/CN106227605A/zh
Application granted granted Critical
Publication of CN106227605B publication Critical patent/CN106227605B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability

Landscapes

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

Abstract

本发明提供的多语言云编译的动态微服务扩容方法及装置,该方法获取微服务的服务类型,并分别根据CPU消耗型的微服务扩容方法和内存消耗型的微服务扩容方法对微服务进行扩容处理。扩容的微服务是能够实现预设功能的一个功能点,而不是整个业务***,由于微服务的内存利用率或者CPU利用率均远小于整个业务***的内存利用率或者CPU利用率,因此,相比于对整个业务***进行扩容操作,对微服务的扩容耗时更短,提高了扩容效率,并且有效提高***功能扩展的灵活性、开放性、可维护性以及可伸缩性。

Description

一种多语言云编译的动态微服务扩容方法及装置
技术领域
本发明属于计算机技术领域,具体涉及一种多语言云编译的动态微服务扩容方法及装置。
背景技术
随着面向对象设计模式和企业架构模式出现,一个***从功能实现、代码组织等角度来思考,通常分为三个层次:表示层、业务逻辑层、数据访问层,表示层是基于Html的Web页面,通过RestAPI取数据进行渲染;业务逻辑层是应用***的核心代码,通常用来实现***业务规则;数据访问层是访问数据库或信息的中间媒介;这是我们常见的经典三层架构模式,这种模式虽然在一定程度上解决了***模块间调用复杂、职责不清的问题,但这种传统的架构风格在开发效率、构建部署、维护成本,以及可扩展性、可伸缩方面有很大不足和局限性。
这种架构方式的***开发完成后是各个功能、模块相对固定的,提供的接口和实现都是约定好的,最终经过开发、编译、打包、部署,最后运行是放在一个进程中,它就像一块铁块,笨重且无法拆分,也无法扩展,后期***中任何一点的变化都需要线下重新开发、编译,打包,部署,整个过程周期长、维护成本高。而随着业务***的不断发展,需求的不断增加,***的可扩展性、可维护性、可运维、可管理性却在不断下降。
综合现有技术中存在以下缺点:(1)扩展复杂:代码全部在一个项目***中,这使得整个扩展过程非常复杂繁琐,并且有可能破还原有代码的结构;(2)代码重用率低:***代码逻辑只是为了当前所开发并耦合到***中,这降低了代码的重用率;。(3)开发周期长效率低:扩展或添加新的需求时,需要开发人员线下重新开发、编译、测试、上传、配置、打包、部署***,这使得开发周期很长效率很低。(4)难以维护:***开发人员和技术的应用有可能都已经迭代过无数次,***中代码之间的互相调用、互相耦合也错综复杂,不是很了解***的人不敢轻举妄动。随着***的需求和功能越来越多,团队越来越大,相应的沟通成本、开发成本、管理成本都会成倍增加,当***出现缺陷时,也会造成分析问题、定位问题、修复问题的时间更长;随着代码量的增加也有可能导致“修复越多,缺陷越多”的恶性循环;***中一个小的改动就需要重新部署整个应用***。(5)开发语言局限性:应用***如果使用某种语言开发,那么再次需求扩展时则还必须已经此语言进行扩展,无法尝试新的编程语言或框架,这目前在现实中也不可能使用一个技术平台或方案来解决所有问题。(6)硬件成本高难以水平扩展:所有的程序代码在服务器的同一个进程中,会导致水平扩展难和成本高的局面,因为***中不同的模块功能实际上对服务器的要求是不同的,有的是CPU密集计算机型,需要有性能较强的CPU处理器,有的是需要内存IO密集型,需要使用大量内存进行数据缓存,如果将***所要求的服务器基础设施按同一种标准去采购,则硬件成本会非常高。(7)可靠性低:所有模块功能都运行在一个进程中,任何一个模块功能中的一个错误bug,比如内存泄露/CPU持续走高,将会有可能弄垮或拖慢整个进程,从而影响到整个应用的可靠性。(8)无法分布式部署支撑高并发:由于无法将外部依赖的Dll或Jar与现有***程序进行物理机进行有效的分离,随着***的不断升级和扩展,这样庞大且复杂的***,要伸缩必须为整体式的伸缩,无法有效分离式伸缩,***中用户所需要经常操作的核心业务点可能只有30%,而现在却要将非核心的70%做同样的部署伸缩,不能达到资源的最大化集约使用。(9)影响持续集成和交付:由于业务***的庞大复杂,加上无数次的扩展升级,所以构建一次的时间也会非常漫长,失败的次数也会大大增加,如果构建过程错误,排查问题也会非常困难。另外对***做的任何一点细微的修改都需要将整个***重新构建、重新部署。多个开发人员共同开发一个***,还需要等待其他开发人员完成后才能部署,这大大降低了团队的灵活性和功能交付频率;(10)另外在项目打开和运行十分缓慢、***难以开发、测试、持续集成困难、部署环境依赖复杂、技术栈绑定,编程语言、框架、数据库的升级和更换非常困难等等。
如何应对这些问题,对软件***的灵活性、开放性、可维护性、可伸缩性,以及软件***对于市场和客户的反应能力都提出了更高的要求。如何快速地增加、扩展、升级当前标准的***功能为客户量身定制,并且有效的保障提升软件开发质量和开发效率,已经成为软件行业的重要挑战。
当现有的业务***需要进行扩容处理时,需要对整个业务***的CPU利用率和内存利用率进行检测,在扩容过程中扩容的对象是整个业务***,这种扩容方式耗费的时间长,扩容效率低。同时,对于业务***中使用率较低的功能实现扩容对提升整个业务***的功能意义不大。
发明内容
本发明所要解决的技术问题是如何解决业务***扩容的过程中,对整个业务***进行检测和扩容带来的扩容时间耗费时间长,效率低的问题,并且有效提高***功能扩展的灵活性、开放性、可维护性以及可伸缩性。
针对该技术问题,本发明提供了一种多语言云编译的动态微服务扩容方法,包括:
A1:判断预设的微服务的服务类型,若所述微服务的服务类型为CPU消耗型,执行步骤A2,若所述微服务的服务类型为内存消耗型,执行步骤A3;
A2:获取所述微服务对应的所有微服务实例的CPU利用率,根据所述CPU利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
A3:获取所述微服务对应的所有微服务实例的内存利用率,根据所述内存利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
优选地,所述步骤A2包括:
A21:获取所述微服务对应的所有微服务实例的CPU利用率,计算所有微服务实例的CPU利用率的第一平均值,判断所述第一平均值是否大于第一预设值,若是,复制所述微服务实例至第一预设服务器中,否则,执行步骤A22;
A22:判断所述第一平均值是否小于第二预设值,若是,执行步骤A23,否则,返回所述步骤A1;
A23:获取所述第一平均值小于所述第二预设值所持续的第一时长,判断所述第一时长是否大于第三预设值,若是,删除所述微服务中第一预设数量的微服务实例,否则,返回所述步骤A1。
优选地,所述步骤A3包括:
A31:获取所述微服务对应的所有微服务实例的内存利用率,计算所述微服务中的所有微服务实例的内存利用率的第二平均值,判断所述第二平均值是否大于第四预设值,若是,复制所述微服务实例至第二预设服务器中,否则,执行步骤A32;
A32:判断所述第二平均值是否小于第五预设值,若是,执行步骤A33,否则,删除所述微服务中第二预设数量的微服务实例;
A33:判断所述第二平均值小于第六阈值所持续的第二时长是否大于第七阈值,若是,删除所述微服务中第三预设数量的微服务实例否则,返回所述步骤A1。
优选地,所述服务类型根据所述微服务所在的服务器的配置进行划分。
优选地,还包括:在对所述微服务中的微服务实例进行复制扩展或者删除操作后,在所述微服务列表中更新所述微服务中包含的微服务实例的个数信息。
另一方面,本发明还提供了一种多语言云编译的动态微服务扩容装置,包括:
判断模块,用于判断预设的微服务的服务类型;
第一扩容模块,用于在所述微服务的服务类型为CPU消耗型时,获取所述微服务对应的所有微服务实例的CPU利用率,根据所述CPU利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
第二扩容模块,用于在所述微服务的服务类型为内存消耗型时,获取所述微服务对应的所有微服务实例的内存利用率,根据所述内存利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
优选地,所述第一扩容模块包括:
第一计算单元,用于获取所述微服务对应的所有微服务实例的CPU利用率,计算所有微服务实例的CPU利用率的第一平均值,判断所述第一平均值是否大于第一预设值,若是,复制所述微服务实例至第一预设服务器中;
第一判断单元,用于在判断所述第一平均值小于或等于所述第一预设值时,判断所述第一平均值是否小于第二预设值,并在判断所述第一平均值大于或等于所述第二预设值时,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程;
第二判断单元,用于在判断所述第一平均值小于所述第二预设值时,获取所述第一平均值小于所述第二预设值所持续的第一时长,判断所述第一时长是否大于第三预设值,若是,删除所述微服务中第一预设数量的微服务实例,否则,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程。
优选地,所述第二扩容模块包括:
第二计算单元,用于获取所述微服务对应的所有微服务实例的内存利用率,计算所述微服务中的所有微服务实例的内存利用率的第二平均值,判断所述第二平均值是否大于第四预设值,若是,复制所述微服务实例至第二预设服务器中;
第三判断单元,用于在判断所述第二平均值小于或等于所述第四预设值时,判断所述第二平均值是否小于第五预设值,并在判断所述第二平均值大于或等于所述第五预设值时,删除所述微服务中第二预设数量的微服务实例;
第四判断单元,用于在判断所述第二平均值小于所述第五预设值时,判断所述第二平均值小于第六阈值所持续的第二时长是否大于第七阈值,若是,删除所述微服务中第三预设数量的微服务实例,否则,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程。
优选地,所述服务类型根据所述微服务所在的服务器的配置进行划分。
优选地,还包括更新模块,用于在对所述微服务中的微服务实例进行复制扩展或者删除操作后,在所述微服务列表中更新所述微服务中包含的微服务实例的个数信息。
本发明提供的多语言云编译的动态微服务扩容方法及装置,获取微服务的服务类型,并分别根据CPU消耗型的微服务扩容方法和内存消耗型的微服务扩容方法对微服务进行扩容处理。扩容的微服务是能够实现预设功能的一个功能点,而不是整个业务***,由于微服务的内存利用率或者CPU利用率均远小于整个业务***的内存利用率或者CPU利用率,因此,相比于对整个业务***进行扩容操作,对微服务的扩容耗时更短,提高了扩容效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的多语言云编译的动态微服务扩容方法流程示意图;
图2是本发明实施例提供的多语言云编译的动态微服务扩容装置结构框图;
图3是本发明实施例提供的多语言动态微服务调用过程流程示意图;
图4是本发明实施例提供的多语言动态微服务编辑及调用过程的框架示意图;
图5是本发明实施例提供的多语言动态微服务编辑过程流程示意图;
图6是本发明实施例提供的多语言动态微服务在线开发的界面结构示意图;
图7是本发明实施例提供的多语言动态微服务的属性结构示意图;
图8是本发明实施例提供的多语言动态微服务的进程实例状态上报示意图;
图9是本发明实施例提供的多语言动态微服务的API网关处的微服务的属性示意图;
图10是本发明实施例提供的多语言动态微服务容器内存装置结构图;
图11是本发明实施例提供的多语言动态微服务扩容过程流程示意图;
图12是本发明实施例提供的多语言动态微服务部署/分布/伸缩的示意图;
图13是本发明实施例提供的多语言动态微服务容器管理模块装置示意图;
图14是本发明实施例提供的多语言动态微服务编译的模块示意图;
图15是本发明实施例提供的多语言动态微服务的微服务列表结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的多语言云编译的动态微服务扩容方法流程示意图。参见图1,该方法,包括:
A1:判断预设的微服务的服务类型,若所述微服务的服务类型为CPU消耗型,执行步骤A2,若所述微服务的服务类型为内存消耗型,执行步骤A3;
A2:获取所述微服务对应的所有微服务实例的CPU利用率,根据所述CPU利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
A3:获取所述微服务对应的所有微服务实例的内存利用率,根据所述内存利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
微服务的服务类型包括:CPU消耗型和内存消耗型,一般根据微服务所在的服务器的配置进行判断。例如,当该服务器的内存很大,说明服务器中的微服务是内存消耗型的。当该服务器主要用于进行运算,则说明微服务是CPU消耗型的。
需要说明的是,本实施例说说的扩容处理可以是自动扩容,也可以是手动扩容。对微服务中的微服务实例进行复制扩展具体是对微服务中的微服务实例进行自动复制分布式扩展。
每一个微服务实例的利用率可以通过微服务列表中的记录得到。微服务列表记录了微服务的信息,例如,CPU使用率、内存使用率、线程数量、TCP连接数、执行日志、响应时间、IO状况、垃圾回收GC状况、TCP端口状态(是否连通)、微服务的创建、微服务的销毁、微服务的版本变更等信息。可理解的是从该微服务列表中可以查询到微服务的服务类型。由于在微服务运行时,实际上是微服务实例的运行,所以在判断是否对微服务进行扩容时,应该考虑微服务中的所有微服务实例。
微服务是用于实现预设业务***中的预设功能的脚本代码,例如,在学生管理***这一业务***中,微服务A用于实现学生成绩添加这一功能、微服务B用于实现学生个人信息添加这一功能、微服务C用于实现学生信息删除和更改这一功能……,所有的微服务均只能实现学生管理***中的一个预设功能,整个学生管理***按照一定的规则对这些微服务进行调用实现整个学生管理***的功能。学生管理***的各个微服务之间相互独立,且相对于整个业务***,对微服务的扩容耗时更短,提高了扩容效率。
本发明提供的多语言云编译的动态微服务扩容方法,获取微服务的服务类型,并分别根据CPU消耗型的微服务扩容方法和内存消耗型的微服务扩容方法对微服务进行扩容处理。扩容的微服务是能够实现预设功能的一个功能点,而不是整个业务***,由于微服务的内存利用率或者CPU利用率均远小于整个业务***的内存利用率或者CPU利用率,因此,相比于对整个业务***进行扩容操作,对微服务的扩容耗时更短,提高了扩容效率。
进一步地,步骤A2包括:
A21:获取所述微服务对应的所有微服务实例的CPU利用率,计算所有微服务实例的CPU利用率的第一平均值,判断所述第一平均值是否大于第一预设值,若是,复制所述微服务实例至第一预设服务器中,否则,执行步骤A22;
A22:判断所述第一平均值是否小于第二预设值,若是,执行步骤A23,否则,返回所述步骤A1;
A23:获取所述第一平均值小于所述第二预设值所持续的第一时长,判断所述第一时长是否大于第三预设值,若是,删除所述微服务中第一预设数量的微服务实例,否则,返回所述步骤A1。
进一步地,所述步骤A3包括:
A31:获取所述微服务对应的所有微服务实例的内存利用率,计算所述微服务中的所有微服务实例的内存利用率的第二平均值,判断所述第二平均值是否大于第四预设值,若是,复制所述微服务实例至第二预设服务器中,否则,执行步骤A32;
A32:判断所述第二平均值是否小于第五预设值,若是,执行步骤A33,否则,删除所述微服务中第二预设数量的微服务实例;
A33:判断所述第二平均值小于第六阈值所持续的第二时长是否大于第七阈值,若是,删除所述微服务中第三预设数量的微服务实例否则,返回所述步骤A1。
需要说明的是,第一预设值可以是当此微服务根据该微服务所能承载的最大数目的微服务实例进行配置时,所达到的最大平均值,第二预设值是最小平均值。第四预设值可以是当此微服务根据该微服务所能承载的最大数目的微服务实例进行配置时,所达到的最大平均值,第五预设值是最小平均值。
复制扩展就是将该微服务的微服务实例复制至其它服务器中,删除操作就是将微服务中的微服务实例删除,减少微服务中的微服务实例的个数。一般而言,对于调用频繁的微服务实例,需要将其复制至其它的服务器中,以便多个的终端在调用同一微服务的过程中,不用都从同一台服务器中调用该微服务实例,而可以从当前没有被调用的服务器中调用该微服务的微服务实例,提高调用效率。当然,对于使用较少的微服务,可以将其中的微服务实例进行删除,以减少微服务实例占用的空间。当然,微服务实例的增加或者减少的个数均需要根据服务器的配置而定。
进一步地,所述服务类型根据所述微服务所在的服务器的配置进行划分。
进一步地,还包括:在对所述微服务中的微服务实例进行复制扩展或者删除操作后,在所述微服务列表中更新所述微服务中包含的微服务实例的个数信息。
图2是本发明实施例提供的多语言云编译的动态微服务扩容装置结构框图。参见图2,该多语言云编译的动态微服务扩容装置20,包括:判断模块21、第一扩容模块22和第二扩容模块23。
判断模块21,用于判断预设的微服务的服务类型;
第一扩容模块22,用于在所述微服务的服务类型为CPU消耗型时,获取所述微服务对应的所有微服务实例的CPU利用率,根据所述CPU利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
第二扩容模块23,用于在所述微服务的服务类型为内存消耗型时,获取所述微服务对应的所有微服务实例的内存利用率,根据所述内存利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
本发明提供的多语言云编译的动态微服务扩容装置,判断模块21获取微服务的服务类型,第一扩容模块22和第二扩容模块23分别根据CPU消耗型的微服务扩容方法和内存消耗型的微服务扩容方法对微服务进行扩容处理。扩容的微服务是能够实现预设功能的一个功能点,而不是整个业务***,由于微服务的内存利用率或者CPU利用率均远小于整个业务***的内存利用率或者CPU利用率,因此,相比于对整个业务***进行扩容操作,对微服务的扩容耗时更短,提高了扩容效率。
进一步地,所述第一扩容模块包括:
第一计算单元,用于获取所述微服务对应的所有微服务实例的CPU利用率,计算所有微服务实例的CPU利用率的第一平均值,判断所述第一平均值是否大于第一预设值,若是,复制所述微服务实例至第一预设服务器中;
第一判断单元,用于在判断所述第一平均值小于或等于所述第一预设值时,判断所述第一平均值是否小于第二预设值,并在判断所述第一平均值大于或等于所述第二预设值时,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程;
第二判断单元,用于在判断所述第一平均值小于所述第二预设值时,获取所述第一平均值小于所述第二预设值所持续的第一时长,判断所述第一时长是否大于第三预设值,若是,删除所述微服务中第一预设数量的微服务实例,否则,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程。
进一步地,所述第二扩容模块包括:
第二计算单元,用于获取所述微服务对应的所有微服务实例的内存利用率,计算所述微服务中的所有微服务实例的内存利用率的第二平均值,判断所述第二平均值是否大于第四预设值,若是,复制所述微服务实例至第二预设服务器中;
第三判断单元,用于在判断所述第二平均值小于或等于所述第四预设值时,判断所述第二平均值是否小于第五预设值,并在判断所述第二平均值大于或等于所述第五预设值时,删除所述微服务中第二预设数量的微服务实例;
第四判断单元,用于在判断所述第二平均值小于所述第五预设值时,判断所述第二平均值小于第六阈值所持续的第二时长是否大于第七阈值,若是,删除所述微服务中第三预设数量的微服务实例,否则,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程。
进一步地,所述服务类型根据所述微服务所在的服务器的配置进行划分。
进一步地,还包括更新模块,用于在对所述微服务中的微服务实例进行复制扩展或者删除操作后,在所述微服务列表中更新所述微服务中包含的微服务实例的个数信息。
参见图4,服务器中的各种微服务(例如,图4中的微服务A、微服务B等)由开发人员在线开发。服务器接收到调用请求后,根据请求信息调用微服务(如图4所示,可以调用单独的一个微服务,也可以调用两个或者多个微服务,例如,按照一定的规则调用微服务A和微服务B,这种调用方式相当于调用了一个新的微服务F),在微服务完成预设功能后,将执行任务的结果反馈至终端,在反馈的过程中信息传输的途径会由网关进行包装,从socket传输转换为http的传输方式。在微服务调用的过程中,可以对单个的微服务进行调用,同时,微服务之间可以自由组合,生成新的微服务。
作为一种具体的实施例,微服务的调用过程参见图3,多语言动态微服务调用过程流程示意图,包括如下步骤:
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)结束返回友好信息给前端调用者。
当然,调用的这些微服务是之前通过以下方式添加至服务器中的:参见图5:
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、再次添加新的微服务脚本代码。
微服务编辑的界面如图6所示,通过该界面将微服务对微服务的脚本代码进行编辑,并添加微服务的属性信息。其中,图7中示出了动态微服务的属性类别。可理解的是,在动态脚本添加或者编辑后,会将微服务的状态(创建、销毁或变更)上报至网关,当然上报至网关的数据中还包括微服务的连接数,线程数等,具体参见图8。
如图9所示,动态微服务的API网关记载了动态微服务的信息,例如,微服务的注册、微服务的发现、动态微服务的身份验证等,具体参见图9。
图10是动态微服务的容器装置结构图,微服务存储于容器装置中,在容器装置中通过多语言动态脚本代码编译引擎装置和多语言动态脚本代码执行引擎装置对微服务进行实例化。这些微服务存储于多语言动态脚本存储仓库中。
对于这些微服务,可以通过如图11所示的方式进行扩展。如图11所示,
1)从动态微服务综合管理调度器中,获取已注册有效动态微服务列表。微服务列表的结构如图15所示。
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使用率没有超过所配置的最大平均值,则跳转到18。
9)判断内存使用率是否超过所配置的最大平均值(此微服务的所有实例内存利用率平均值)。
10)如果内存使用率已经超过所配置的最大平均值,则跳转到12。
11)如果内存使用率没有超过所配置的最大平均值,则跳转到14。
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。
图12是动态微服务的部署/分布/伸缩示意图,当检测到需要对微服务(例如图12中的微服务A、微服务B和微服务C)进行复制扩容时,直接将该微服务复制至其它服务器,以提供更多的可调用微服务。图13是微服务的容器管理装置,通过该装置中的检测模块、复制模块等对微服务的扩容进行控制。
图14是本发明提供的微服务的总体结构模块示意图,通过该模块中的各个模块之间的协作共同完成微服务的调用、编辑和扩容的过程。
本发明提供的多语言云编译实现动态微服务技术,是把***的每一个服务都映射为一段动态脚本代码,在远程服务器动态微服务云编译引擎会把它翻译成可执行代码放置于内存当中(这段代码可以用常见的编程语言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.一种多语言云编译的动态微服务扩容方法,其特征在于,包括:
A1:判断预设的微服务的服务类型,若所述微服务的服务类型为CPU消耗型,执行步骤A2,若所述微服务的服务类型为内存消耗型,执行步骤A3;
A2:获取所述微服务对应的所有微服务实例的CPU利用率,根据所述CPU利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
A3:获取所述微服务对应的所有微服务实例的内存利用率,根据所述内存利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
2.根据权利要求1所述的方法,其特征在于,所述步骤A2包括:
A21:获取所述微服务对应的所有微服务实例的CPU利用率,计算所有微服务实例的CPU利用率的第一平均值,判断所述第一平均值是否大于第一预设值,若是,复制所述微服务实例至第一预设服务器中,否则,执行步骤A22;
A22:判断所述第一平均值是否小于第二预设值,若是,执行步骤A23,否则,返回所述步骤A1;
A23:获取所述第一平均值小于所述第二预设值所持续的第一时长,判断所述第一时长是否大于第三预设值,若是,删除所述微服务中第一预设数量的微服务实例,否则,返回所述步骤A1。
3.根据权利要求1所述的方法,其特征在于,所述步骤A3包括:
A31:获取所述微服务对应的所有微服务实例的内存利用率,计算所述微服务中的所有微服务实例的内存利用率的第二平均值,判断所述第二平均值是否大于第四预设值,若是,复制所述微服务实例至第二预设服务器中,否则,执行步骤A32;
A32:判断所述第二平均值是否小于第五预设值,若是,执行步骤A33,否则,删除所述微服务中第二预设数量的微服务实例;
A33:判断所述第二平均值小于第六阈值所持续的第二时长是否大于第七阈值,若是,删除所述微服务中第三预设数量的微服务实例否则,返回所述步骤A1。
4.根据权利要求1所述的方法,其特征在于,所述服务类型根据所述微服务所在的服务器的配置进行划分。
5.根据权利要求1所述的方法,其特征在于,还包括:在对所述微服务中的微服务实例进行复制扩展或者删除操作后,在所述微服务列表中更新所述微服务中包含的微服务实例的个数信息。
6.一种多语言云编译的动态微服务扩容装置,其特征在于,包括:
判断模块,用于判断预设的微服务的服务类型;
第一扩容模块,用于在所述微服务的服务类型为CPU消耗型时,获取所述微服务对应的所有微服务实例的CPU利用率,根据所述CPU利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
第二扩容模块,用于在所述微服务的服务类型为内存消耗型时,获取所述微服务对应的所有微服务实例的内存利用率,根据所述内存利用率对所述微服务中的微服务实例进行复制扩展或者删除操作;
其中,所述微服务为一段脚本代码,对所述脚本代码进行编译形成能够实现预设功能的微服务实例。
7.根据权利要求6所述的装置,其特征在于,所述第一扩容模块包括:
第一计算单元,用于获取所述微服务对应的所有微服务实例的CPU利用率,计算所有微服务实例的CPU利用率的第一平均值,判断所述第一平均值是否大于第一预设值,若是,复制所述微服务实例至第一预设服务器中;
第一判断单元,用于在判断所述第一平均值小于或等于所述第一预设值时,判断所述第一平均值是否小于第二预设值,并在判断所述第一平均值大于或等于所述第二预设值时,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程;
第二判断单元,用于在判断所述第一平均值小于所述第二预设值时,获取所述第一平均值小于所述第二预设值所持续的第一时长,判断所述第一时长是否大于第三预设值,若是,删除所述微服务中第一预设数量的微服务实例,否则,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程。
8.根据权利要求6所述的装置,其特征在于,所述第二扩容模块包括:
第二计算单元,用于获取所述微服务对应的所有微服务实例的内存利用率,计算所述微服务中的所有微服务实例的内存利用率的第二平均值,判断所述第二平均值是否大于第四预设值,若是,复制所述微服务实例至第二预设服务器中;
第三判断单元,用于在判断所述第二平均值小于或等于所述第四预设值时,判断所述第二平均值是否小于第五预设值,并在判断所述第二平均值大于或等于所述第五预设值时,删除所述微服务中第二预设数量的微服务实例;
第四判断单元,用于在判断所述第二平均值小于所述第五预设值时,判断所述第二平均值小于第六阈值所持续的第二时长是否大于第七阈值,若是,删除所述微服务中第三预设数量的微服务实例,否则,向所述获取模块发送重新获取微服务的服务类型的信息,以循环执行扩容流程。
9.根据权利要求6所述的装置,其特征在于,所述服务类型根据所述微服务所在的服务器的配置进行划分。
10.根据权利要求6所述的装置,其特征在于,还包括更新模块,用于在对所述微服务中的微服务实例进行复制扩展或者删除操作后,在所述微服务列表中更新所述微服务中包含的微服务实例的个数信息。
CN201610599650.1A 2016-07-26 2016-07-26 一种多语言云编译的动态微服务扩容方法及装置 Active CN106227605B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610599650.1A CN106227605B (zh) 2016-07-26 2016-07-26 一种多语言云编译的动态微服务扩容方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610599650.1A CN106227605B (zh) 2016-07-26 2016-07-26 一种多语言云编译的动态微服务扩容方法及装置

Publications (2)

Publication Number Publication Date
CN106227605A true CN106227605A (zh) 2016-12-14
CN106227605B CN106227605B (zh) 2019-10-18

Family

ID=57533038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610599650.1A Active CN106227605B (zh) 2016-07-26 2016-07-26 一种多语言云编译的动态微服务扩容方法及装置

Country Status (1)

Country Link
CN (1) CN106227605B (zh)

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106656604A (zh) * 2016-12-23 2017-05-10 郑州云海信息技术有限公司 微服务请求管理方法、微服务控制器及高并发微服务架构
CN107645508A (zh) * 2017-10-16 2018-01-30 深圳市买买提乐购金融服务有限公司 一种数据处理***、方法、客户端及服务器
CN107770243A (zh) * 2017-09-06 2018-03-06 北京奥鹏远程教育中心有限公司 自扩展、自适应微服务平台及其应用方法
CN108206852A (zh) * 2016-12-20 2018-06-26 杭州华为数字技术有限公司 一种微服务框架下的基于会话的服务实例管理方法及设备
CN108282368A (zh) * 2018-01-24 2018-07-13 云宏信息科技股份有限公司 一种微服务管理***、方法及计算机存储介质
WO2018137585A1 (zh) * 2017-01-26 2018-08-02 华为技术有限公司 扩容方法及扩容装置
CN108418862A (zh) * 2018-01-31 2018-08-17 金蝶软件(中国)有限公司 基于人工智能服务云平台的微服务管理方法和***
CN108600005A (zh) * 2018-04-23 2018-09-28 国云科技股份有限公司 一种防御微服务雪崩效应的方法
CN108984714A (zh) * 2018-07-09 2018-12-11 北京三快在线科技有限公司 页面渲染方法、装置、电子设备及计算机可读介质
CN109240662A (zh) * 2018-08-09 2019-01-18 赛尔网络有限公司 一种基于云平台的软件开发方法、云平台、设备及介质
CN109525651A (zh) * 2018-10-29 2019-03-26 中译语通科技股份有限公司 应用程序数据节点动态增加方法及***
CN109522115A (zh) * 2018-10-11 2019-03-26 平安科技(深圳)有限公司 资源配置方法、电子设备及存储介质
CN109618002A (zh) * 2019-01-11 2019-04-12 武汉斗鱼鱼乐网络科技有限公司 一种微服务网关优化方法、装置及存储介质
CN110070422A (zh) * 2019-04-30 2019-07-30 德德市界(深圳)科技有限公司 基于扁平架构的数据处理***、方法及相关设备
CN110086853A (zh) * 2019-03-28 2019-08-02 浙江明度智控科技有限公司 一种工业物联网信息可视化方法、服务器和存储介质
CN110336753A (zh) * 2019-06-19 2019-10-15 腾讯科技(深圳)有限公司 一种跨网络区域的服务调用方法、装置、设备及存储介质
CN110489225A (zh) * 2018-05-15 2019-11-22 ***通信集团浙江有限公司 一种基于消息队列的服务扩容方法、装置及设备
CN110740151A (zh) * 2018-07-20 2020-01-31 中移信息技术有限公司 一种微服务调整方法、装置、服务器及计算机存储介质
CN110933097A (zh) * 2019-12-05 2020-03-27 美味不用等(上海)信息科技股份有限公司 面向多服务网关的限流与自动扩缩容方法
CN110993090A (zh) * 2019-09-09 2020-04-10 上海联影智能医疗科技有限公司 用于增强与传感器相关的功能的方法和装置
CN111124692A (zh) * 2020-01-02 2020-05-08 神州数码融信软件有限公司 一种业务请求处理***
CN111158895A (zh) * 2018-11-08 2020-05-15 中国电信股份有限公司 微服务资源调度方法和***
CN111381835A (zh) * 2018-12-28 2020-07-07 ***通信集团江西有限公司 技术服务组件的注册与发现的方法、装置、设备及介质
WO2020211222A1 (zh) * 2019-04-15 2020-10-22 厦门市美亚柏科信息股份有限公司 基于数据服务平台提供微服务的方法、装置、存储介质
CN112346872A (zh) * 2020-11-24 2021-02-09 中国工商银行股份有限公司 基于服务调用链路的云计算扩容方法及装置
CN112491581A (zh) * 2020-10-30 2021-03-12 中国人寿保险股份有限公司 一种服务性能监控管理方法及装置
CN112650575A (zh) * 2021-01-15 2021-04-13 百度在线网络技术(北京)有限公司 资源调度方法、装置和云端服务***
CN112905349A (zh) * 2021-03-18 2021-06-04 上海能链众合科技有限公司 一种面向指令集的高可用计算控制方法
CN113065785A (zh) * 2021-04-13 2021-07-02 国网江苏省电力有限公司信息通信分公司 一种电力物联管理平台动态资源扩展方法
CN113949638A (zh) * 2021-08-26 2022-01-18 中铁第四勘察设计院集团有限公司 一种基于云平台的铁路通信***扩缩容方法和***
CN114125035A (zh) * 2021-09-27 2022-03-01 烽火通信科技股份有限公司 一种大规模扩容场景下服务注册方法与装置
CN114138473A (zh) * 2021-11-23 2022-03-04 西安电子科技大学 一种基于混合模式的弹性调度装置及方法
CN114895879A (zh) * 2022-07-14 2022-08-12 四川航天信息有限公司 管理***设计方案确定方法、装置、设备及存储介质
CN115474165A (zh) * 2021-05-24 2022-12-13 中移动金融科技有限公司 短信服务自监控动态调整方法和***
CN116132289A (zh) * 2022-09-27 2023-05-16 马上消费金融股份有限公司 信息配置方法、装置、设备和介质
CN116126521A (zh) * 2022-12-20 2023-05-16 北京海致星图科技有限公司 服务内存信息的负载均衡方法、装置、存储介质和设备
CN117896313A (zh) * 2023-12-15 2024-04-16 天翼云科技有限公司 一种面向突发流量场景的微服务随动扩容方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426475A (zh) * 2011-11-04 2012-04-25 中国联合网络通信集团有限公司 桌面虚拟化环境下的节能方法、节能管理服务器及***
CN103019861A (zh) * 2012-12-11 2013-04-03 华为技术有限公司 虚拟机分配方法及装置
CN103944778A (zh) * 2014-03-31 2014-07-23 哈尔滨工程大学 一种基于组合测试集的分布式事件注入装置
CN105631196A (zh) * 2015-12-22 2016-06-01 中国科学院软件研究所 一种面向微服务架构的容器级弹性资源供给***及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426475A (zh) * 2011-11-04 2012-04-25 中国联合网络通信集团有限公司 桌面虚拟化环境下的节能方法、节能管理服务器及***
CN103019861A (zh) * 2012-12-11 2013-04-03 华为技术有限公司 虚拟机分配方法及装置
CN103944778A (zh) * 2014-03-31 2014-07-23 哈尔滨工程大学 一种基于组合测试集的分布式事件注入装置
CN105631196A (zh) * 2015-12-22 2016-06-01 中国科学院软件研究所 一种面向微服务架构的容器级弹性资源供给***及方法

Cited By (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108206852A (zh) * 2016-12-20 2018-06-26 杭州华为数字技术有限公司 一种微服务框架下的基于会话的服务实例管理方法及设备
CN108206852B (zh) * 2016-12-20 2020-12-22 华为技术有限公司 一种微服务框架下的基于会话的服务实例管理方法及设备
CN106656604A (zh) * 2016-12-23 2017-05-10 郑州云海信息技术有限公司 微服务请求管理方法、微服务控制器及高并发微服务架构
CN108366082B (zh) * 2017-01-26 2020-03-10 华为技术有限公司 扩容方法及扩容装置
WO2018137585A1 (zh) * 2017-01-26 2018-08-02 华为技术有限公司 扩容方法及扩容装置
CN108366082A (zh) * 2017-01-26 2018-08-03 华为技术有限公司 扩容方法及扩容装置
US11216310B2 (en) 2017-01-26 2022-01-04 Huawei Technologies Co., Ltd. Capacity expansion method and apparatus
CN107770243A (zh) * 2017-09-06 2018-03-06 北京奥鹏远程教育中心有限公司 自扩展、自适应微服务平台及其应用方法
CN107645508A (zh) * 2017-10-16 2018-01-30 深圳市买买提乐购金融服务有限公司 一种数据处理***、方法、客户端及服务器
CN108282368A (zh) * 2018-01-24 2018-07-13 云宏信息科技股份有限公司 一种微服务管理***、方法及计算机存储介质
CN108418862A (zh) * 2018-01-31 2018-08-17 金蝶软件(中国)有限公司 基于人工智能服务云平台的微服务管理方法和***
CN108600005A (zh) * 2018-04-23 2018-09-28 国云科技股份有限公司 一种防御微服务雪崩效应的方法
CN110489225A (zh) * 2018-05-15 2019-11-22 ***通信集团浙江有限公司 一种基于消息队列的服务扩容方法、装置及设备
CN108984714B (zh) * 2018-07-09 2020-11-27 北京三快在线科技有限公司 页面渲染方法、装置、电子设备及计算机可读介质
CN108984714A (zh) * 2018-07-09 2018-12-11 北京三快在线科技有限公司 页面渲染方法、装置、电子设备及计算机可读介质
CN110740151A (zh) * 2018-07-20 2020-01-31 中移信息技术有限公司 一种微服务调整方法、装置、服务器及计算机存储介质
CN109240662A (zh) * 2018-08-09 2019-01-18 赛尔网络有限公司 一种基于云平台的软件开发方法、云平台、设备及介质
CN109522115A (zh) * 2018-10-11 2019-03-26 平安科技(深圳)有限公司 资源配置方法、电子设备及存储介质
CN109525651B (zh) * 2018-10-29 2021-08-27 中译语通科技股份有限公司 应用程序数据节点动态增加方法及***
CN109525651A (zh) * 2018-10-29 2019-03-26 中译语通科技股份有限公司 应用程序数据节点动态增加方法及***
CN111158895A (zh) * 2018-11-08 2020-05-15 中国电信股份有限公司 微服务资源调度方法和***
CN111381835A (zh) * 2018-12-28 2020-07-07 ***通信集团江西有限公司 技术服务组件的注册与发现的方法、装置、设备及介质
CN109618002A (zh) * 2019-01-11 2019-04-12 武汉斗鱼鱼乐网络科技有限公司 一种微服务网关优化方法、装置及存储介质
CN109618002B (zh) * 2019-01-11 2022-07-05 武汉斗鱼鱼乐网络科技有限公司 一种微服务网关优化方法、装置及存储介质
CN110086853B (zh) * 2019-03-28 2021-08-06 浙江明度智控科技有限公司 一种工业物联网信息可视化方法、服务器和存储介质
CN110086853A (zh) * 2019-03-28 2019-08-02 浙江明度智控科技有限公司 一种工业物联网信息可视化方法、服务器和存储介质
WO2020211222A1 (zh) * 2019-04-15 2020-10-22 厦门市美亚柏科信息股份有限公司 基于数据服务平台提供微服务的方法、装置、存储介质
CN110070422A (zh) * 2019-04-30 2019-07-30 德德市界(深圳)科技有限公司 基于扁平架构的数据处理***、方法及相关设备
CN110336753B (zh) * 2019-06-19 2021-10-22 腾讯科技(深圳)有限公司 一种跨网络区域的服务调用方法、装置、设备及存储介质
CN110336753A (zh) * 2019-06-19 2019-10-15 腾讯科技(深圳)有限公司 一种跨网络区域的服务调用方法、装置、设备及存储介质
CN110993090A (zh) * 2019-09-09 2020-04-10 上海联影智能医疗科技有限公司 用于增强与传感器相关的功能的方法和装置
CN110993090B (zh) * 2019-09-09 2023-06-27 上海联影智能医疗科技有限公司 用于增强与传感器相关的功能的方法和装置
CN110933097A (zh) * 2019-12-05 2020-03-27 美味不用等(上海)信息科技股份有限公司 面向多服务网关的限流与自动扩缩容方法
CN111124692A (zh) * 2020-01-02 2020-05-08 神州数码融信软件有限公司 一种业务请求处理***
CN111124692B (zh) * 2020-01-02 2023-05-12 神州数码融信软件有限公司 一种业务请求处理***
CN112491581A (zh) * 2020-10-30 2021-03-12 中国人寿保险股份有限公司 一种服务性能监控管理方法及装置
CN112346872B (zh) * 2020-11-24 2023-09-26 中国工商银行股份有限公司 基于服务调用链路的云计算扩容方法及装置
CN112346872A (zh) * 2020-11-24 2021-02-09 中国工商银行股份有限公司 基于服务调用链路的云计算扩容方法及装置
CN112650575A (zh) * 2021-01-15 2021-04-13 百度在线网络技术(北京)有限公司 资源调度方法、装置和云端服务***
CN112650575B (zh) * 2021-01-15 2023-08-18 百度在线网络技术(北京)有限公司 资源调度方法、装置和云端服务***
CN112905349A (zh) * 2021-03-18 2021-06-04 上海能链众合科技有限公司 一种面向指令集的高可用计算控制方法
CN112905349B (zh) * 2021-03-18 2023-04-07 上海零数众合信息科技有限公司 一种面向指令集的高可用计算控制方法
CN113065785B (zh) * 2021-04-13 2024-02-20 国网江苏省电力有限公司信息通信分公司 一种电力物联管理平台动态资源扩展方法
CN113065785A (zh) * 2021-04-13 2021-07-02 国网江苏省电力有限公司信息通信分公司 一种电力物联管理平台动态资源扩展方法
CN115474165A (zh) * 2021-05-24 2022-12-13 中移动金融科技有限公司 短信服务自监控动态调整方法和***
CN115474165B (zh) * 2021-05-24 2024-05-07 中移动金融科技有限公司 短信服务自监控动态调整方法和***
CN113949638A (zh) * 2021-08-26 2022-01-18 中铁第四勘察设计院集团有限公司 一种基于云平台的铁路通信***扩缩容方法和***
CN114125035A (zh) * 2021-09-27 2022-03-01 烽火通信科技股份有限公司 一种大规模扩容场景下服务注册方法与装置
CN114125035B (zh) * 2021-09-27 2023-08-08 烽火通信科技股份有限公司 一种大规模扩容场景下服务注册方法与装置
CN114138473A (zh) * 2021-11-23 2022-03-04 西安电子科技大学 一种基于混合模式的弹性调度装置及方法
CN114895879A (zh) * 2022-07-14 2022-08-12 四川航天信息有限公司 管理***设计方案确定方法、装置、设备及存储介质
CN116132289A (zh) * 2022-09-27 2023-05-16 马上消费金融股份有限公司 信息配置方法、装置、设备和介质
CN116126521A (zh) * 2022-12-20 2023-05-16 北京海致星图科技有限公司 服务内存信息的负载均衡方法、装置、存储介质和设备
CN116126521B (zh) * 2022-12-20 2023-10-31 北京海致星图科技有限公司 服务内存信息的负载均衡方法、装置、存储介质和设备
CN117896313A (zh) * 2023-12-15 2024-04-16 天翼云科技有限公司 一种面向突发流量场景的微服务随动扩容方法

Also Published As

Publication number Publication date
CN106227605B (zh) 2019-10-18

Similar Documents

Publication Publication Date Title
CN106227605B (zh) 一种多语言云编译的动态微服务扩容方法及装置
CN106250199B (zh) 一种多语言云编译的动态微服务调用方法及装置
CN106227611A (zh) 一种多语言云编译的动态微服务调用方法及装置
CN106293704A (zh) 多语言云编译的动态微服务编辑方法、装置和服务器
ES2830438T3 (es) Despliegue de microservicios en contenedores basado en aplicaciones heredadas monolíticas
CN112534398B (zh) 用于连接器开发和集成通道部署的***和方法
US7926051B2 (en) Automatic parallel non-dependent component deployment
KR100959173B1 (ko) 컴포넌트 아키텍처
US20180024814A1 (en) Automated enterprise software development
CN106250178A (zh) 通过多语言云编译实现***动态功能在线拦截扩展的方法
CN102736919B (zh) 描述及开发动态行为应用***的方法与***
Fouquet et al. An eclipse modelling framework alternative to meet the models@ runtime requirements
CN106293808A (zh) 多语言云编译实现***功能动态拦截扩展的方法及***
US9075596B2 (en) Deployment
CN106293863A (zh) 多语言云编译实现***功能动态扩展替换的方法及***
US20090100405A1 (en) Synchronizing an abstract model and source code
CN105354037A (zh) 模块化的软件开发方法及软件开发装置
CN101996132A (zh) 公用对象请求代理程序体系结构接口自动测试方法和装置
CN107885658B (zh) 测试前置实现方法、装置、终端设备及存储介质
CN106250179A (zh) 通过多语言云编译实现***动态功能拦截扩展的方法
CN104142825A (zh) 一种产品的模块化开发方法及***
CN108563432A (zh) 一种通过路由配置的Android应用程序组件化快速开发方法
CN110347445A (zh) Sdk调用方法、装置、服务器及存储介质
CN110858356A (zh) 基于微服务架构的制造执行***
CN101980546A (zh) 智能网平台、业务执行方法和分析业务异常的方法

Legal Events

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