hsi*_*ngh 6 orchestration camunda microservices
我有一些微服务,其中每个微服务都有用于 CRUD 操作的 REST 端点。我必须创建一个工作流程,该工作流程将从一个具有一些初始输入的微服务开始,但随后微服务的输出可以用作其他微服务的输入。可以对这些 REST API 进行一些同步和异步调用。
我已经寻找了一些工作流引擎,但我不认为我可以在不编写任何 java 代码的情况下创建我的工作流。
我应该专门为微服务编排编写一个单独的微服务吗?该编排微服务将了解确切的工作流程,并且可以针对启动工作流程所需的输入进行配置,它还可以使用一些第三方工作流程引擎(例如 Camunda)来存储工作流程的定义。
仅仅为了微服务编排而建立一个单独的微服务是正确的想法吗?到目前为止,现有的微服务还不了解其他微服务。一个微服务的输出在用作其他微服务的输入之前可能需要进行处理。
我已经寻找了一些工作流引擎,但我不认为我可以在不编写任何 java 代码的情况下创建我的工作流。
这取决于您的业务流程和工作流程的复杂性。通常是的,您需要编写一些代码来实现它。
我应该专门为微服务编排编写一个单独的微服务吗?该编排微服务将了解确切的工作流程,并且可以针对启动工作流程所需的输入进行配置,它还可以使用一些第三方工作流程引擎(例如 Camunda)来存储工作流程的定义。
是的,你可以这么做。我在使用微服务的系统上做了类似的事情。从长远来看,这将是一个非常好的想法,因为您也可以根据环境配置工作流程。例如,在您的开发计算机上,您会有一些不同的工作流程/配置。这对于开发人员或质量检查人员测试其解决方案非常实用。另一方面,在暂存/生产中,您可以预先定义客户设置/编排,如果您获得新客户或用户,您可以随时重复使用。
仅仅为了微服务编排而建立一个单独的微服务是正确的想法吗?到目前为止,现有的微服务还不了解其他微服务。一个微服务的输出在用作其他微服务的输入之前可能需要进行处理。
是的,你可以毫无问题地做到这一点,尽管我会谨慎对待名称编排,因为这在微服务架构(Docker、Docker-Swarm、Kubernetes)的上下文中具有另一个含义。类似的例子是某种 EndToEndTest 或跨微服务测试微服务。这将测试跨微服务业务运营并断言结果。通常业务运营涉及超过 1 个微服务,因此为了测试您是否可以使用这种方法。该微服务将从多个微服务调用 API,并根据您的业务规则测试结果和场景。另一个例子是类似 seeder-micro-service 的东西(这似乎与您在这里尝试做的非常相似)。该播种微服务将负责向您的微服务播种(创建)测试数据。此测试数据是一些基本设置/配置数据,您需要这些数据才能使微服务业务流程正常工作。这对于开发机器或者一些需要快速设置环境的测试环境来说非常方便。使用此播种器微服务,您可以轻松设置工作或测试,并根据需要处置环境(数据)。这对于开发机器设置特别有用,但它也可以用于共享测试环境等。这两个示例都是微服务,可以满足您的需求并使您的系统使用更加轻松。
关于这一点的最后一点说明:
到目前为止,现有的微服务还不了解其他微服务。
它们应该以一种不知道内部实现或数据(单独的数据库)的方式相互抽象,但它们应该相互通信,以便执行有时跨微服务的业务操作。就像在线商店示例中的支付微服务和订单微服务的典型示例一样。因此,他们相互了解并进行沟通是很好的,但这种沟通必须非常仔细地设计,以避免一些常见的陷阱。它们通常通过 HTTP 或其他协议或通过某些消息队列(如 Apache Kafka 或 RabbitMq 或其他)直接调用来相互通信。您可以在此答案中阅读更多相关信息。
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |