前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手写中间件之——并行框架(1 并行框架的应用场景和需求)

手写中间件之——并行框架(1 并行框架的应用场景和需求)

作者头像
天涯泪小武
发布2020-01-13 15:54:31
1.7K0
发布2020-01-13 15:54:31
举报
文章被收录于专栏:SpringCloud专栏SpringCloud专栏

我们为什么会需要一个带任务顺序编排的并行框架

1 复杂的微服务系统间调用

经常会有这样的调用场景:app(或web前端)调用后台的一个接口,该接口接到该请求后,需要调用其他多个微服务来获取数据,最终汇总一个最终结果返回给用户。

譬如用户请求“我的订单”,后台在收到请求后,就需要去调用用户详情rpc、商品详情rpc、库存rpc、优惠券rpc等等很多个服务。有些服务是可以并行去请求的,但有些服务是依赖于某个服务的返回值的(如查库存、优惠券,就依赖于商品详情回复到达后才能去请求)。

2 工作流式的任务编排

譬如在数据清洗领域,经常会有这样的需求,从多个数据源分别拉取数据,做第一步清洗,之后等某一步完成、或某几步都完成、或至少某几步完成,进行下一步任务。整个流程有明显的依赖顺序,以及任意可能存在的阻塞、异常、超时等情况。

如何将整个流程进行编排并让其按照设定顺序执行,并能合理处理异常情况,是一个并行框架所要有的功能。

3 爬虫流程

同工作流编排类似。

所以一个并行框架拥有的功能简单来说,至少应具备下图的这种顺序编排能力。

这在多线程领域,要完成任意顺序编排的多个任务组合,还是有点难度的。不过有一些框架,本意可能并非是做任务编排,但也能完成上图的顺序编排,譬如disruptor,也可以做任意的任务顺序编排。

当然,如果你对jdk1.8里的completeableFuture非常熟悉,通过一大堆的组合包装,也能做到上图的编排,但是它可能称不

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们为什么会需要一个带任务顺序编排的并行框架
    • 1 复杂的微服务系统间调用
      • 2 工作流式的任务编排
        • 3 爬虫流程
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档