gpt4 book ai didi

microservices - 单独的微服务只是为了微服务编排?

转载 作者:行者123 更新时间:2023-12-04 03:49:10 24 4
gpt4 key购买 nike

我有一些微服务,其中每个微服务都有用于 CRUD 操作的 REST 端点。
我必须创建一个工作流,该工作流将从一个具有一些初始输入的微服务开始,但稍后来自微服务的输出可以用作其他微服务的输入。可以对这些 REST API 进行一些同步和异步调用。
我已经寻找了一些工作流引擎,但我不认为我可以在不编写任何 Java 代码的情况下创建我的工作流。
我应该为微服务编排编写单独的微服务吗?这个编排微服务将知道确切的工作流,并且可以为启动工作流所需的输入进行配置,它还可以使用一些第三方工作流引擎,如 Camunda 来存储工作流的定义。
为微服务编排而拥有一个单独的微服务是正确的想法吗?到目前为止,现有的微服务对其他微服务一无所知。在将一个微服务的输出用作其他微服务的输入之前,可能需要对其进行按摩。

最佳答案

I have looked for some of the workflow-engines but I do not think thatI can create my workflow without writing any java code.


这取决于您的业务流程和工作流程的复杂性。通常是的,您需要编写一些代码来实现它。

Should I write a separate microservice just for microservicesorchestration? This orchestration microservice will know the exactworkflow and can be configurable for inputs required to start theworkflow, and it can also use some third-party workflow engines likeCamunda to store the definition of the workflow.


是的,你可以这么做。我在使用微服务的系统上做了类似的事情。从长远来看,这将是一个非常好的主意,因为您也可以根据环境配置工作流程。例如,在您的开发机器上,您的工作流程/配置会有所不同。这对于开发人员或 QA 测试他们的解决方案是实用的。另一方面,在暂存/生产中,您可以预先定义客户设置/编排,如果您有新客户或用户,您可以随时重复使用。

Is this correct thinking to have a separate microservice just formicroservices orchestration? Till now the existing microservices haveno idea about the other microservices. There could be a chance thatoutput from one microservice needs to be massaged before using asinput for other microservice.


是的,您可以毫无问题地做到这一点,尽管我会小心编排这个名称,因为这在微服务架构(Docker、Docker-Swarm、Kubernetes)的上下文中具有另一种含义。类似的例子是某种 EndToEndTest 或 Cross micro-service testing-micro-service。这将测试跨微服务业务操作并断言结果。通常业务运营涉及超过 1 个微服务,因此为了测试您可以使用这种方法。该微服务将从多个微服务调用 API,并根据您的业务规则测试结果和场景。另一个例子是种子微服务(这似乎与您在这里尝试做的非常相似)。这个播种机微服务将负责为您的微服务播种(创建)测试数据。此测试数据是一些基本设置/配置数据,您需要这些数据才能使您的微服务业务流程正常工作。这对于需要快速设置环境的开发机器或某些测试环境非常方便。使用这个播种机微服务,您可以轻松设置工作或测试,并根据需要处理环境(数据)。这对于开发机器设置特别有用,但它也可以用于共享测试环境等。这两个示例都是微服务,可以满足您的需求并使您的系统更容易使用。
关于这一点的最后一点说明:

Till now the existing microservices have no idea about the othermicroservices.


它们应该以不知道内部实现或数据(独立数据库)的方式相互抽象,但它们应该相互通信以执行有时是跨微服务的业务操作。就像网上商店示例中的支付微服务和订单微服务的典型示例。因此,他们彼此了解并进行交流很好,但这种交流必须非常仔细地设计,以避免一些常见的陷阱。
它们通常通过 HTTP 或其他协议(protocol)直接调用或通过 Apache Kafka 或 RabbitMq 等消息队列相互通信。您可以在 answer 中了解更多信息.

关于microservices - 单独的微服务只是为了微服务编排?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64676453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com