当前位置:首页 > 报告详情

敖小剑《让服务编排和分布式事务变得简单》.pdf

上传人: s**** 编号:157220 2024-03-16 46页 2.21MB

1、?敖剑微软 Principal Software Engineer 背景:微服务分层与工作流 微服务分层架构 工作流的通用模式 工作流的挑战微服务分层架构原子微服务组合微服务API/边缘微服务UserInventoryPaymentDeliveryNotificationproductLoginBFF移动应用API外部系统OrderProcessOrder listshoppingcar工作流通用模式任务链模式 Fan-out/Fan-in 模式 观察者模式外部系统交互模式工作流是实现服务编排/组合微服务的通用方案。任务链模式Activity1Activity2Activity3workflo

2、w挑战如果其中一个活动因为 可恢复故障 而长时间失败,要如何处理?可否自动重试工作流?可否从上一次失败的点重新开始并取回所有的工作流状态?X可恢复故障服务过载服务不可用慢响应超时临时性错误熔断限流进程崩溃网络异常工作流状态Activity1Activity2Activity3workflowWorkflow inputWorkflow outputWorkflowInput workflowInput=ctx.getInput(WorkflowInput.class);/some business logic/local variablesString orderId=ctx.getInsta

3、nceId();Object output1=ctx.callActivity(Activity1.class.getName(),input1).await();/some business logicObject output2=ctx.callActivity(Activity2.class.getName(),input2).await();/some business logic/here!Object output3=ctx.callActivity(Activity3.class.getName(),input3).await();/some business plete(wor

4、kflowOutput);Activity input/outputActivity input/outputActivity input/outputhere!所有的变量都是状态Fan-out/Fan-in 模式Activity1workflowActivity2Activity3X如何控制并发度?如何触发后续的聚合步骤?挑战观察者模式PollStatusActivityworkflowSleepActivityNotifyActivityNotificationsStatues休眠时间可能是动态的,取决于业务逻辑长时间观察Sleep time?挑战:外部系统交互模式RequestAppro

5、valActivityPreview ActivityNext Activity人工操作的等待时间非常长人工操作ApprovedRejectedTimeout暂停并等待外部系统执行某些操作常见场景:暂停并等待人工操作案例:等待请求审核,等待用户付款挑战结论:理想很美好,实现很骨感Activity1Activity2Activity3workflowstartCompletedRapidly Succeed Rapidly SucceedRapidly Succeed理想模式长时间重试长时间观察等待外部系统交互现实模式工作流挑战:容错&长时间运行&有状态workflowBounded Conte

6、xtBounded ContextBounded Contextnetworknetworknetwork生命周期不一致服务不可用有状态&长时间运行容错工作流状态持久化不友好的用户体验WorkflowInput workflowInput=ctx.getInput(WorkflowInput.class);String orderId=ctx.getInstanceId();Input1 input1=/some business logicObject output1=ctx.callActivity(Activity1.class.getName(),input1).await();Inp

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了微服务分层与工作流的相关概念,以及Dapr Workflow的设计理念和实现细节。微服务分层架构和原子微服务组合是实现服务编排的通用方案,而工作流则面临挑战,如可恢复故障、自动重试、从失败点重新开始等。Dapr Workflow旨在简化业务逻辑和集成的编写,支持有状态和长时间运行的应用程序,并提供了事件源、重放、补偿事务等特性来解决工作流中的挑战。Dapr Saga模式则通过确保所有操作成功完成或进行补偿来支持长时间运行的工作流。文章还通过伪代码和Java代码示例说明了如何在Dapr Workflow中编写业务逻辑。
"Dapr Workflow如何简化微服务编排?" "如何使用Dapr Workflow实现容错和长时间运行的工作流?" "Dapr Workflow如何支持Saga模式以保证微服务事务的一致性?"
客服
商务合作
小程序
服务号
折叠