微服务中的流程编排和编排
Posted: Sat Dec 28, 2024 6:40 am
在考虑软件架构时,您可能在流程编排中遇到并经历过微服务,微服务已成为构建应用程序的默认方法。
微服务架构风格侧重于开发作为一套“微服务”运行的单一应用程序,每个应用程序运行自己的进程并与 HTTP 资源 API 等机制进行通信。应用程序设计为独立部署,并围绕业务功能构建并自动执行。集中管理是其中一个组成部分,但只是最低限度的必要。
在谈论微服务时,将它们与具有客户端用户界面、数据库和服务器端应用程序的整体式应用程序开发进行比较是有用的。在服务器端,应用程序处理 HTTP 请求、部署域逻辑、接收和更新数据库信息,然后通过浏览器选择并显示 HTML 视图。作为一个整体,它是一个可执行文件。如果需要更改,则必须构建新版本的服务器端应用程序。
整体风格一直是应用程序开发的“传统”方法。应用程序通过单个进程处理请求,并使用基本功能将应用程序划分为类、函数和命名空间。如果您想运行多个实例,您可以在负载均衡器后面水平扩展单体应用。
虽然应用程序开发的整体风格可能是成功的源泉,但它也 喀麦隆电报负责人 可能成为在云上部署大量应用程序的障碍。例如,由于变更周期是相互关联的,任何应用程序变更都需要完全重建和重新部署。随着时间的推移,维护有组织的模块化结构变得更加复杂和耗时。如果您的组织想要扩展业务应用程序,您应该逐个扩展每个应用程序,而不是仅扩展需要更多资源的一个组件。
从整体架构到微服务
微服务的流行部分归因于与整体风格相关的挫败感。更不用说,微服务风格确保服务是独立可扩展和可部署的,并且能够用不同的语言编写不同的服务。它也可以由不同的团队管理。微服务风格的根源可以追溯到 Unix 设计原则,并且在云时代更加有效。
产品在整个生命周期中的所有权
在整体式风格中,应用程序一旦开发出来,就被认为是完整的。下一步是将所有权转移给维护团队。相比之下,微服务风格包含开发它的项目团队的终身所有权。想想亚马逊的口号“你构建它,你运行它”。因此,开发团队每天管理其应用程序的行为并负责某些支持任务。这个想法是与应用程序保持持续的关系,以确保它始终如一地提供预期的业务功能。
事实上,微服务团队通常不愿意执行严格的标准。尽管这也可能取决于标准的制定和执行方式。例如,在企业界,标准通常是由很少或没有编程经验的团队开发的。看待它的一种方法是使用“有界上下文的领域驱动设计”的概念。 DDD 将复杂域划分为多个有界上下文,并使用连接关系的映射。 DDD 流程在整体架构和微服务架构中很有用,因为它有助于澄清和加强分离。然而,微服务分散了数据存储决策,即使存在不同的实例,每个服务也能够管理自己的数据库。这种方法称为“多语言持久性”。每个服务都有特定的功能,并使用交互和数据共享的方式。如何 ?通过编排或编排。
微服务架构风格侧重于开发作为一套“微服务”运行的单一应用程序,每个应用程序运行自己的进程并与 HTTP 资源 API 等机制进行通信。应用程序设计为独立部署,并围绕业务功能构建并自动执行。集中管理是其中一个组成部分,但只是最低限度的必要。
在谈论微服务时,将它们与具有客户端用户界面、数据库和服务器端应用程序的整体式应用程序开发进行比较是有用的。在服务器端,应用程序处理 HTTP 请求、部署域逻辑、接收和更新数据库信息,然后通过浏览器选择并显示 HTML 视图。作为一个整体,它是一个可执行文件。如果需要更改,则必须构建新版本的服务器端应用程序。
整体风格一直是应用程序开发的“传统”方法。应用程序通过单个进程处理请求,并使用基本功能将应用程序划分为类、函数和命名空间。如果您想运行多个实例,您可以在负载均衡器后面水平扩展单体应用。
虽然应用程序开发的整体风格可能是成功的源泉,但它也 喀麦隆电报负责人 可能成为在云上部署大量应用程序的障碍。例如,由于变更周期是相互关联的,任何应用程序变更都需要完全重建和重新部署。随着时间的推移,维护有组织的模块化结构变得更加复杂和耗时。如果您的组织想要扩展业务应用程序,您应该逐个扩展每个应用程序,而不是仅扩展需要更多资源的一个组件。
从整体架构到微服务
微服务的流行部分归因于与整体风格相关的挫败感。更不用说,微服务风格确保服务是独立可扩展和可部署的,并且能够用不同的语言编写不同的服务。它也可以由不同的团队管理。微服务风格的根源可以追溯到 Unix 设计原则,并且在云时代更加有效。
产品在整个生命周期中的所有权
在整体式风格中,应用程序一旦开发出来,就被认为是完整的。下一步是将所有权转移给维护团队。相比之下,微服务风格包含开发它的项目团队的终身所有权。想想亚马逊的口号“你构建它,你运行它”。因此,开发团队每天管理其应用程序的行为并负责某些支持任务。这个想法是与应用程序保持持续的关系,以确保它始终如一地提供预期的业务功能。
事实上,微服务团队通常不愿意执行严格的标准。尽管这也可能取决于标准的制定和执行方式。例如,在企业界,标准通常是由很少或没有编程经验的团队开发的。看待它的一种方法是使用“有界上下文的领域驱动设计”的概念。 DDD 将复杂域划分为多个有界上下文,并使用连接关系的映射。 DDD 流程在整体架构和微服务架构中很有用,因为它有助于澄清和加强分离。然而,微服务分散了数据存储决策,即使存在不同的实例,每个服务也能够管理自己的数据库。这种方法称为“多语言持久性”。每个服务都有特定的功能,并使用交互和数据共享的方式。如何 ?通过编排或编排。