CN116457759A - 基于分布式容器组的系统内的服务编排 - Google Patents
基于分布式容器组的系统内的服务编排 Download PDFInfo
- Publication number
- CN116457759A CN116457759A CN202180075633.7A CN202180075633A CN116457759A CN 116457759 A CN116457759 A CN 116457759A CN 202180075633 A CN202180075633 A CN 202180075633A CN 116457759 A CN116457759 A CN 116457759A
- Authority
- CN
- China
- Prior art keywords
- service
- sub
- image
- kernel
- type
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 112
- 230000004044 response Effects 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 71
- 230000036541 health Effects 0.000 claims description 26
- 238000010801 machine learning Methods 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 13
- 238000003339 best practice Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 230000000977 initiatory effect Effects 0.000 claims description 9
- 238000003326 Quality management system Methods 0.000 description 25
- 238000012545 processing Methods 0.000 description 20
- 239000003795 chemical substances by application Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000002955 isolation Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 238000007405 data analysis Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000013468 resource allocation Methods 0.000 description 6
- 238000013475 authorization Methods 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 238000005728 strengthening Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000037406 food intake Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000010923 batch production Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及用于基于分布式容器组的系统内的服务编排的技术。特别地,各方面涉及在驻留在分布式计算环境上的内核处接收发起用于在所述分布式计算环境上的子服务或服务的部署的请求。所述子服务或服务具有类型,并且为了将所述子服务或服务部署在所述分布式计算环境上,所述子服务或服务的所述类型必须是所述分布式计算环境被配置为支持的类型。响应于接收到所述请求和所述子服务或服务的所述类型是所述分布式计算环境被配置为支持的类型,供应指定资源,并且使用包含所述供应的指定资源的容器组的副本和用于所述子服务或服务的所述类型的经修改的图像来部署所述子服务或服务。
Description
相关申请的交叉引用
本申请要求于2020年11月10日提交的美国临时专利申请号63/111,996的权益和优先权,所述美国临时专利申请出于所有目的通过引用以其全文并入本文。
技术领域
本公开涉及数字化和个性化的医疗保健,并且具体地涉及用于基于分布式容器组的系统内的服务编排的技术。
背景技术
集群管理器(也称为用于分布式计算系统的内核)提供多个不同框架(例如,流处理、批处理、数据集成、存储框架等)之间的资源共享。在一些示例中,集群管理器包括:(i)用于执行来自框架的任务以及通知可用资源的代理,(ii)用于提供服务或解决特定用例的框架,以及(iii)在代理与框架之间调解的主设备。框架包括决定是接受还是拒绝资源的调度器以及将接受的资源分配给任务并且控制任务的执行的执行器。由集群管理器提供的资源共享通常包括资源分配和资源隔离。资源分配涉及代理报告可用资源,主设备决定每个框架提供多少资源,以及框架决定接受哪些资源以及在资源上运行哪些计算。资源隔离涉及代理、主设备和框架确保针对任何任务分配的资源将不会被另一个任务消耗。
在医疗保健方面,正在开发数据驱动技术解决方案,以进一步实现个性化的医疗保健,同时降低成本。随着医疗保健领域转向个性化的医疗服务和解决方案的按需部署系统,医疗保健提供商正在寻求开发者的帮助,通过自动化和简化软件部署和服务管理过程来更快地创新解决方案。为了支持医疗保健提供商和服务,开发者已将分布式计算环境(例如云计算)视为医疗保健信息技术基础设施标准,这是开发支持服务模型内的软件部署和服务管理过程所需的复杂基础设施的低成本方式(例如,分析即服务(AaaS))。虽然分布式计算环境诸如云计算为医疗保健提供商提供了许多好处,但它们的功能与传统存储或信息共享解决方案不同,并且因此产生了它们自己独特的隐私性和安全性挑战。例如,因为用户通过互联网连接访问数据,政府法规(例如,健康保险携带和责任法案(HIPAA)、“良好实践”质量指南和法规(GxP)以及通用数据保护法规(GDPR)合规性成为寻求云解决方案以支持软件部署和服务管理过程的医疗保健提供商所面临的独特挑战。因此,需要改进兼容的软件部署平台,其被构建以确保受保护的医疗保健信息的机密性、可用性和完整性。
发明内容
在各种实施例中,提供了一种计算机实现的方法,其包括:在驻留在第一分布式计算环境上的第一内核处接收发起用于在该第一分布式计算环境上的第一子服务或服务的部署过程的第一请求,其中该第一子服务或服务具有类型,并且为了将该第一子服务或服务部署在该第一分布式计算环境上,该第一子服务或服务的该类型必须是该第一分布式计算环境被配置为支持的类型;响应于接收到该请求和该第一子服务或服务的该类型是该第一分布式计算环境被配置为支持的类型,通过该第一内核在该第一分布式计算环境的布置环内供应指定资源,其中该供应包括:基于该第一子服务或服务的该类型来获得图像,其中该图像是软件包的模板,该模板包括用于执行该软件包的资源规范,并且该模板被定制用于基于该第一子服务或服务的该类型来使用该指定资源;在该布置环内定位该指定资源;使用该图像构建封装该指定资源的一个或多个容器,其中该一个或多个容器被包裹在第一容器组中,用于执行一个或多个程序以提供该第一子服务或服务;以及使用可写层修改该图像以包括用于执行该一个或多个程序所需要的源代码;以及使用该第一容器组的一个或多个副本和经修改的图像通过该第一内核来部署该第一子服务或服务。
在一些实施例中,定位该资源包括:解析该图像以识别该指定资源;从该布置环请求可用资源;解析来自该布置环的该可用资源;基于对该可用资源的解析,确定来自该图像的该指定资源中的全部在该布置环内是否可用;以及响应于来自该图像的该指定资源中的全部在该布置环内不可用,基于该图像来自动缩放该可用资源以向该布置环提供附加资源以满足从该图像识别到的该指定资源。
在一些实施例中,获得该图像进一步包括基于该第一子服务或服务的该类型从多个图像识别该图像;该图像被配置为与安全最佳惯例一致以减少该图像的漏洞;并且该安全最佳惯例是基于该第一子服务或服务的该类型来选择的。
在一些实施例中,该图像被进一步配置为与图像规范一致以优化部署工作流程和性能;并且该图像规范是基于该第一子服务或服务的该类型来选择的。
在一些实施例中,该第一子服务或服务的该类型是机器学习模型软件、作为医疗设备的软件、结合物理医疗设备进行操作的软件或者数据摄取和处理软件。
在一些实施例中,该方法进一步包括通过该内核执行该第一子服务或服务,其中该执行包括:通过该内核的主设备基于该第一子服务或服务的该类型来确定用于执行该第一子服务或服务的框架;通过该内核的该主设备向该框架提供在该布置环内的可用资源,用于执行该一个或多个程序以提供该第一子服务或服务;响应于该提供,通过内核的该主设备接收关于由该一个或多个程序限定的任务的信息;以及通过该内核的该主设备向该内核的代理发送该任务,该代理将该指定资源分配到该框架的执行器以用于执行该任务。
在一些实施例中,该方法进一步包括通过该内核公布该第一子服务或服务;以及通过该内核发起该第一子服务或服务的安全性。
在一些实施例中,该方法进一步包括:通过该内核执行健康检查以评估该第一子服务或服务的功能性以及确定该第一子服务或服务是否按预期运行;当该第一子服务或服务未通过该健康检查时,通知持续集成持续部署(CICD)系统关于该第一子服务或服务未能按预期运行,其中从该CICD系统接收该第一请求;以及当该第一子服务或服务按预期运行时,(i)通过该内核公布该第一子服务或服务,(ii)通过该内核发起该第一子服务或服务的该安全性,以及(iii)通知该CICD系统关于该第一子服务或服务成功按预期运行。
在一些实施例中,该方法进一步包括:在驻留在第二分布式计算环境上的第二内核处接收发起用于在该第二分布式计算环境上的服务的第二子服务的部署过程的第二请求,其中该第二子服务或服务具有类型,并且为了将该第二子服务或服务部署在该第二分布式计算环境上,该第二子服务或服务的该类型必须是该第二分布式计算环境被配置为支持的类型;响应于接收到该请求,通过该第二内核在该第二分布式计算环境的布置环内供应指定资源,其中该供应包括:基于该第二子服务或服务的该类型来获得图像,其中该图像是软件包的模板,该模板包括用于执行该软件包的资源规范,并且该模板被定制用于基于该第二子服务或服务的该类型来使用该指定资源;在该布置环内定位该指定资源;使用该图像构建封装该指定资源的一个或多个容器,其中该一个或多个容器被包裹在第二容器组中,用于执行一个或多个程序以提供该第二子服务或服务;以及使用可写层修改该图像以包括用于执行该一个或多个程序所需要的源代码;以及使用该第二容器组的一个或多个副本和经修改的图像通过该第二内核来部署该第二子服务或服务。
本公开的一些实施例包括一种系统,其包括一个或多个数据处理器。在一些实施例中,该系统包括包含指令的非暂时性计算机可读存储介质,所述指令在所述一个或多个数据处理器上被执行时使所述一个或多个数据处理器执行本文公开的一种或多种方法的部分或全部和/或本文公开的一种或多种过程的部分或全部。本公开的一些实施例包括一种有形地体现在非暂时性机器可读存储介质中的计算机程序产品,其包括指令,该指令被配置为使一个或多个数据处理器执行本文公开的一种或多种方法的部分或全部和/或本文公开的一种或多种过程的部分或全部。
已采用的术语和表达被用作描述性而非限制性的术语,并且在使用这些术语和表达时,无意排除所示出和描述的特征或其部分的任何等同物,但是应当认识到,在所要求保护的本发明的范围内,各种修改是可能的。因此,应当理解,尽管已通过实施例和任选特征具体地公开了所要求保护的本发明,但是本领域技术人员可以采用本文所公开的概念的修改和变化,并且认为这样的修改和变化在由所附权利要求限定的本发明范围内。
附图说明
结合附图描述本公开:
图1描绘了根据各种实施例的用于提供数据驱动技术解决方案的数字健康平台的图示;
图2描绘了根据各种实施例的内核的图示;
图3描绘了根据各种实施例的用于基于分布式容器组的系统内的服务编排的过程的框图;
图4描绘了示出根据各种实施例的用于使用内核以在数字健康平台中部署子服务或服务的过程的泳道图;并且
图5描绘了示出根据各种实施例的用于在软件平台上部署服务的一个或多个子服务的过程的流程图。
在附图中,相似的部件和/或特征可以具有相同的附图标记。此外,可通过在参考标号后面加上破折号和区分相似部位的第二标号来区分相同类型的各种部位。如果说明书中仅使用第一参考标号,则该描述适用于任何一个具有相同的第一参考标号的相似部位,而与第二参考标号无关。
具体实施方式
I.概述
本公开描述了用于基于分布式容器组的系统内的服务编排的技术。更具体地,本公开的实施例提供了用于通过集群管理器(下文称为内核)基于子服务或服务的类型在基于分布式容器组的系统内供应和部署服务的至少一部分(下文称为子服务)的技术。
内核提供跨分布式计算环境(例如,云计算)内的应用程序或框架的资源分配和隔离。云计算通常依赖于虚拟化,其包括用虚拟资源诸如虚拟机器供应基于云的应用程序和服务。这些资源的有效管理是一项挑战,因为其对分布式计算环境的可扩展性和操作成本两者具有直接影响。一种类型的虚拟化技术是容器,其提供资源的可移植性,并且与传统虚拟机器相比需要最小的开销。然而,传统资源管理策略是针对虚拟机器的分配和迁移而设计的,因此这些策略可如何被适配用于容器化分布式计算环境的管理就产生了挑战。除此之外,云计算解决方案诸如AaaS和软件即服务(SaaS)也不再限制于单个分布式计算环境。在一些情况下,服务是跨多个分布式计算环境(即,使用多个云提供商以及其提供的计算机硬件和物理网络基础设施以满足不同技术或业务要求的多云解决方案)提供和部署的,这使得组织能够构建DevOps驱动的可移植软件堆栈,不受供应商锁定,并且能够递送比可从单个分布式计算环境获得的能力更高级的一组能力。然而,传统资源管理策略是针对在单个分布式计算环境内的虚拟机器的分配和迁移而设计的,因此这些策略可如何被适配用于多个容器化分布式计算环境的管理就产生了附加挑战。
为了解决这些限制和问题,本公开中的用于基于分布式容器组的系统内的服务编排的技术利用定制的方法来进行资源分配和隔离。该技术旨在为待部署在分布式计算环境中的子服务或服务供应资源。待部署的子服务或服务具有类型,并且待部署在给定的分布式计算环境中,该子服务或服务的类型必须是分布式计算环境被配置为支持的类型。子服务或服务的类型可以是模型软件,诸如机器学习模型、回归模型或任何其他种类的监督或非监督模型、机器学习模型软件、作为医疗设备的软件(SAMD)、结合物理医疗设备进行操作的软件或者数据摄取和处理软件。此外,使用包裹在容器组中的一个或多个容器来部署子服务或服务。一个或多个容器使用基于待部署在该一个或多个容器内的该子服务或服务的类型获得的图像来配置。每个图像都是二进制的,其包括用于运行单个容器的要求中的所有要求,以及描述容器需求和能力的元数据。
本公开的一个说明性实施例涉及一种方法,该方法包括在驻留在第一分布式计算环境上的第一内核处接收发起用于在该第一分布式计算环境上的第一子服务或服务的部署过程的第一请求。该第一子服务或服务具有类型,并且为了将该第一子服务或服务部署在该第一分布式计算环境上,该第一子服务或服务的该类型必须是该第一分布式计算环境被配置为支持的类型。该方法进一步包括响应于接收到该请求和该第一子服务或服务的该类型是该第一分布式计算环境被配置为支持的类型,通过该第一内核在该第一分布式计算环境的布置环内供应指定资源。该供应包括:基于该第一子服务或服务的该类型来获得图像,其中该图像是软件包的模板,该模板包括用于执行该软件包的资源规范,并且该模板被定制用于基于该第一子服务或服务的该类型来使用该指定资源;在该布置环内定位该指定资源;使用该图像构建封装该指定资源的一个或多个容器,其中该一个或多个容器被包裹在第一容器组中,用于执行一个或多个程序以提供该第一子服务或服务;以及使用可写层修改该图像以包括用于执行该一个或多个程序所需要的源代码。该方法进一步包括使用该第一容器组的一个或多个副本和经修改的图像通过该第一内核来部署该第一子服务或服务。
在一些情况下,该方法进一步包括在驻留在第二分布式计算环境上的第二内核处接收发起用于在该第二分布式计算环境上的服务的第二子服务的部署过程的第二请求。该第二子服务或服务具有类型,并且为了将该第二子服务或服务部署在该第二分布式计算环境上,该第二子服务或服务的该类型必须是该第二分布式计算环境被配置为支持的类型。该方法进一步包括响应于接收到该请求和该第二子服务或服务的该类型是该第二分布式计算环境被配置为支持的类型,通过该第二内核在该第二分布式计算环境的布置环内供应指定资源。该供应包括:基于该第二子服务或服务的该类型来获得图像,其中该图像是软件包的模板,该模板包括用于执行该软件包的资源规范,并且该模板被定制用于基于该第二子服务或服务的该类型来使用该指定资源;在该布置环内定位该指定资源;使用该图像构建封装该指定资源的一个或多个容器,其中该一个或多个容器被包裹在第二容器组中,用于执行一个或多个程序以提供该第二子服务或服务;以及使用可写层修改该图像以包括用于执行该一个或多个程序所需要的源代码。该方法进一步包括使用该第二容器组的一个或多个副本和经修改的图像通过该第二内核来部署该第二子服务或服务。
II.数字健康平台
图1描绘了根据各种实施例的用于提供数据驱动技术解决方案的数字健康平台100的简化图示。在说明性实施例中,数字健康平台100包括经由包括网络网关120和网络网格125的网络115耦合到基于云的基础设施110的客户端计算设备105。基础设施110适配于使用通过云服务提供商140(例如,分布式计算环境)使用各种硬件和云基础设施(例如,私有云或本地云基础设施和公共云基础设施)在布置环135内供应的资源来执行服务容器组130内的服务或软件应用程序。这些服务或软件应用程序可被提供作为基于网络的服务或云服务提供,诸如在AaaS或SaaS模型下提供给客户端计算设备105的用户。若干提供商提供云服务,诸如Amazon、Google和Oracle。术语云服务通常被用于指代这样的服务,其由服务提供商的系统(例如,基础设施110)诸如政府监管实体经由通信网络诸如因特网按需提供给用户。因此,消费者自己可利用由服务提供商提供的云服务,而不必购买单独的许可、支持或支持服务的硬件和软件资源。例如,云服务提供商的系统可托管一个或多个程序,并且用户可经由互联网按需使用一个或多个程序,而用户不必须购买用于执行一个或多个程序的基础设施资源。云服务被设计为提供对应用程序、资源和服务的简单、可扩展的访问。
在一些情况下,操作客户端计算设备105的用户(例如,软件或服务消费者)利用一个或多个客户端应用程序来消费由基础设施110的各种部件145提供的软件产品、服务或系统。在其他情况下,操作客户端计算设备105的用户(例如,开发者)利用一个或多个客户端应用程序来上传用于由基础设施110的各种部件145提供的软件产品、服务或系统的源代码。部件145包括可通过一个或多个处理器、硬件部件或其组合执行的软件部件。应当理解,各种不同的系统配置是可能的,其可不同于针对数字健康平台100所示的那些系统配置。因此,图1所示的实施例是用于实现数字健康平台的分布式计算环境的一个示例并且不旨在限制。
客户端计算设备105包括各种类型的计算系统,诸如便携式手持设备、通用计算机(诸如个人计算机和膝上型计算机)、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息发送设备、传感器或其他感测设备等。这些计算设备可运行各种类型和版本的软件应用程序和操作系统(例如,MicrosoftApple/> 或类似UNIX的操作系统、Linux或类似Linux的操作系统,诸如Google ChromeTM OS),包括各种移动操作系统(例如,Microsoft Windows/>Windows/>AndroidTM、 )。便携式手持设备可包括蜂窝电话、智能手机(例如,)、平板电脑(例如,/>)、个人数字助理(PDA)等。可穿戴设备可包括FitbitVersaTM智能手表、虚拟现实(VR)或增强现实(AR)系统,诸如magic/>HTV Vive和以及其他设备。游戏系统可包括各种手持游戏设备、支持互联网的游戏设备(例如,具有或不具有/>手势输入设备的/>游戏机、Sony系统、由/>提供的各种游戏系统等)等。客户端设备105可能够执行各种不同的应用程序,诸如各种因特网相关的应用程序、通信应用程序(例如,电子邮件应用程序、短消息服务(SMS)应用程序)并且可使用各种通信协议。
网络115是本领域技术人员熟悉的任何类型的网络,其可使用各种可用协议中的任一种支持数据通信,包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络架构)、IPX(互联网分组交换)、等。举例而言,网络115可以是局域网(LAN)、基于以太网的网络、令牌环、广域网(WAN)、互联网、虚拟网络、虚拟专用网络(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外线网络、无线网络(例如,在电气与电子协会(IEEE)1002.11协议组下运行的网络、/>和/或任何其他无线协议)和/或这些和/或其他网络的任何组合。
网络网关120是在以相同或不同协议操作的网络115中的两个或更多个之间形成安全通道的网络节点。网络网关120可使用以下技术中的一种或多种技术来提供网络安全:用于监测传入和传出网络流量的防火墙、提供专用安全通信信道的虚拟专用网络、用于识别网络内的安全缺陷的安全扫描、用于认证和授权服务的访问管理器等。网络网关120使用选路器和管理对各种软件产品、服务或系统的访问的服务连接器(例如,使用服务订阅商业模型)来路由网络流量。网络网格125是一种本地网络拓扑结构,其中基础设施110(例如,网桥、交换机和其他基础设施设备)直接、动态和非分层地连接到尽可能多的其他节点,并且相互合作以在设备与节点之间有效地路由数据。网络网格125使用以下技术中的一种或多种技术来管理连接:负载平衡、产品、服务或系统发现、网络访问、路由和对等、流量镜像等。网络115、网络网关120和网络网格125组合工作以管理从基础设施110流入或流出的所有数据。
部件145包括一个或多个通用计算机、专用服务器计算机(举例而言,包括PC(个人计算机)服务器、专用服务器、中程服务器、大型计算机、机架式服务器等)、服务器场、服务器集群或任何其他适当的布置和/或组合计算机或系统,它们单独或组合地工作以通过网络115向客户端计算设备105提供资源、数据、服务或程序。部件145还可包括运行虚拟操作系统的一个或多个虚拟机器,或者涉及虚拟化的其他计算架构,诸如可被虚拟化以维护虚拟存储设备的逻辑存储设备的一个或多个灵活池。在各种实施例中,部件145适配于运行提供本公开中所述的功能性的一个或多个服务或软件应用程序。
部件145还包括一个或多个数据储存库。在各种实施例中,这些数据储存库可用于存储数据和其他信息。例如,数据存储库中的一个或多个数据存储库可用于存储用于提供数据驱动技术解决方案的信息,诸如SAMD,以及存储用于验证和部署源代码以实现数据驱动技术解决方案的信息。数据存储库可驻留在各种位置。例如,由部件使用的数据储存库可以是部件本地的或者可距该部件远程并且经由基于网络的或专用连接与部件通信。数据存储库可以是不同类型的。在某些实施例中,由部件使用的数据存储库可以是数据库,例如集中式数据库、分布式数据库、NoSQL数据库、关系数据库等。这些数据库中的一个或多个数据库可适配于响应于SQL格式的命令实现对去往和来自数据库的数据的存储、更新和检索。在某些实施例中,数据储存库中的一个或多个数据储存库也可由应用程序使用以存储应用程序数据。由应用程序使用的数据存储库可以是不同类型的,诸如键值存储存储库、对象存储存储库或由文件系统支持的通用存储存储库。
部件145还包括适配于运行提供本公开中所述的功能性的一个或多个程序诸如服务或软件应用程序(例如,作为基于网络的服务或云服务提供的服务或软件应用程序或用于实现持续集成持续部署(CI/CD)系统的应用程序)的计算节点。每个节点都是在节点的集群内任选地实现的单个机器的表示。单个机器可以是物理机器(例如,数据中心中的服务器)或托管在云提供商诸如Amazon网络服务TM(AWS)上的具有一组可利用的CPU和RAM资源的虚拟机器。在集群中,节点将它们的资源汇集在一起以形成更强大的机器。当一个或多个程序被部署到集群上时,该集群智能地处理将工作分配给各个节点。如果添加或移除任何节点,集群可根据需要转移工作。对于一个或多个程序或基础设施110,哪些单独的机器实际运行代码并不重要。
部署到一个或多个集群上的一个或多个程序被打包为容器。容器是被广泛接受的标准,并且可限定各种图像以用于在基础设施110上部署一个或多个程序。容器化允许基础设施110创建自含式执行环境。任何程序及其所有依赖项都可捆绑到单个文件中,然后在基础设施110上共享。创建容器可编程地完成,允许强大的全自动CI/CD管线用于验证代码以及在基础设施110上部署代码。这些容器被包裹在称为容器组130的更高级别的结构中。相同容器组130中的容器可共享相同的资源和本地网络。在一些情况下,容器可与相同容器组130中的其他容器通信,就好像它们在相同机器上一样,同时与其他容器保持一定程度的隔离。容器组130被用作基础设施110中的复制单元。如果程序或资源因处理而变得不堪重负并且单个容器组130实例无法承载负载,则基础设施110可被配置为在必要时将容器组130的新副本部署到集群。即使当负载不重时,在生产系统中随时运行容器组130的多个副本以允许负载平衡和故障抵抗也可能是有益的。在由一个或多个云服务提供商140提供的云基础设施系统上供应容器组130的一个或多个实例。
由一个或多个云服务提供商140提供的云基础设施系统包括被利用以促进供应以下的基础设施资源:支持由基础设施110提供的各种云服务的容器组130的一个或多个实例。为了促进这些资源的有效利用以供应容器组130的一个或多个实例,资源可被捆绑到资源或资源模块(也被称为“布置环135”)的组中。每个资源模块或布置环135可包括一种或多种类型的资源的预先集成和优化的组合。在某些示例中,可为不同类型的云服务预先供应不同的布置环135。例如,可为SAMD服务供应第一组布置环135,可为数据分析服务供应第二组布置环135,其可包括与第一组布置环135中的布置环135不同的资源组合等。对于一些云服务,分配用于供应服务的资源可在服务之间共享。
数字健康平台100进一步包括一个或多个内核150。内核150适配于在由一个或多个云服务提供商140提供的每个云基础设施系统(例如,分布式计算环境)上运行。内核150是集群管理器,其提供跨遍及整个数字健康平台100的分布式应用程序或框架的资源分配和隔离。内核150向一个或多个程序提供应用程序编程接口(API),用于编排服务和软件,包括资源管理和调度。内核150的架构包括用于运行任务的代理节点、用于向代理节点发送任务的主节点、用于选举和查找主节点的地址的zookeeper以及与主节点协调以将任务调度到代理节点上的框架。
数字健康平台100进一步包括CI/CD系统155。CI/CD系统155在云基础设施系统内实现,并且允许数字健康平台100频繁更新、测试和交付用于软件产品、服务或系统的源代码内的变化。如本文详细讨论的,在医疗保健中,存在有关软件必须遵守的数据安全性(例如,数据完整性和数据隐私性)的政府法规。在CI/CD系统155中,这些政策法规可包括在代码中,允许自动跟踪、验证和重新配置合规性。在SAMD的示例中,数据存储位置、服务器访问控制和活动日志可包括在源代码中,使得用户数据可在软件的整个使用过程中得到保护和管理。在持续集成期间,还可附加地包括加密和密码保护操作。在持续交付期间,安全和监测工具可用于跟踪用户活动并检测可导致安全威胁的错误。
CI/CD系统155也可用于供应机器学习模型。机器-学习模型最初是使用数据集训练的,但是随着时间的推移,该模型可能漂移或者数据可能改变,导致需要更新的机器学习模型。如果机器学习模型在软件应用程序内运行,则与软件应用程序相关联的代码可包括用于何时应当重新训练机器学习模型的触发器。例如,代码可包括用于在预定义的时间间隔、当新训练数据可用时或者当机器学习模型的性能被确定为降低到低于阈值时重新训练机器学习模型的指令。另外,软件开发者可基于监测生产环境中机器学习模型的性能或基于模型优化的估计改进,在测试环境中探索模型架构和超参数的变化。当机器学习模型被确定为满足性能要求时,CI/CD系统155允许对生产环境的轻松构建、测试和部署。
III.内核
图2描绘了根据各种实施例的用于跨分布式应用程序或框架的资源分配和隔离的内核200(例如,关于图1描述的内核150)的简化图示。在说明性实施例中,内核200包括主设备205、备份主设备210、zookeeper215、代理220(a-n)以及包括调度器225和执行器230的框架的软件逻辑。基于待部署在分布式计算环境中的子服务或服务的类型,内核200将资源235分组在一起并提供在基于容器的环境中。具体地,子服务或服务的类型必须是分布式计算环境被配置为支持的类型。子服务或服务的类型可以是模型软件,诸如机器学习模型、回归模型或任何其他种类的监督或非监督模型、机器学习模型软件、SAMD、结合物理医疗设备进行操作的软件或者数据摄取和处理软件。这种类型的限制有助于资源235的有效和高效管理,并且对分布式计算环境的可扩展性和操作成本产生积极的直接影响。使用基本的脚本或复杂的“编排器”,开发者可快速恢复崩溃的子服务或服务部件,添加新实例以满足增加的需求或者执行滚动升级以更新子服务或服务而无需任何停机。此外,基于容器的环境可显著降低基础设施成本,因为它们比虚拟机器更轻巧并且可共享单个操作系统。
内核200将位于集群或布置环中的机器/节点的资源235一起分组到被包裹在单个容器组实例245(a-n)中的一个或多个容器240(a-n)中,并且可利用资源235从单个容器组实例245(a-n)执行用于一个或多个程序的各种任务250,以便提供子服务或服务。一个或多个容器240(a-n)使用基于待部署在一个或多个容器内的子服务或服务的类型获得的图像来配置。每个图像都是二进制的,其包括用于运行单个容器的要求中的所有要求,以及描述容器需求和能力的元数据。容器允许开发者创建一致并且可重新创建的环境,该环境彼此隔离并且可包括依赖项。尽管隔离并不完全(例如,授权服务可通过API调用相互通信),但是容器确实隔离了关键资源,诸如容器对每个容器之间的底层CPU、存储器、存储装置和网络资源的访问。这减少单个容器消耗过多资源的机会,并且也防止潜在的安全问题。
zookeeper215是集中式配置管理器,其由内核200使用以协调跨集群或布置环的活动。zookeeper215能够选择主导主设备205,通过选择备份主设备210来替换故障主导主设备205以及选择代理220以加入集群或布置环来提供容错。主设备205管理在每个集群节点上运行的代理220和在代理220上运行任务的框架。主设备205实现集群或布置环内特定资源的供应以及使用资源提供的跨框架的细粒度共享。每个资源提供是多个代理220可用的可用资源235的列表。主设备205决定根据组织策略(诸如公平共享或优先级)向每个框架提供多少资源235。为了支持不同的一组框架间分配策略,内核200适配于允许用户经由可插入分配模块限定他们自己的策略。
在内核200上运行的每个框架都由两个部件组成:向主设备205注册要提供的资源235的调度器225,以及在代理220上启动以运行框架的任务250的执行器230。在主设备205确定向每个框架提供多少资源235时,框架的调度器225选择使用提供的资源235中的哪一个。当框架接受提供的资源235时,框架向主设备205传递由框架想要在代理220上执行的一个或多个程序限定的任务250的描述。例如,框架可调度以运行一个或多个任务,如下所示。最初,代理220向主设备报告其具有资源235,例如6个CPU和9GB的空闲存储器。主设备205然后调用分配模块,其告诉主设备205应该向框架提供所有可用资源。此后,主设备205向框架发送描述所有可用资源235的资源提供。框架的调度器225用关于由一个或多个程序限定的任务250(例如,在代理上运行的两个任务)的信息来答复主设备205,使用3个CPU;1GB RAM用于第一任务,以及2个CPU;6GB RAM用于第二任务。最后,主设备205将任务250发送给代理220,其分配适当的资源235给框架的执行器230启动这两个任务。因为1个CPU和2GB RAM仍然空闲,分配模块现在可将它们提供给另一个框架。另外,当任务完成并且新资源可用时,该资源提供过程将重复进行。IV.用于数字健康平台上的服务的部署的技术
图3至图5示出了用于基于分布式容器组的系统内的服务编排的过程和操作。各个实施例可以被描述为过程,该过程被描绘为流程图、流程简图、数据流程图、结构图或框图。尽管流程图可将操作描述为顺序过程,但许多操作也可以并行或同时执行。另外,操作的顺序可以重新布置。流程在其操作完成时终止,但可能具有图中未包括的附加步骤。一个过程可对应于一种方法、一个函数、一个程序、一个子例程、一个子程序等等。当一个过程对应一个函数时,其终止可以对应于该函数返回到调用函数或主函数。
图3至图5中描绘的过程和/或操作可在由一个或多个处理单元(例如,处理器核)、硬件或它们的组合执行的软件(例如,代码、指令、程序)中来实现。该软件可以存储在存储器中(例如,在存储装置上、在非暂时性计算机可读存储介质上)。图3至图5中特定系列的处理步骤不旨在受到限制。根据替代性实施例,也可执行其他顺序的步骤。例如,在替代性实施例中,上文概述的步骤可以不同顺序来执行。此外,图3至图5中所示的各个步骤可包括多个子步骤,该多个子步骤可以适合于各个步骤的各种顺序执行。此外,可以取决于特定应用来添加或移除额外的步骤。本领域普通技术人员将认识到许多变化、修改和替代。
图3是根据本公开的各个方面的用于基于分布式容器组的系统内的服务编排的过程300的高级框图。图示300中描绘的过程是由图1和图2中描绘的架构、系统和技术来实现的。
在框305处,图像模板被配置用于各种类型的待部署的子服务或服务。使用限定如何构建特定图像模板的指令脚本来配置图像模板。指令脚本可由用户诸如软件部署服务的管理员或旨在部署给定类型的子服务或服务的软件开发者基于服务硬件要求来编写。子服务或服务的类型包括但不限于模型软件,诸如机器学习模型、回归模型或任何其他类型的监督或非监督模型、SAMD、结合物理医疗设备进行操作的软件以及数据摄取和处理软件(例如,流处理、批处理、长期运行服务、数据分析和处理、数据存储等)。此外,这些类别并不相互排斥,例如SAMD应用程序可包括机器学习模型或数据摄取和处理的各个方面。每个图像模板都是二进制的,其包括用于运行针对子服务或服务的类型的单个容器的要求中的所有要求,以及描述容器需求和能力的元数据。模板图像被用于构建用于运行一个或多个程序以提供子服务或服务的类型的容器。因此,每个容器本质上是针对一个或多个程序的运行图像。然而,在其上构建容器的图像模板单独存在并且不能被改变。用图像模板构建容器时,在容器之内创建用于运行容器的要求的读写副本(例如,针对子服务或服务的指定资源)。容器一经构建,容器就在不可变模板图像的顶部上添加可写层,这意味着现在可修改模板图像以包括用于运行一个或多个程序以提供子服务或服务所需的源代码、库、依赖项、工具和其他文件。可从单个图像模板创建用于运行一个或多个程序的无限数量的图像。
在框310处,基于图像模板被配置用于部署的子服务或服务的类型来强化图像模板。强化是配置与安全最佳惯例一致的图像以减少图像的漏洞的过程(例如,加强软件包以使用不同的工具和配置减少暴露表面和攻击向量)。安全最佳惯例是云服务提供商不可知的,并且对于图像模板被配置用于部署的子服务或服务的类型是可独立配置的。例如,可限定第一组安全最佳惯例用于强化被配置用于数据分析和处理的图像模板。第一组安全最佳惯例考虑了在数据分析和处理方面常见的弱点。另外,可限定第二组安全最佳惯例用于强化被配置用于SAMD的图像模板。第二组安全最佳惯例考虑了在SAMD方面常见的弱点。另外,可限定第三组安全最佳惯例用于强化被配置用于人工智能或机器学习处理的图像模板。第三组安全最佳惯例考虑了在人工智能或机器学习处理方面常见的弱点。尽管图3中仅示出了三种类型的强化过程,但是应该理解,多个附加或另选的强化过程可用于强化图像模板,包括流过程强化和批过程强化。
在框315处,基于图像模板被配置用于部署的子服务或服务的类型来调谐强化的图像模板。调谐是配置与图像规范一致的图像以优化部署工作流程和性能(例如,改进资源的使用,诸如执行时间、存储器使用、磁盘空间使用、网络使用……)的过程。图像规范是云服务提供商不可知的,并且对于图像模板被配置用于部署的子服务或服务的类型是可独立配置的。例如,可限定第一组图像规范用于调谐被配置用于流处理的图像模板。第一组图像规范考虑了在流处理方面常见的操作和问题。另外,可限定第二组图像规范用于调谐被配置用于输入/输出处理的图像模板。第二组图像规范考虑了在输入/输出处理方面常见的操作和问题。另外,可限定第三组图像规范用于调谐被配置用于网络处理的图像模板。第三组图像规范考虑了在网络处理方面常见的操作和问题。尽管图3中仅示出了三种类型的调谐过程,但是应该理解,多个附加或另选的调谐过程可用于调谐图像模板,包括批过程调谐和长期运行服务调谐。
在框320处,图像模板(强化的和/或调谐的)与注册表进行注册。注册表提供用于在一个或多个存储库(即图像工件仓库)中存储和检索图像的服务。每个存储库包含一个或多个图像模板(强化的和/或调谐的)。
在框325处,行动者将用于核实、验证和部署的源代码发布到软件平台(例如,如关于图1描述的政府监管实体的数字健康平台100)的CI/CD系统。在各种情况下(例如,当行动者是第三方开发者或合作伙伴时),源代码已经根据与每个行动者相关联的质量管理体系(QMS)进行了验证。例如,每个行动者可建立用于验证它们的软件的软件生命周期模型,该软件已经在适合于它们的产品和组织的QMS的框架内开发。QMS是一组相互关联或相互作用的元素,诸如政策、目标、程序、过程和资源,它们单独或共同建立以指导组织。对于软件生命周期活动中的每个软件生命周期活动,存在支持软件被验证的结论的可执行的任务。然而,待执行的任务、它们的执行顺序以及它们的执行的迭代和定时通过选择的特定软件生命周期模型以及与软件应用程序相关联的安全风险来规定,如由行动者单独感知的。用于验证软件的每个任务通常都从要求开始,例如,对于软件的每个特征,行动者应当能够指出解释该功能的要求。此外,对于每个要求,行动者应当具有用于测试该特征的计划,以确保其能够按要求起作用,以及具有用于记录该计划已执行的证据和测试结果的记录保存系统。一经根据行动者的QMS核实和验证源代码,行动者可将源代码发布到CI/CD系统,用于根据软件平台的QMS进行核实、验证和部署。
在框330中,软件平台的CI/CD系统接收源代码并且根据与软件平台相关联的QMS自动执行源代码和可执行程序的质量和合规性检查。伺候,确定源代码和可执行程序是否有效以及/或者包括由于开源引起的漏洞。如果源代码和可执行程序失效(不满足QMS的全部或部分要求)并且/或者源代码和可执行程序包括由于开源(由软件平台根据QMS限定和确定)引起的漏洞,则CI/CD系统将源代码转发回行动者以修复源代码的故障和/或漏洞。相反,如果源代码和可执行程序有效(满足QMS的全部或部分要求)并且/或者源代码和可执行程序不包括由于开源(由软件平台根据QMS限定和确定)引起的漏洞,则CI/CD系统通知内核以使用源代码或软件来发起针对子服务或服务的部署过程。
在框335处,内核(例如,如关于图2描述的内核200)接收使用源代码或软件来发起针对子服务或服务的部署过程的请求。内核位于分布式计算环境上。
在框340处,内核解析请求以识别待部署的子服务或服务的类型,以及用于运行一个或多个程序以提供子服务或服务所需要的源代码、库、依赖项、工具和其他文件。子服务或服务的类型可包括但不限于模型软件,诸如机器学习模型、回归模型或任何其他类型的监督或非监督模型、SAMD、结合物理医疗设备进行操作的软件或者数据摄取和处理软件(例如,流处理、批处理、长期运行服务、数据分析和处理、数据存储等)。为了将子服务或服务部署在分布式计算环境上,子服务或服务的类型必须是分布式计算环境被配置为支持的类型。内核针对由分布式计算环境支持的子服务或服务的类型检查待部署的子服务或服务的类型。如果该子服务或服务的类型不是分布式计算环境被配置为支持的类型,则内核将请求转发到可被配置为支持该子服务或服务的类型的不同分布式计算环境上的不同内核。因此,内核最终识别为被配置为支持子服务或服务的类型的分布式计算环境可与运行最初针对接收子服务或服务的请求的内核的分布式计算环境相同或不同。
在框345处,如果该子服务或服务的类型是分布式计算环境被配置为支持的类型,则内核获得用于在分布式计算环境的布置环内供应指定资源的图像。使用关于框320描述的注册表从一个或多个存储库获得图像。图像是软件包的模板,包括用于执行软件包的资源规范,并且该模板被定制用于基于待部署的服务的第一部分的类型来使用资源。例如,如果待部署SAMD子服务,则内核将检索被配置用于SAMD处理的图像模板。
在框350处,内核请求布置环内可用的资源。布置环内的可用资源被解析,并且基于对可用资源的解析来确定来自图像的指定资源中的全部是否在布置环内可用。
在框355处,当来自图像的指定资源中的全部在布置环内可用时,内核发起构建和部署过程,该构建和部署过程使用图像来构建封装指定资源的一个或多个容器。当来自图像的指定资源中的全部在布置环内不可用时,内核基于图像发起自动缩放过程以放大可用资源,向布置环提供附加资源,以满足从图像识别到的指定资源。此后,内核发起使用图像来构建封装可用资源和附加资源的一个或多个容器的构建和部署过程。一个或多个容器一经构建,一个或多个容器在图像的顶部上添加可写层,并且修改图像以包括源代码、库、依赖项、工具和用于执行一个或多个程序以提供子服务或服务所需要的其他文件。一个或多个容器被包裹在单个容器组实例中,用于执行一个或多个程序以提供子服务或服务。子服务或服务是使用单个容器组实例的一个或多个副本和经修改的图像来部署的。
在框360处,子服务或服务被公布并且子服务或服务的安全性被发起。安全性包括:(i)用于身份和访问管理的认证/授权过程,以及(ii)认证/授权过程的监测和针对漏洞问题的子服务或服务的使用。
图4示出了使用内核在软件平台上部署子服务或服务的过程400。流程图400中描绘的过程是由图1和图2中描绘的架构、系统和技术来实现的。
在步骤405处,软件开发系统的CI检索用于部署的源代码并且执行构建可执行程序的构建过程。作为构建过程的一部分,软件开发系统的CI根据软件开发系统的QMS对源代码和可执行程序进行测试和验证。QMS限定用于验证适合于发布管理器的产品和组织的源代码的一组要求。例如,该组要求可被限定为确定源代码是否:符合预期用途,如预期那样执行以实现该预期用途,以及满足基本的安全级别。作为构建过程的附加部分,软件开发系统的CI检查源代码的质量。代码质量检查包括检查可靠性(例如,确定代码是否如预期那样以最小缺陷执行)、可维护性(例如,遵循一致的结构/样式、易于理解、文件化良好等)和可测试性(例如,软件支持用于核实/验证的测试工作的程度)。此后,确定源代码和可执行程序是否有效以及/或者是否具有足够的质量。如果源代码和可执行程序失效(不满足QMS的全部或部分要求)并且/或者源代码和可执行程序质量差(如根据QMS通过软件开发系统限定和测量),则软件开发系统的CI将源代码转发回开发团队以修复源代码的故障和/或质量。相反,如果源代码和可执行程序有效(满足QMS的全部或部分要求)并且/或者源代码和可执行程序质量良好(如根据QMS通过软件开发系统限定和测量),则软件开发系统的CI切断源代码向软件平台的发布。
在步骤410处,软件平台的CI/CD系统接收源代码。在一些情况下,控制CI/CD系统的实体与控制软件开发系统的实体相同或不同。
在步骤415处,CI/CD系统执行基于接收到的源代码来构建可执行程序的构建过程。作为构建过程的一部分,CI/CD系统根据软件平台的QMS对源代码和可执行程序进行测试和验证。QMS限定用于验证适合于软件平台的源代码的一组要求。该组要求被限定为确定源代码是否:如预期那样执行以实现预期用途,满足增强的安全级别,满足由国际、国家和/或地区法规强制执行的要求,满足数据隐私问题,以及满足特定于容器和软件平台环境的性能要求。作为构建过程的附加部分,CI/CD系统白源源代码。白源包括:识别源代码的开源特征;确定与开源特征相关联的权限或许可;以及将权限或许可以及相关联的开源特征编译到数据结构中。伺候,确定源代码和可执行程序是否有效以及/或者包括由于开源引起的漏洞。如果源代码和可执行程序失效(不满足QMS的全部或部分要求)并且/或者源代码和可执行程序包括由于开源(由软件平台根据QMS限定和确定)引起的漏洞,则CI/CD系统将源代码转发回开发团队以修复源代码的故障和/或漏洞。相反,如果源代码和可执行程序有效(满足QMS的全部或部分要求)并且/或者源代码和可执行程序不包括由于开源(由软件平台根据QMS限定和确定)引起的漏洞,则CI/CD系统继续执行针对源代码或软件的部署过程。
在步骤420处,内核(例如,如关于图2描述的内核200)接收使用源代码或软件来发起针对子服务或服务的部署过程的请求。内核位于分布式计算环境(其是软件平台的一部分)上。
在步骤425处,内核解析请求以识别待部署的子服务或服务的类型,以及用于运行一个或多个程序以提供子服务或服务所需要的源代码、库、依赖项、工具和其他文件。子服务或服务的类型可包括但不限于模型软件,诸如机器学习模型、回归模型或任何其他类型的监督或非监督模型、SAMD、结合物理医疗设备进行操作的软件或者数据摄取和处理软件(例如,流处理、批处理、长期运行服务、数据分析和处理、数据存储等)。为了将子服务或服务部署在分布式计算环境上,子服务或服务的类型必须是分布式计算环境被配置为支持的类型。内核针对由分布式计算环境支持的子服务或服务的类型检查待部署的子服务或服务的类型。如果子服务或服务的类型不是分布式计算环境被配置为支持的类型,则内核将请求转发到可被配置为支持该子服务或服务的类型的不同分布式计算环境上的不同内核。
在步骤430处,如果子服务或服务的类型是分布式计算环境被配置为支持的类型,则内核从在分布式计算环境内的一个或多个布置环上运行的布置约束过程请求可用资源。每个布置环可包括一种或多种类型的资源的预先集成和优化的组合。在某些示例中,可为不同类型的云服务预先供应不同的布置环。例如,可为SAMD服务供应第一组布置环,可为数据分析服务供应第二组布置环,其可包括与第一组布置环中的布置环不同的资源组合等。
在步骤435处,布置约束过程解析分布式计算环境内的一个或多个布置环上的可用资源。执行解析以获得分布式计算环境内的一个或多个布置环上的所有可用资源的列表。
在步骤440处,布置约束过程基于对可用资源的解析来确定来自图像的指定资源中的全部是否在布置环内可用。图像是基于子服务或服务的类型从图像工件仓库(一个或多个存储库)中获得的。图像是软件包的模板,包括用于执行软件包的资源规范,并且该模板被定制用于基于子服务或服务的类型来使用指定资源。当来自图像的指定资源中的全部在一个或多个布置环内可用时,布置约束过程保留指定资源并且通知内核指定资源可用并且已保留。当来自图像的指定资源中的全部在布置环内不可用时,布置约束过程基于图像自动缩放可用资源,向一个或多个布置环提供附加资源,以满足从图像识别到的指定资源。此后,布置约束过程保留指定资源并且通知内核指定资源可用并且已保留。
在步骤445处,内核请求经由编排引擎部署子服务或服务。请求包括关于指定资源在一个或多个布置环内的位置、与待部署的子服务或服务的类型相关联的图像以及用于运行一个或多个程序以提供子服务或服务所需要的源代码、库、依赖项、工具和其他文件的信息。
在步骤450处,编排引擎检测针对子服务或服务的部署待执行的编排的类型。编排的类型包括基于子服务或服务的类型从编排的多个类型中识别编排的类型。
在步骤455处,编排引擎使用图像来构建一个或多个容器,该一个或多个容器基于针对子服务或服务的部署的编排的类型来封装指定资源。一个或多个容器一经构建,一个或多个容器在图像的顶部上添加可写层,并且修改图像以包括源代码、库、依赖项、工具和用于执行一个或多个程序以提供子服务或服务所需要的其他文件。一个或多个容器被包裹在单个容器组实例中,用于执行一个或多个程序以提供子服务或服务。子服务或服务是使用单个容器组实例的一个或多个副本和经修改的图像来部署的。此后,编排引擎通知内核子服务或服务的部署是成功还是失败(以及其原因)。
在步骤460处,当部署失败时,内核通知CI/CD系统,使得可采取补救措施。当部署成功时,内核执行健康检查以评估子服务或服务的功能性,并且确定子服务或服务是否按预期运行。当服务未按预期运行时,内核通知CI/CD系统关于服务未能按预期运行。
在步骤465处,当服务按预期运行时,内核:(i)公布子服务或服务(例如,注册子服务或服务供由一个或多个订户或用户使用),(ii)发起子服务或服务的安全性,以及(iii)通知CICD系统关于服务成功按预期运行。安全性包括:(i)用于身份和访问管理的认证/授权过程,以及(ii)认证/授权过程的监测和针对漏洞问题的子服务或服务的使用。
图5示出了用于在软件平台上部署服务的一个或多个子服务的过程500。在步骤505处,在驻留在第一分布式计算环境上的第一内核处接收第一请求。第一请求是在第一分布式计算环境上发起用于服务的第一子服务的部署过程。第一子服务具有类型,并且为了将第一子服务部署在第一分布式计算环境上,该第一子服务的类型必须是第一分布式计算环境被配置为支持的类型。被配置为支持意味着分布式计算环境提供计算能力、存储器存储、内容交付和其他功能性,以可靠地运行和缩放子服务的类型。在一些情况下,第一子服务的类型可包括但不限于模型软件,诸如机器学习模型、回归模型或任何其他种类的监督或非监督模型、作为医疗设备的软件、结合物理医疗设备进行操作的软件或数据摄取和处理软件。
为了确保第一子服务的类型是第一分布式计算环境被配置为支持的类型,发送请求的实体(例如,CI/CD系统)确定第一子服务的类型,确定多个分布式计算环境被配置为支持的子服务的类型,选择被配置为支持第一子服务的类型的给定分布式计算环境(例如,第一分布式计算环境)并且向给定分布式计算环境(例如,第一分布式计算环境)发送请求。另选地,为了确保第一子服务的类型是第一分布式计算环境被配置为支持的类型,发送请求的实体(例如,CI/CD系统)确定第一子服务的类型并且发送具有第一子服务的类型的第一请求。第一内核针对由第一分布式计算环境支持的子服务的类型检查待部署的第一子服务的类型,并且如果第一子服务的类型不是第一分布式计算环境被配置为支持的类型,则第一内核将请求转发到不同分布式计算环境上的不同内核,该不同分布式计算环境可被配置为支持第一子服务的类型。相反,如果第一子服务的类型是第一分布式计算环境被配置为支持的类型,则该过程在步骤510处继续。
在步骤510处,响应于接收到第一请求并且第一子服务的类型是第一分布式计算环境被配置为支持的类型,第一内核发起用于第一分布式计算环境的布置环内的指定资源的供应过程。供应过程包括基于第一子服务的类型获得图像。图像是软件包的模板,包括用于执行软件包的资源规范,并且该模板被定制用于基于第一子服务的类型来使用指定资源。获得图像包括基于第一子服务的类型从多个图像识别图像。图像被配置为与安全最佳惯例一致以减少图像的漏洞,并且安全最佳惯例是基于第一子服务的类型来选择的。在一些情况下,该图像被进一步配置为与图像规范一致以优化部署工作流程和性能,并且该图像规范是基于该第一子服务的类型来选择的。
供应过程进一步包括在布置环内定位指定资源,这包括解析图像以识别指定资源、从布置环请求可用资源、解析来自布置环的可用资源以及基于对该可用资源的解析,确定来自该图像的指定资源中的全部在布置环内是否可用。当来自图像的指定资源中的全部在布置环内不可用,基于该图像来自动缩放可用资源以向布置环提供附加资源以满足从该图像识别到的指定资源。当来自图像的指定资源中的全部在布置环内可用时,保留该指定资源。
供应过程进一步包括使用图像构建封装指定资源的一个或多个容器。一个或多个容器被包裹在第一容器组中,用于执行一个或多个程序以提供第一子服务。一个或多个容器一经构建,就使用可写层修改图像以包括用于执行一个或多个程序所需要的源代码。在某些情况下,图像被修改为包括源代码、库、依赖项、工具和用于执行一个或多个程序以提供第一子服务所需要的其他文件。
在步骤515处,使用包含供应的指定资源的第一容器组的一个或多个副本和针对第一子服务的类型的经修改的图像来部署第一子服务。第一子服务被部署在第一分布式计算环境上。
在步骤520处,执行健康检查以评估第一子服务的功能性并且确定第一子服务是否按预期运行。如果源代码和可执行程序有效(满足QMS的要求中的全部或部分),则第一子服务按预期运行,源代码和可执行程序不包括由于(由软件平台根据QMS限定和确定的)开源引起的漏洞,并且/或者第一子服务通过健康检查。当第一子服务未通过健康检查时,通知CICD系统关于服务未能按预期运行。当第一子服务按预期运行时,(i)公布第一子服务,(ii)发起第一子服务的安全性,以及(iii)通知CICD系统关于第一子服务成功按预期运行。
任选地,在步骤525处,当第一子服务按预期运行时,可提供第一子服务供使用并且用户可发起对第一子服务的执行。第一子服务的执行可包括:(i)通过内核的主设备基于第一子服务或服务的类型来确定用于执行第一子服务的框架;(ii)通过内核的主设备向框架提供在布置环内的可用资源,用于执行一个或多个程序以提供第一子服务;响应于该提供,通过内核的主设备接收关于由一个或多个程序限定的任务的信息;以及通过内核的主设备向内核的代理发送任务,该代理将指定资源分配到框架的执行器以用于执行该任务。
如图5进一步所示,对于服务的第二、第三、第四等(n)次服务,可彼此并行、基本上并行、偏移或顺序地执行与步骤505-525的那些类似的过程,并且对于第一次服务执行该过程。根据本公开的各方面,可执行这些过程以便部署与待部署在跨多个分布式计算环境的软件平台上的服务相关联的子服务中的全部或部分。
V.其他注意事项
本公开的一些实施例包括一种系统,其包括一个或多个数据处理器。在一些实施例中,该系统包括包含指令的非暂时性计算机可读存储介质,所述指令在所述一个或多个数据处理器上被执行时使所述一个或多个数据处理器执行本文公开的一种或多种方法的部分或全部和/或本文公开的一种或多种过程的部分或全部。本公开的一些实施例包括一种有形地体现在非暂时性机器可读存储介质中的计算机程序产品,其包括指令,该指令被配置为使一个或多个数据处理器执行本文公开的一种或多种方法的部分或全部和/或本文公开的一种或多种过程的部分或全部。
已采用的术语和表达被用作描述性而非限制性的术语,并且在使用这些术语和表达时,无意排除所示出和描述的特征或其部分的任何等同物,但是应当认识到,在所要求保护的本发明的范围内,各种修改是可能的。因此,应当理解,尽管已通过实施例和任选特征具体地公开了所要求保护的本发明,但是本领域技术人员可以采用本文所公开的概念的修改和变化,并且认为这样的修改和变化在由所附权利要求限定的本发明范围内。
随后的描述仅提供优选的示例性实施例,并且不旨在限制本公开的范围、适用性或配置。相反,优选示例性实施例的随后描述将为本领域技术人员提供用于实现各种实施例的可行描述。应当理解,在不脱离所附权利要求中阐述的精神和范围的情况下,可以对元件的功能和布置进行各种改变。
在以下描述中给出具体细节以提供对实施例的透彻理解。然而,应当理解,可以在没有这些具体细节的情况下实践实施例。例如,电路、系统、网络、过程和其他组件可以以框图形式显示为部件,以免在不必要的细节中混淆实施例。在其他情况下,可以在没有不必要的细节的情况下示出众所周知的电路、过程、算法、结构和技术以避免混淆实施例。
Claims (27)
1.一种计算机实现的方法,其包括:
在驻留在第一分布式计算环境上的第一内核处接收发起用于在所述第一分布式计算环境上的第一子服务或服务的部署过程的第一请求,其中所述第一子服务或服务具有类型,并且为了将所述第一子服务或服务部署在所述第一分布式计算环境上,所述第一子服务或服务的所述类型必须是所述第一分布式计算环境被配置为支持的类型;
响应于接收到所述请求和所述第一子服务或服务的所述类型是所述第一分布式计算环境被配置为支持的类型,通过所述第一内核在所述第一分布式计算环境的布置环内供应指定资源,其中所述供应包括:
基于所述第一子服务或服务的所述类型来获得图像,其中所述图像是软件包的模板,所述模板包括用于执行所述软件包的资源规范,并且所述模板被定制用于基于所述第一子服务或服务的所述类型来使用所述指定资源;
在所述布置环内定位所述指定资源;
使用所述图像构建封装所述指定资源的一个或多个容器,其中所述一个或多个容器被包裹在第一容器组中,用于执行一个或多个程序以提供所述第一子服务或服务;以及
使用可写层修改所述图像以包括用于执行所述一个或多个程序所需要的源代码;以及
使用所述第一容器组的一个或多个副本和经修改的图像通过所述第一内核来部署所述第一子服务或服务。
2.根据权利要求1所述的计算机实现的方法,其中定位所述资源包括:
解析所述图像以识别所述指定资源;
从所述布置环请求可用资源;
解析来自所述布置环的所述可用资源;
基于对所述可用资源的所述解析,确定来自所述图像的所述指定资源中的全部在所述布置环内是否可用;以及
响应于来自所述图像的所述指定资源中的全部在所述布置环内不可用,基于所述图像来自动缩放所述可用资源以向所述布置环提供附加资源以满足从所述图像识别到的所述指定资源。
3.根据权利要求1或2所述的计算机实现的方法,其中:
获得所述图像进一步包括基于所述第一子服务或服务的所述类型从多个图像识别所述图像;
所述图像被配置为与安全最佳惯例一致以减少所述图像的漏洞;并且
所述安全最佳惯例是基于所述第一子服务或服务的所述类型来选择的。
4.根据权利要求3所述的计算机实现的方法,其中:
所述图像被进一步配置为与图像规范一致以优化部署工作流程和性能;并且
所述图像规范是基于所述第一子服务或服务的所述类型来选择的。
5.根据权利要求1至4中任一项所述的计算机实现的方法,其中所述第一子服务或服务的所述类型是机器学习模型软件、作为医疗设备的软件、结合物理医疗设备进行操作的软件或者数据摄取和处理软件。
6.根据权利要求5所述的计算机实现的方法,其进一步包括通过所述内核执行所述第一子服务或服务,其中所述执行包括:
通过所述内核的主设备基于所述第一子服务或服务的所述类型来确定用于执行所述第一子服务或服务的框架;
通过所述内核的所述主设备向所述框架提供在所述布置环内的所述可用资源,用于执行所述一个或多个程序以提供所述第一子服务或服务;
响应于所述提供,通过内核的所述主设备接收关于由所述一个或多个程序限定的任务的信息;以及
通过所述内核的所述主设备向所述内核的代理发送所述任务,所述代理将所述指定资源分配到所述框架的执行器以用于执行所述任务。
7.根据权利要求1至6中任一项所述的计算机实现的方法,其进一步包括:
通过所述内核公布所述第一子服务或服务;以及
通过所述内核发起所述第一子服务或服务的安全性。
8.根据权利要求1至7中任一项所述的计算机实现的方法,其进一步包括:
通过所述内核执行健康检查以评估所述第一子服务或服务的功能性以及确定所述第一子服务或服务是否按预期运行;
当所述第一子服务或服务未通过所述健康检查时,通知持续集成持续部署(CICD)系统关于所述第一子服务或服务未能按预期运行,其中从所述CICD系统接收所述第一请求;以及
当所述第一子服务或服务按预期运行时,(i)通过所述内核公布所述第一子服务或服务,(ii)通过所述内核发起所述第一子服务或服务的所述安全性,以及(iii)通知所述CICD系统关于所述第一子服务或服务成功按预期运行。
9.根据权利要求1至8中任一项所述的计算机实现的方法,其进一步包括:
在驻留在第二分布式计算环境上的第二内核处接收发起用于在所述第二分布式计算环境上的服务的第二子服务的部署过程的第二请求,其中所述第二子服务或服务具有类型,并且为了将所述第二子服务或服务部署在所述第二分布式计算环境上,所述第二子服务或服务的所述类型必须是所述第二分布式计算环境被配置为支持的类型;
响应于接收到所述请求,通过所述第二内核在所述第二分布式计算环境的布置环内供应指定资源,其中所述供应包括:
基于所述第二子服务或服务的所述类型来获得图像,其中所述图像是软件包的模板,所述模板包括用于执行所述软件包的资源规范,并且所述模板被定制用于基于所述第二子服务或服务的所述类型来使用所述指定资源;
在所述布置环内定位所述指定资源;
使用所述图像构建封装所述指定资源的一个或多个容器,其中所述一个或多个容器被包裹在第二容器组中,用于执行一个或多个程序以提供所述第二子服务或服务;以及
使用可写层修改所述图像以包括用于执行所述一个或多个程序所需要的源代码;以及
使用所述第二容器组的一个或多个副本和经修改的图像通过所述第二内核来部署所述第二子服务或服务。
10.一种系统,其包括:
一个或多个数据处理器;以及
非暂时性计算机可读存储介质,其包含指令,所述指令当在所述一个或多个数据处理器上被执行时,使所述一个或多个数据处理器执行包括以下的动作:
在驻留在第一分布式计算环境上的第一内核处接收发起用于在所述第一分布式计算环境上的第一子服务或服务的部署过程的第一请求,其中所述第一子服务或服务具有类型,并且为了将所述第一子服务或服务部署在所述第一分布式计算环境上,所述第一子服务或服务的所述类型必须是所述第一分布式计算环境被配置为支持的类型;
响应于接收到所述请求和所述第一子服务或服务的所述类型是所述第一分布式计算环境被配置为支持的类型,通过所述第一内核在所述第一分布式计算环境的布置环内供应指定资源,其中所述供应包括:
基于所述第一子服务或服务的所述类型来获得图像,其中所述图像是软件包的模板,所述模板包括用于执行所述软件包的资源规范,并且所述模板被定制用于基于所述第一子服务或服务的所述类型来使用所述指定资源;
在所述布置环内定位所述指定资源;
使用所述图像构建封装所述指定资源的一个或多个容器,其中所述一个或多个容器被包裹在第一容器组中,用于执行一个或多个程序以提供所述第一子服务或服务;以及
使用可写层修改所述图像以包括用于执行所述一个或多个程序所需要的源代码;以及
使用所述第一容器组的一个或多个副本和经修改的图像通过所述第一内核来部署所述第一子服务或服务。
11.根据权利要求10所述的系统,其中定位所述资源包括:
解析所述图像以识别所述指定资源;
从所述布置环请求可用资源;
解析来自所述布置环的所述可用资源;
基于对所述可用资源的所述解析,确定来自所述图像的所述指定资源中的全部在所述布置环内是否可用;以及
响应于来自所述图像的所述指定资源中的全部在所述布置环内不可用,基于所述图像来自动缩放所述可用资源以向所述布置环提供附加资源以满足从所述图像识别到的所述指定资源。
12.根据权利要求10或11所述的系统,其中:
获得所述图像进一步包括基于所述第一子服务或服务的所述类型从多个图像识别所述图像;
所述图像被配置为与安全最佳惯例一致以减少所述图像的漏洞;并且
所述安全最佳惯例是基于所述第一子服务或服务的所述类型来选择的。
13.根据权利要求12所述的系统,其中:
所述图像被进一步配置为与图像规范一致以优化部署工作流程和性能;并且
所述图像规范是基于所述第一子服务或服务的所述类型来选择的。
14.根据权利要求10至13中任一项所述的系统,其中所述第一子服务或服务的所述类型是机器学习模型软件、作为医疗设备的软件、结合物理医疗设备进行操作的软件或者数据摄取和处理软件。
15.根据权利要求14所述的系统,其中所述动作进一步包括通过所述内核执行所述第一子服务或服务,其中所述执行包括:
通过所述内核的主设备基于所述第一子服务或服务的所述类型来确定用于执行所述第一子服务或服务的框架;
通过所述内核的所述主设备向所述框架提供在所述布置环内的所述可用资源,用于执行所述一个或多个程序以提供所述第一子服务或服务;
响应于所述提供,通过内核的所述主设备接收关于由所述一个或多个程序限定的任务的信息;以及
通过所述内核的所述主设备向所述内核的代理发送所述任务,所述代理将所述指定资源分配到所述框架的执行器以用于执行所述任务。
16.根据权利要求10至15中任一项所述的系统,其进一步包括:
通过所述内核公布所述第一子服务或服务;以及
通过所述内核发起所述第一子服务或服务的安全性。
17.根据权利要求10至16中任一项所述的系统,其中所述动作进一步包括:
通过所述内核执行健康检查以评估所述第一子服务或服务的功能性以及确定所述第一子服务或服务是否按预期运行;
当所述第一子服务或服务未通过所述健康检查时,通知持续集成持续部署(CICD)系统关于所述第一子服务或服务未能按预期运行,其中从所述CICD系统接收所述第一请求;以及
当所述第一子服务或服务按预期运行时,(i)通过所述内核公布所述第一子服务或服务,(ii)通过所述内核发起所述第一子服务或服务的所述安全性,以及(iii)通知所述CICD系统关于所述第一子服务或服务成功按预期运行。
18.根据权利要求10至17中任一项所述的系统,其中所述动作进一步包括:
在驻留在第二分布式计算环境上的第二内核处接收发起用于在所述第二分布式计算环境上的服务的第二子服务的部署过程的第二请求,其中所述第二子服务或服务具有类型,并且为了将所述第二子服务或服务部署在所述第二分布式计算环境上,所述第二子服务或服务的所述类型必须是所述第二分布式计算环境被配置为支持的类型;
响应于接收到所述请求,通过所述第二内核在所述第二分布式计算环境的布置环内供应指定资源,其中所述供应包括:
基于所述第二子服务或服务的所述类型来获得图像,其中所述图像是软件包的模板,所述模板包括用于执行所述软件包的资源规范,并且所述模板被定制用于基于所述第二子服务或服务的所述类型来使用所述指定资源;
在所述布置环内定位所述指定资源;
使用所述图像构建封装所述指定资源的一个或多个容器,其中所述一个或多个容器被包裹在第二容器组中,用于执行一个或多个程序以提供所述第二子服务或服务;以及
使用可写层修改所述图像以包括用于执行所述一个或多个程序所需要的源代码;以及
使用所述第二容器组的一个或多个副本和经修改的图像通过所述第二内核来部署所述第二子服务或服务。
19.一种有形地体现在非暂时性机器可读存储介质中的计算机程序产品,其包括指令,所述指令被配置为使一个或多个数据处理器执行包括以下的动作:
在驻留在第一分布式计算环境上的第一内核处接收发起用于在所述第一分布式计算环境上的第一子服务或服务的部署过程的第一请求,其中所述第一子服务或服务具有类型,并且为了将所述第一子服务或服务部署在所述第一分布式计算环境上,所述第一子服务或服务的所述类型必须是所述第一分布式计算环境被配置为支持的类型;
响应于接收到所述请求和所述第一子服务或服务的所述类型是所述第一分布式计算环境被配置为支持的类型,通过所述第一内核在所述第一分布式计算环境的布置环内供应指定资源,其中所述供应包括:
基于所述第一子服务或服务的所述类型来获得图像,其中所述图像是软件包的模板,所述模板包括用于执行所述软件包的资源规范,并且所述模板被定制用于基于所述第一子服务或服务的所述类型来使用所述指定资源;
在所述布置环内定位所述指定资源;
使用所述图像构建封装所述指定资源的一个或多个容器,其中所述一个或多个容器被包裹在第一容器组中,用于执行一个或多个程序以提供所述第一子服务或服务;以及
使用可写层修改所述图像以包括用于执行所述一个或多个程序所需要的源代码;以及
使用所述第一容器组的一个或多个副本和经修改的图像通过所述第一内核来部署所述第一子服务或服务。
20.根据权利要求19所述的计算机程序产品,其中定位所述资源包括:
解析所述图像以识别所述指定资源;
从所述布置环请求可用资源;
解析来自所述布置环的所述可用资源;
基于对所述可用资源的所述解析,确定来自所述图像的所述指定资源中的全部在所述布置环内是否可用;以及
响应于来自所述图像的所述指定资源中的全部在所述布置环内不可用,基于所述图像来自动缩放所述可用资源以向所述布置环提供附加资源以满足从所述图像识别到的所述指定资源。
21.根据权利要求19或20所述的计算机程序产品,其中:
获得所述图像进一步包括基于所述第一子服务或服务的所述类型从多个图像识别所述图像;
所述图像被配置为与安全最佳惯例一致以减少所述图像的漏洞;并且
所述安全最佳惯例是基于所述第一子服务或服务的所述类型来选择的。
22.根据权利要求21所述的计算机程序产品,其中:
所述图像被进一步配置为与图像规范一致以优化部署工作流程和性能;并且
所述图像规范是基于所述第一子服务或服务的所述类型来选择的。
23.根据权利要求19至22中任一项所述的计算机程序产品,其中所述第一子服务或服务的所述类型是机器学习模型软件、作为医疗设备的软件、结合物理医疗设备进行操作的软件或者数据摄取和处理软件。
24.根据权利要求23所述的计算机程序产品,其中所述动作进一步包括通过所述内核执行所述第一子服务或服务,其中所述执行包括:
通过所述内核的主设备基于所述第一子服务或服务的所述类型来确定用于执行所述第一子服务或服务的框架;
通过所述内核的所述主设备向所述框架提供在所述布置环内的所述可用资源,用于执行所述一个或多个程序以提供所述第一子服务或服务;
响应于所述提供,通过内核的所述主设备接收关于由所述一个或多个程序限定的任务的信息;以及
通过所述内核的所述主设备向所述内核的代理发送所述任务,所述代理将所述指定资源分配到所述框架的执行器以用于执行所述任务。
25.根据权利要求19至24中任一项所述的计算机程序产品,其进一步包括:
通过所述内核公布所述第一子服务或服务;以及
通过所述内核发起所述第一子服务或服务的安全性。
26.根据权利要求19至25中任一项所述的计算机程序产品,其中所述动作进一步包括:
通过所述内核执行健康检查以评估所述第一子服务或服务的功能性以及确定所述第一子服务或服务是否按预期运行;
当所述第一子服务或服务未通过所述健康检查时,通知持续集成持续部署(CICD)系统关于所述第一子服务或服务未能按预期运行,其中从所述CICD系统接收所述第一请求;以及
当所述第一子服务或服务按预期运行时,(i)通过所述内核公布所述第一子服务或服务,(ii)通过所述内核发起所述第一子服务或服务的所述安全性,以及(iii)通知所述CICD系统关于所述第一子服务或服务成功按预期运行。
27.根据权利要求19至26中任一项所述的计算机程序产品,其中所述动作进一步包括:
在驻留在第二分布式计算环境上的第二内核处接收发起用于在所述第二分布式计算环境上的服务的第二子服务的部署过程的第二请求,其中所述第二子服务或服务具有类型,并且为了将所述第二子服务或服务部署在所述第二分布式计算环境上,所述第二子服务或服务的所述类型必须是所述第二分布式计算环境被配置为支持的类型;
响应于接收到所述请求,通过所述第二内核在所述第二分布式计算环境的布置环内供应指定资源,其中所述供应包括:
基于所述第二子服务或服务的所述类型来获得图像,其中所述图像是软件包的模板,所述模板包括用于执行所述软件包的资源规范,并且所述模板被定制用于基于所述第二子服务或服务的所述类型来使用所述指定资源;
在所述布置环内定位所述指定资源;
使用所述图像构建封装所述指定资源的一个或多个容器,其中所述一个或多个容器被包裹在第二容器组中,用于执行一个或多个程序以提供所述第二子服务或服务;以及
使用可写层修改所述图像以包括用于执行所述一个或多个程序所需要的源代码;以及
使用所述第二容器组的一个或多个副本和经修改的图像通过所述第二内核来部署所述第二子服务或服务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063111996P | 2020-11-10 | 2020-11-10 | |
US63/111,996 | 2020-11-10 | ||
PCT/US2021/058418 WO2022103689A1 (en) | 2020-11-10 | 2021-11-08 | Service orchestration within a distributed pod based system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116457759A true CN116457759A (zh) | 2023-07-18 |
Family
ID=78709566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180075633.7A Pending CN116457759A (zh) | 2020-11-10 | 2021-11-08 | 基于分布式容器组的系统内的服务编排 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230359455A1 (zh) |
EP (1) | EP4244719A1 (zh) |
JP (1) | JP2023550608A (zh) |
KR (1) | KR20230098647A (zh) |
CN (1) | CN116457759A (zh) |
WO (1) | WO2022103689A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3906508B1 (en) * | 2018-12-31 | 2024-03-13 | Intel Corporation | Securing systems employing artificial intelligence |
US20230229438A1 (en) * | 2022-01-20 | 2023-07-20 | Target Brands, Inc. | Kernels as a service |
CN115202908B (zh) * | 2022-09-09 | 2023-01-03 | 杭州海康威视数字技术股份有限公司 | 一种基于动态编排的隐私计算请求响应方法及装置 |
-
2021
- 2021-11-08 CN CN202180075633.7A patent/CN116457759A/zh active Pending
- 2021-11-08 JP JP2023526941A patent/JP2023550608A/ja active Pending
- 2021-11-08 WO PCT/US2021/058418 patent/WO2022103689A1/en active Application Filing
- 2021-11-08 EP EP21811208.4A patent/EP4244719A1/en active Pending
- 2021-11-08 KR KR1020237018734A patent/KR20230098647A/ko active Search and Examination
-
2023
- 2023-05-04 US US18/312,565 patent/US20230359455A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022103689A1 (en) | 2022-05-19 |
JP2023550608A (ja) | 2023-12-04 |
KR20230098647A (ko) | 2023-07-04 |
EP4244719A1 (en) | 2023-09-20 |
US20230359455A1 (en) | 2023-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11397619B2 (en) | Techniques for detecting drift in a deployment orchestrator | |
US9641392B2 (en) | Policy implementation in a networked computing environment | |
US11755337B2 (en) | Techniques for managing dependencies of an orchestration service | |
US20230359455A1 (en) | Service orchestration within a distributed pod based system | |
US20230305813A1 (en) | Continuous integration and development of code in a secure environment | |
US20180321654A1 (en) | Flow Engine for Building Automated Flows Within a Cloud Based Developmental Platform | |
US20210226929A1 (en) | Techniques for transferring data across air gaps | |
EP4094155A1 (en) | Techniques for utilizing directed acyclic graphs for deployment instructions | |
US20240264874A1 (en) | System for synchronizing execution of workload tasks | |
US20240129306A1 (en) | Service to service communication and authentication via a central network mesh | |
EP4094208A1 (en) | Techniques for detecting drift in a deployment orchestrator |
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 |