日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Camel在Amazon上构建分布式工作流应用程序

發(fā)布時間:2023/12/3 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Camel在Amazon上构建分布式工作流应用程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

帶有SNS-SQS的管道
工作流由按動態(tài)條件確定的特定順序執(zhí)行的獨立任務(wù)組成。 工作流通常代表業(yè)務(wù)流程,例如電子商務(wù)商店中的訂單處理步驟。 Amazon Web Services提供了各種工具來構(gòu)建分布式和可擴(kuò)展的工作流應(yīng)用程序。 構(gòu)建此類應(yīng)用程序的一種方法是使用主題和隊列來連接工作流程中的不同步驟。 然后,我們可以使用發(fā)布/訂閱,競爭的使用者和其他機(jī)制來擴(kuò)展我們的應(yīng)用程序,甚至最簡單的應(yīng)用程序都將具有類似于以下內(nèi)容的形狀:


流水線的每個步驟都通過隊列連接到下一個步驟,并且每個步驟執(zhí)行一些操作并決定下一步是什么。 此外,使用SNS / SQS還涉及其他一些底層任務(wù): –序列化/反序列化數(shù)據(jù) –確保SQSmessages的一致性(FIFO順序) –確保不超過消息大小 –發(fā)明某種審計支持 –訂戶排隊到主題,分配權(quán)限 –管理DLQ 最后,它可以工作,但是克服這些技術(shù)挑戰(zhàn)所需的時間與編寫可提供業(yè)務(wù)價值的實際代碼所花費的時間一樣多。

簡單的工作流程服務(wù)
另一方面,SWF提供了用于編寫分布式異步工作流應(yīng)用程序的更高級別的API。 它會自動對數(shù)據(jù)進(jìn)行序列化/反序列化,管理應(yīng)用程序狀態(tài),提供可審核性,確保強(qiáng)一致性,支持多個版本。 最重要的是,它確保工作流程編排和業(yè)務(wù)邏輯執(zhí)行分開。 任何典型的SWF應(yīng)用程序都具有以下構(gòu)造塊:


用SWF術(shù)語來說,工作流是實際的模板,描述了流程應(yīng)遵循的不同步驟。 而工作流執(zhí)行就是該模板的運(yùn)行。 Starter –可以啟動,停止和與工作流執(zhí)行交互的過程。 決策者 –協(xié)調(diào)和決定工作流程執(zhí)行下一步的過程。 工作者 –執(zhí)行特定類型任務(wù)的過程。 SWF控制臺 –提供完整的可見性和執(zhí)行控制權(quán)。 工作流執(zhí)行示例可以通過以下步驟進(jìn)行:啟動程序啟動工作流執(zhí)行,SWF接收該工作流,詢問決策者下一步是什么,然后根據(jù)該決定將任務(wù)傳遞給適當(dāng)?shù)幕顒庸ぷ髡摺?一旦收到了來自活動工作人員的結(jié)果,SWF就會再次向決策者詢問下一步,并且取決于響應(yīng)是否可以執(zhí)行其他工作人員。 該流程一直持續(xù)到?jīng)Q策者答復(fù)工作流程完成為止。 您可以看到?jīng)Q策者如何協(xié)調(diào)工作流的每個步驟以及活動工作人員如何執(zhí)行各個任務(wù)。 所有這些都由SWF管理,并且可以在任何階段進(jìn)行審核。

為什么要使用駱駝?
亞馬遜提供的Java客戶端通過使用注釋生成代理類來訪問SWF服務(wù)來工作。 生成和使用代理類以及從啟動器到?jīng)Q策器以及從決策器到活動工作者的依賴關(guān)系的整個過程并不是很愉快。 還有什么比使用駱駝路線進(jìn)行編排和使用另一條路線進(jìn)行實際活動更好的呢? 結(jié)果是現(xiàn)在在Camel master中的Camel SWF組件。 Camel-swf組件具有兩種類型的端點: 工作流活動 。 工作流生產(chǎn)者允許我們啟動,終止,取消,發(fā)信號,獲取狀態(tài)或檢索工作流執(zhí)行的整個執(zhí)行歷史。 在我們的圖中,它表示啟動器。 這是如何開始執(zhí)行工作流程的示例:

from("direct:start").setHeader(SWFConstants.OPERATION, constant("START")).log("Starting a workflow task ${body}").to("aws-swf://workflow?domainName=demo&workflowList=demo-flow&version=1.0&eventName=processWorkflows");

工作流使用者是決定者。 它從SWF服務(wù)接收決策任務(wù),并計劃執(zhí)行活動任務(wù)或指示工作流執(zhí)行已完成。 這是一條無狀態(tài)的確定性路線,只有工作才能安排任務(wù):

from("aws-swf://workflow?domainName=demo&workflowList=demo-flow&version=1.0&eventName=processWorkflows").log("Received a workflow task ${body}").filter(header(SWFConstants.ACTION).isEqualTo(SWFConstants.EXECUTE_ACTION)).to("aws-swf://activity?domainName=demo&activityList=demo-activity&version=1.0&eventName=processActivities");

活動端點允許我們與活動任務(wù)進(jìn)行交互。 活動生產(chǎn)者用于安排活動任務(wù),并且只能在決策者路線(實際上是決策者線程)中使用。 這是因為只有決策者才能安排活動任務(wù)。 我們圖中必須提供實現(xiàn)的最后一個框是活動工作程序,可以使用活動使用者來創(chuàng)建活動工作程序。 該端點將從SWF接收活動任務(wù),執(zhí)行任務(wù)并將結(jié)果返回給SWF。 這是實際執(zhí)行業(yè)務(wù)邏輯的部分:

from("aws-swf://activity?domainName=demo&activityList=demo-activity&version=1.0&eventName=processActivities").log("Received Activity task ${body}").setBody(constant("1"));

因此,任何SWF應(yīng)用程序都由啟動執(zhí)行程序的啟動程序(工作流生產(chǎn)者),接收決策任務(wù)并計劃活動任務(wù)的決策者(工作消費者)(使用活動生產(chǎn)者)和執(zhí)行任務(wù)的活動工作者(活動消費者)組成。 這些端點之間的通信是異步的,一致的,并且由SWF服務(wù)進(jìn)行管理。
它不是最容易使用的組件,但是它具有簡單且可擴(kuò)展的體系結(jié)構(gòu)。 PS:感謝我的前經(jīng)理S. Wheeler讓我將此組件貢獻(xiàn)給Camel社區(qū)。

參考:來自O(shè)FBIZian博客的JCG合作伙伴 Bilgin Ibryam 使用Camel在Amazon上構(gòu)建分布式工作流應(yīng)用程序 。

翻譯自: https://www.javacodegeeks.com/2013/12/building-distributed-workflow-applications-on-amazon-with-camel.html

總結(jié)

以上是生活随笔為你收集整理的使用Camel在Amazon上构建分布式工作流应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。