<small id='1DNCSv'></small> <noframes id='lbrhdvFkp'>

  • <tfoot id='i9tWb5'></tfoot>

      <legend id='sa4SJPqOEj'><style id='PD94zVx'><dir id='3L1eM'><q id='v8LxFf'></q></dir></style></legend>
      <i id='2fqTvC9O'><tr id='kcqlCFIs'><dt id='8qJu'><q id='Tid1GZ9BY3'><span id='4rc5pT'><b id='Z0oR'><form id='WTV5'><ins id='x1vlpsXn'></ins><ul id='luziNGUI8'></ul><sub id='svYXO'></sub></form><legend id='HRZ1L8V'></legend><bdo id='uXz4Gk5L'><pre id='BYiwnKve'><center id='cv6kG'></center></pre></bdo></b><th id='nERH'></th></span></q></dt></tr></i><div id='T9u0o1tO'><tfoot id='SrcMh'></tfoot><dl id='45DBfM2v'><fieldset id='Yuypfw'></fieldset></dl></div>

          <bdo id='M01EWx'></bdo><ul id='cda7LqUXK'></ul>

          1. <li id='hHZAx'></li>
            登陆

            章鱼彩票安卓-一个Netflix开发的微服务编列引擎,支撑可视化工作流界说

            admin 2019-09-06 180人围观 ,发现0个评论

            导读:相关于传统架构,微服务架构下更需求经过各微服务之间的协作来完结一个完好的事务流程,可以说服务编列是微服务架构下的必备功用。Netflix Conductor作为服务编列的佼佼者,从推出就引起很大重视。本文浅显易懂的介绍了起基本功用和规划。

            Netflix内容渠道工程团队支撑了许多事务,这些事务流程由微服务使命异步驱动的。 其间一些使命是继续数天的长时刻进程。 这些进程在为全球观众供给字幕方面发挥着至关重要的效果。

            比方:

            • Studio合作伙伴内容集成

            • 来自合作伙伴的依据IMF的内容集成

            • 在Netflix中设置新标题

            • 接纳内容,编码和布置到CDN

            传统做法中,这些进程是暂时编列的,运用pub/sub 组合起来,直接进行REST调用,并运用数据库来办理状况。 但是,跟着微服务数量和流程复杂性的增加,假如没有中心和谐器,就无法了解这些分布式作业流(workflow)。

            咱们将Conductor“作为编列引擎”构建,以满意以下需求,在应用程序中消除了模板,并供给反响流:

            • 运用依据JSON DSL 的蓝图界说履行流程。

            • 盯梢和办理作业流。

            • 可以暂停,康复和重新启动进程。

            • 用户界面可视化处理流程。

            • 可以在需求时同步处理一切使命。

            • 可以扩展到数百万个并发运转的流程。

            • 由客户端提取出来的的队伍服务支撑。

            • 可以经过HTTP或其他方法操作,例如GRPC。

            Conductor旨在满意上述需求,现在已在Netflix运用了将近一年。 迄今为止,它调度超越260万个作业流,从简略的线性作业流到运转多天的十分复杂的动态作业流。

            现在Conductor现已开源,咱们期望Conductor可以服务于有相似需求的场景,并提高其才能。 你可以在此处找到Conductor的开发人员文档。

            为什么不进行点对点编列?

            跟着事务需求和复杂性的增加,运用点对点使命编列会难以扩展。 发布/订阅模型适用于最简略的流程,也有一些问题:

            • 流程涣散在多个应用程序的代码中

            • 一般环绕输入/输出,SLA等存在严密章鱼彩票安卓-一个Netflix开发的微服务编列引擎,支撑可视化工作流界说耦合和假定,PUB/SUB难以习惯不断改动的需求

            • 简直没有办法体系地答复“设置电影还有什么没完结”?

            为什么是微服务?

            在微服务范畴,许多事务流程主动化都是经过和谐服务来完结的。 Conductor支撑跨服务的和谐,一同供给交互式操控和可视性。 可以跨进行微服务和谐,有助于咱们运用现有服务构建新流程或更新现有流程,然后十分快速地遍及Conductor。

            架构总览

            引擎的中心是状况机服务,即Decider服务。 当作业流事情发作时(例如使命完结,失利等),Decider将作业流蓝图与作业流的当时状况相匹配,辨认下一个状况,并组织恰当的使命,或更新作业流的状况。

            Decider与分布式队伍一同运用来办理计划使命。咱们运用dyno-queues作为分布式推迟队伍,dyno-queues运用dynomite作为K-V存储。该队伍已于本年早些时候开源,欲知概况请看这儿。

            Task Worker完结

            task由worker应用程序完结,其经过API层进行通讯。 woker完结了可由流程引擎调用的REST接口,或许经过定时查看挂起使命的状况来达到此意图。 Worker实际上是幂等的无状况函数。 轮询模型答应处理worker的压力,并在或许的情况下依据队伍深度支撑主动弹性。 Conductor供给API以查看worker的作业负载巨细。

            API层

            API经过HTTP揭露 - 运用HTTP可以轻松地与不同客户端集成。 增加其他协议(例如gRPC)也是很简略的。

            存储

            咱们运用Dynomite作为存储引擎,并运用Elasticsearch来索引履行流程。 存储API是可插拔的,可以适用于各种存储体系,包含传统的RDBMS或Apache Cassandra。

            要害概念

            作业流界说

            运用依据JSON的DSL界说作业流。 作业流蓝图界说了一系列需求履行的使命。 每个使命是操控使命(例如,fork,join,决议计划,子作业流等)或worker使命(译者注:供给详细的数据处理功用)。 作业流界说支撑版别,可以灵敏地办理晋级和搬迁。

            作业流界说概述:

            { "name": "workflow_name", "description": "Description of workflow", "version": 1, "tasks": [ { "name": "name_of_task", "taskReferenceName": "ref_name_unique_within_blueprint", "inputParameters": { "movieId": "${workflow.input.movieId}", "url": "${workflow.input.fileLocation}" }, "type": "SIMPLE", ... (any other task specific parameters) }, {} ... ], "out章鱼彩票安卓-一个Netflix开发的微服务编列引擎,支撑可视化工作流界说putParameters": { "encoded_url": "${encode.output.location}" }}

            使命界说

            每个使命的行为都由其模板操控。 使命界说为每个使命供给操控参数,例如超时,重试战略等。使命既可以是由应用程序完结的worker使命,也可以是由编列服务履行的体系使命。 Conductor供给一些开箱即用的体系使命,例如Decision,Fork,Join,Sub Workflows,而且答应参加自界说体系使命的SPI。 咱们现已增加了对HTTP使命的支撑,这有助于调用REST服务。

            使命章鱼彩票安卓-一个Netflix开发的微服务编列引擎,支撑可视化工作流界说界说:

            { "name": "encode_task", "retryCount": 3, "timeoutSeconds": 1200, "inputKeys": [ "sourceRequestId", "qcElementType" ], "outputKeys": [ "state章鱼彩票安卓-一个Netflix开发的微服务编列引擎,支撑可视化工作流界说", "skipped", "result" ], "timeoutPolicy": "TIME_OUT_WF", "retryLogic": "FIXED", "retryDelaySeconds": 600, "responseTimeoutSeconds": 3600}

            输入输出

            使命的输入是一种映射,其作为作业流实例化的一部分或某些其他使命的输出。 答应将来自作业流或其他使命的输入/输出作为随后履行的使命的输入。 例如,可以将编码使命的输出作为输入供给给发布电视直播播放器使命以布置到CDN。

            使命输入界说:

            { "name": "name_of_task", "taskReferenceName": "ref_name_unique_within_blueprint", "inputParameters": { "movieId": "${workflow.input.movieId}", "url": "${workflow.input.fileLocation}" }, "type": "SIMPLE" }

            详细比如

            这儿总共有3个worker使命和一个操控使命:

            • 内容查看:查看输入文件是否正确/完好

            • 编码:生成视频编码

            • 发布:发布到CDN

            这三个使命由不同的worker完结,这些worker运用使命API轮询待处理的使命。 这些使命是幂等使命,worker依据给予使命的输入进行操作,履行处理流程并更新状况。

            在完结每个使命时,Decider会依据蓝图(对应于作业流实例的版别)评价作业流实例的状况,并标识要调度的下一组使命,或许在完结一切使命后符号作业流为完结。

            UI

            UI是监督和扫除作业流程履行毛病的首要手法。 经过依据各种参数(包含输入/输出参数)的查找,UI完结了处理流程的可视化,并供给蓝图和其采纳的履行途径的可视化表明,以更好地了解流程履行的进程。 关于每个作业流实例,UI供给每个使命履行的详细信息,并供给以下详细信息:

            • 使命调度的时刻戳,worker接纳并完结使命的时刻戳。

            • 假如使命失利,失利的原因是什么。

            • 重试次数

            • 履行使命的主机。

            • 使命的输入和输出。

            以下是UI展现:

            其他计划

            AMAZON SWF

            前期咱们运用过AWS SWF。 但是考虑到SWF的一些约束,咱们挑选构建Conductor:

            • 需求依据蓝图的编列,而不是SWF要求的编程决议计划。

            • 用于作业流的可视化UI。

            • 更需求同步API(而不是朴实依据音讯的方法)

            • 需求为作业流和使命索引输入和输出,以及依据此索引的查找作业流的才能。

            • 需求保护一个独自的数据存储来保存作业流事情以从毛病,查找等中康复。

            Amazon Step Function

            最近宣告的AWS Step Functions增加了一些咱们在编列引擎中需求的功用。 Conductor有或许选用states言语(译者注:这也是一种依据Json的用于描绘状况机的言语)来界说作业流程。

            统计数据

            以下是咱们一年多来在出产环境运转Conductor的统计数据。 内容渠道工程中运用这些作业流来支撑内容获取和编码等作业。

            未来功用

            • 支撑AWS Lambda(或相似)功用,作为serverless 使命。

            • 与容器编列结构更严密的集成,答应worker实例主动扩展。

            • 记载每个使命的履行数据,有助于毛病扫除。

            • 可以从UI创建和办理作业流蓝图。

            • 支撑states言语。

            原文地址:

            https://medium.com/netflix-techblog/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40

            本文由方圆翻译。转载本文请注明出处,欢迎更多小伙伴参加翻译及投稿文章的队伍,概况请戳大众号菜单「联络咱们」。

            高可用架构

            改动互联网的构建方法

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP