日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

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


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

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


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

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

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服務接收決策任務,并計劃執行活動任務或指示工作流執行已完成。 這是一條無狀態的確定性路線,只有工作才能安排任務:

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");

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

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

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

參考:來自OFBIZian博客的JCG合作伙伴 Bilgin Ibryam 使用Camel在Amazon上構建分布式工作流應用程序 。

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。