介紹
最低要求
入門
聯絡我們
Emissary 是一種基於 P2P 的資料驅動工作流程引擎,運作在異質的、可能廣泛分散的多層 P2P 運算資源網路中。工作流行程並不像傳統工作流引擎那樣預先計劃,而是隨著有關數據的更多資訊的發現而被發現。 Emissary 工作流程中通常沒有使用者交互,而是以目標導向的方式處理數據,直到達到完成狀態。
Emissary 具有高度可配置性,但在此基本實作中幾乎不執行任何操作。該框架的使用者應提供擴展 emissary.place.ServiceProviderPlace 的類,以在 emissary.core.IBaseDataObject 有效負載上執行工作。
可以完成多種操作,工作流程可以分階段進行管理,例如研究、ID、協調、轉換、分析、IO、審核。
負責指導工作流程的類別是 emissary.core.MobileAgent 及其衍生類,它們透過工作流程管理一組相關有效負載物件的路徑,而 emissary.directory.DirectoryPlace 則管理可用服務及其成本和資訊。 P2P 網路連線。
Linux 或 MacOSX 作業系統
JDK 11
阿帕契Maven 3.5+
通讀 DEVELOPING.md 指南,以了解有關安裝所需元件、提取原始程式碼、建置和運行 Emissary 的資訊。
執行mvn clean package
來編譯、測試和打包 Emissary
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.132 s [INFO] Finished at: 2022-01-10T22:31:05Z [INFO] ------------------------------------------------------------------------
Emissary 中有一個 bash 腳本可以執行所有內容。 它位於頂級 Emissary 目錄中。該腳本運行 emissary.Emissary 類,該類具有多個可用於處理不同功能的 Picocli 命令。
如果執行emissary腳本時不帶任何參數,您將獲得所有設定子命令的清單和簡要說明。
./emissary
運行./emissary help
將為您提供與不帶參數運行相同的輸出。 如果您想查看某個命令的更詳細信息,請在幫助後面添加命令名稱。 例如,查看伺服器命令的所有參數和描述,運行:
./emissary help server
其餘指令都有可設定的(-b 或 --projectBase)參數,但它必須與 PROJECT_BASE 相符。
config 目錄預設為 /config 但也可以使用(-c 或 --config)傳入。 從 git checkout 運行時,您應該使用target作為專案庫。 在開始之前,請隨意修改 target/config 中的設定檔。
日誌記錄由 logback 處理。您可以使用--logbackConfig參數指向自訂檔案。
請參閱每個命令的說明 -c以獲取更多資訊。
此指令將啟動 Emissary 伺服器並初始化所有已配置的地點、接送地點和投遞過濾器。 如果未指定-m 或 --mode ,它將以獨立模式啟動。 預設情況下,MobileAgent 的數量是根據計算機的規格計算的。 在現代計算機上,這個值可能很高。 您可以使用-a 或 --agents控制代理的數量。 這是一個運行範例。
./emissary server -a 2
無需進一步配置,它將在 http://localhost:8001 上啟動。 如果您瀏覽到該網址,則需要輸入 target/config/jetty-users.properties 中定義的使用者名稱和密碼,即 emissary 和 emissary123。
預設 PickUpPlace 配置為從target/data/InputData讀取檔案。 如果將檔案複製到該目錄中,您將看到 Emissary 正在處理它們。 請記住,僅配置了 toUpper 和 toLower,因此輸出不會太有趣。
Agents 指令顯示已設定主機的 MobileAgent 數量以及這些代理程式正在執行的操作。 預設情況下,連接埠為 9001,但您可以使用-p 或 --port來變更它。
假設您透過上面的伺服器命令在 8001 上運行,請嘗試:
./emissary agents -p 8001
池是節點代理的折疊視圖。 它也預設為連接埠 9001。
./emissary pool -p 8001
此命令對於叢集更有用,因為它是每個節點的更易於理解的視圖。
Env 命令需要運行伺服器。 它會向伺服器詢問一些配置值,例如 PROJECT_BASE 和 BIN_DIR。 如果沒有參數,它將轉儲未格式化的 json 回應。
./emissary env
但您也可以轉儲適合在 bash 中獲得的回應。
./emissary env --bashable
啟動 Emissary 伺服器實際上會呼叫此端點並使用配置的變數轉儲 $PROJECT_BASE}/env.sh 。 這樣做是為了讓 shell 腳本可以source $PROJECT_BASE}/env.sh
,然後讓這些變數可用,而不必擔心在其他地方配置它們。
config 指令可讓您查看指定位置/服務/類別的有效設定。由於 Emissary 使用風味,因此此指令將顯示套用所有風味後類的最終配置。此命令可用於透過指定-h
表示主機(預設為 localhost)和-p
表示連接埠(預設為 8001)來連接到正在執行的 Emissary 節點。若要連接至連接埠 8001 上本機執行的 Emissary,可以使用下列任一命令:
./emissary config --place emissary.place.sample.ToLowerPlace ./emissary config --place emissary.place.sample.ToLowerPlace -h localhost -p 8001
或者,您可以使用--offline
指定離線模式,以使用本機 CONFIG_DIR 中指定的設定檔:
./emissary config --place emissary.place.sample.ToLowerPlace --offline
在離線模式下,您可以提供flavor來查看配置的差異:
./emissary config --place emissary.place.sample.ToLowerPlace --offline --flavor STANDALONE,TESTING
這些對於查看有效配置很有用,但我們也可以在詳細模式下運行以查看所有配置文件以及最終輸出。這是透過--detailed
標誌控制的:
./emissary config --place emissary.place.sample.ToLowerPlace --detailed
或在離線模式下:
./emissary config --place emissary.place.sample.ToLowerPlace --offline --detailed
Emissary 獨立運作很有趣,但運行叢集更適合實際工作。 叢集運行的方式和獨立運行類似,但是需要-m cluster來告訴節點連接到其他節點。 在叢集模式下,Emissary 也會啟動 PickUpClient 而不是 PickUpPlace,因此您需要啟動 feeder。
查看 target/config/peers.cfg 以查看集合點。 在本例中,有 3 個。 7001上運行的節點是饋線。 那麼讓我們在兩個不同的終端機中啟動 8001 和 9001。
./emissary server -a 2 -m cluster ./emissary server -a 2 -m cluster -p 9001
由於這些節點都知道連接埠 8001、9001 和 7001,因此當它們繼續嘗試連線時,您將在日誌中看到錯誤。
請注意,在實際部署中,我們不會在同一節點上執行多個 Emissary 進程。 您可以使用-h配置主機名稱。
在連接埠 8001 和 9001 上啟動節點後,我們需要啟動 feeder。 feed 指令預設使用連接埠 7001,但我們需要設定 feeder 從中讀取的目錄。 放入該目錄的檔案將可供工作節點獲取,並且工作應該在叢集之間分配。 啟動 feed
mkdir ~/Desktop/feed1 ./emissary feed -i ~/Desktop/feed1/
您應該可以在瀏覽器中輸入 http://localhost:8001、http://localhost:9001 和 http://localhost:7001 並查看設定的位置。 將一些檔案放入 ~/Desktop/feed1 中,然後查看 2 個節點處理它們。 他們可能需要一分鐘才能開始處理
集群模式下的代理再次顯示有關移動代理的詳細資訊。 它從您配置的節點(預設為 localhost:9001)開始,然後呼叫它所知道的所有節點並取得相同的資訊。 運行它:
./emissary agents --cluster
集群模式下的池也與獨立模式下的池執行相同的操作。 預設情況下,它從節點 (locahost:9001) 開始,然後轉到它所知道的所有節點並聚合叢集的折疊視圖。 運行它
./emissary pool --cluster
拓撲與配置的節點(預設為 localhost:8001)進行通信,並與它知道的每個節點進行通信。響應是所有這些節點都知道的,因此您可以建立叢集的網路拓撲。運行它
./emissary topology
金鑰庫和金鑰庫密碼位於 emissary.client.EmissaryClient-SSL.cfg 檔案中。 預設包含並配置的是一個範例金鑰庫,您可以使用它來測試此功能。我們不建議在生產環境中使用範例金鑰庫。 若要使用您自己的金鑰庫,請變更 emissary.client.EmissaryClient-SSL.cfg 檔案中的設定值。
獨立式
./emissary server -p 8443 --ssl --disableSniHostCheck
簇狀
./emissary server -p 8443 --ssl --disableSniHostCheck --mode cluster ./emissary server -p 9443 --ssl --disableSniHostCheck --mode cluster mkdir ~/Desktop/feed1 ./emissary feed -p 7443 --ssl --disableSniHostCheck -i ~/Desktop/feed1/
如果您對此專案有任何疑問或疑慮,可以透過以下方式與我們聯絡:[email protected]
安全問題和漏洞報告請參考SECURITY.md