随着越来越多的企业采用microservice架构对于他们的应用程序,更多的开发人员不得不应对编排和编排的概念。虽然这些术语有时互换,有关键的区别这两个体系结构模式。
编排一个集中的所有控制决策方法是关于服务之间的交互。这里一个中心协调器服务坐标的所有其他服务执行业务事务或工作流程。相比之下,编排是一个分散的方法协调此工作流,其中每个服务决定自己的行为根据接收到的消息从其他服务。
本文将介绍在microservices架构编制和编排的核心概念,并讨论如何使用每个microservices-based应用程序(或两者)。我们还将模拟microservices编排和编排在以下代码示例。
microservices架构是什么?
Microservices指风格的软件体系结构,其中一个大型应用程序可以作为一个聚合体小,自主服务。每个microservice都有特定的目的,是独立部署。
microservices架构便于单个服务规模。它还允许更大的速度和灵活性对应用程序进行更改时,因为只有受影响的服务需要重新部署。
两种主要的方法来管理沟通microservices编排和编排。让我们理解的差异。
microservices编排是什么?
Microservices编排指的是一个集中的方法,一个中央组件,称为协调器,负责管理和协调Microservices之间的交互。Kubernetes和码头工人群是编制工具的例子。
编制有助于确保一致性和可靠性之间的交互microservices通过定义需要遵循的一系列步骤。它也有助于管理失败和错误通过提供一个集中控制点,通过确保每个microservice只有协调器通信。
编排是有用的场景需要一个集中的权威控制microservices之间的交互,而当需要协调和管理复杂的过程,涉及到多个microservices。
编排的例子包括使用一个API microservices之间的网关管理和安全通信,或者使用message broker协调microservices之间的消息流。
Microservices编排在c#示例
工作流核心是一个轻量级工作流引擎为。net核心应用程序。我们可以用它来实现业务流程。下面是一个基本的例子microservices编制应用程序在c#中使用工作流核心库。
使用Microsoft.Extensions.DependencyInjection;使用Microsoft.Extensions.Logging;使用WorkflowCore.Interface;使用WorkflowCore.Models;名称空间MicroservicesOrchestrationExample{类程序{公共静态void Main (string [] args) {IServiceProvider serviceProvider = ConfigureServices ();var主机= serviceProvider.GetService < IWorkflowHost > ();host.RegisterWorkflow < SampleWorkflow > ();host.Start ();host.StartWorkflow(“样本”);Console.ReadLine (); host.Stop(); } private static IServiceProvider ConfigureServices() { IServiceCollection services = new ServiceCollection(); services.AddLogging(); services.AddWorkflow(); services.AddTransient(); var serviceProvider = services.BuildServiceProvider(); return serviceProvider; } } public class SampleWorkflow : IWorkflow { public void Build(IWorkflowBuilder
在这个例子中,我们定义了一个叫做SampleWorkflow的工作流,包括两个步骤,没什么,LastStep。工作流核心库负责以正确的顺序执行这些步骤。主要的方法启动工作流宿主,等待用户按任意键终止程序。
microservices编排是什么?
编排是指分散方法协调microservices之间的相互作用,其中每个服务与其他服务直接沟通,不依赖中央协调器。这种模式将协调交互microservices本身的负担。
在编排中,每个microservice负责维护自己的状态和交换消息或事件与其他microservices协调工作流。这种方法的好处是消除之间的紧密耦合协调器和microservices执行工作流。缺点是增加了microservices之间的点对点通信。
编排有助于实现更大的可伸缩性和灵活性在microservices体系结构中,每个microservice可以独立发展和变化,而不影响整个系统。因为编排消除了依赖中央协调器,它可以提高整个系统的可靠性和灵活性。
编排的例子包括电子商务网站,利用不同的服务提供产品信息,付款处理,跟踪和交付,但不要使用一个集中的服务来控制和协调这些函数。
Microservices编排在c#示例
有不同的方法来实现microservices编排。一种方法是使用一个集中的message broker,如RabbitMQ或ActiveMQ,所有服务可以连接。message broker之间充当中介服务,按需路由消息。
另一种方法是使用发布/订阅模型,其中每个服务发布事件在一个中央的话题,和任何利害关系方可以订阅该主题。这使之间的松散耦合的服务,因为他们不需要事先知道对方。但随着使用message broker方法,仍有一种依赖。
下面是一个基本的例子microservices编排应用在c#中使用MassTransit图书馆。
使用公交,一体化名称空间HelloWorldChoreography{类程序{静态void Main (string [] args) {var busControl = Bus.Factory。CreateUsingInMemory(配置= >{配置。ReceiveEndpoint (“sample-queue端点= > {endpoint.Consumer < SampleConsumer > ();});});busControl.Start ();控制台。WriteLine(“按任意键退出”);Console.ReadLine ();busControl.Stop (); } } public class SampleConsumer : IConsumer{ public Task Consume(ConsumeContext context) { Console.WriteLine("Message received..."); return Task.FromResult(0); } } public class SampleMessage { } }
在这个例子中,消费阶层,SampleConsumer,听SampleMessage sample-queue和处理传入消息的类型。当接收到消息后,消费者将显示文本“消息收到…”在控制台窗口。程序开始时,主要方法触发公交公交一体化,并等待用户按任意键终止程序。
编制与编排
编排,顾名思义,就是有集中控制microservices架构的各种服务。这可能被视为一种优势,因为它给你更多的控制如何相互作用的各种服务。然而,这也意味着对整个系统的任何更改需要协调器本身的变化,可以复杂和耗时。
编排,另一方面,需要一个更加分散的方法。每个服务负责自己的交互与其他服务,这意味着不需要一个集中的协调器。这可以使开发和部署更简单和更快,因为没有依赖于一个中央系统。然而,编排也可以让调试和故障诊断更加困难,因为它可以更难以理解的各种服务是如何交互的。
应该使用哪一个?
协调和编排是一个成功的microservices架构的关键元素,可以显著提高性能、可伸缩性和可靠性。通过编制,microservices可以更有效地相互交流,使他们快速、轻松地适应规模更大的工作量。
编排定义一个精确的每个microservice必须遵守的一系列步骤,这是有利于识别和解决复杂的相互依赖关系的服务。此外,编制允许管理和监控业务逻辑在一个地方。
编排,另一方面,是策划的实践microservices一起没有一个中央协调点。这允许每个服务独立运作,同时仍然大架构的一部分。
编排可以用来管理既简单又复杂的部署。它可以自动配置资源,服务的扩展,应用程序的更新和补丁。编制也可以提供洞察单个服务的性能和识别需要解决的问题。
编排是一个不错的选择,如果您的应用程序需要频繁的更新或新版本。它可以用来定义如何服务相互作用,但它不能自动化管理的交互。编排最适合管理小部署或测试的目的。
一个混合的方式
编配之间的选择和编排取决于特定的体系结构的要求和需求。一般来说,编排时使用需要一个集中的权威控制microservices之间的交互,而编排时使用需要一个更加分散的和自主服务之间的交互。
另外,人们可能会选择相结合的混合方法编排和编排。从协调器混合方法可以保护您的应用程序失败。但是,这种选择将取决于应用程序的需求和组织的目标。
编制和编排起到至关重要的作用在管理复杂的系统,允许更快的开发周期,更大的可伸缩性,并降低复杂性。通过实施一种或两种方法认真和仔细,您可以创建一个健壮的microservices可伸缩架构,安全,容易适应变化的需求。