我在 .net core 2.2、MongoDB 上创建了大约 10 个微服务,并将它们部署在 Azure Kubernetes 上,但我很难理解如何在服务器上管理它。 所有服务都是相互独立的,但必须按照一定的顺序调用进行处理。 我很困惑设计一种可以根据需要执行这些服务的工作流类型架构的最佳解决方案是什么(Azure 逻辑应用程序或功能应用程序或任何其他建议) 谢谢,
最佳答案
我猜您正在寻找的是所谓的传奇模式,可以通过编排或编排来实现。您可以在这里找到很好的解释:
https://microservices.io/patterns/data/saga.html
PS:对于Azure Functions,您可以使用Durable Functions并非常轻松地实现编排:
public static class OrderSaga
{
[FunctionName("OrderSaga")]
public static async Task<bool> RunOrchestrator(
[OrchestrationTrigger] DurableOrchestrationContext context)
{
var orderId = context.GetInput<Guid>();
Task<bool> orderResponse = context.CallActivityAsync<bool>("OrderActivity", orderId);
Task<bool> paymentResponse = context.CallActivityAsync<bool>("PaymentActivity", orderId);
await Task.WhenAll(orderResponse, paymentResponse);
if (orderResponse.Result == false || paymentResponse.Result == false)
{
await context.CallActivityAsync("RollbackOrderActivity", orderId);
await context.CallActivityAsync("RollbackPaymentActivity", orderId);
return false;
}
return true;
}
关于azure - 如何在azure上设计微服务系统并使用工作流程按顺序调用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58933118/