การแนะนำ
ข้อกำหนดขั้นต่ำ
เริ่มต้นใช้งาน
ติดต่อเรา
Emissary คือกลไกเวิร์กโฟลว์ที่ขับเคลื่อนด้วยข้อมูลแบบ P2P ซึ่งทำงานในเครือข่ายทรัพยากรการประมวลผล P2P แบบหลายชั้นที่ต่างกันออกไปซึ่งอาจกระจัดกระจายอย่างกว้างขวาง แผนการเดินทางของเวิร์กโฟลว์ไม่ได้วางแผนไว้ล่วงหน้าเหมือนในกลไกเวิร์กโฟลว์ทั่วไป แต่จะถูกค้นพบเมื่อมีการค้นพบข้อมูลเพิ่มเติมเกี่ยวกับข้อมูล โดยทั่วไปจะไม่มีการโต้ตอบกับผู้ใช้ในเวิร์กโฟลว์ของ Emissary แต่ข้อมูลจะได้รับการประมวลผลในลักษณะที่มุ่งเน้นเป้าหมายจนกว่าจะถึงสถานะเสร็จสมบูรณ์
Emissary สามารถกำหนดค่าได้สูง แต่ในการใช้งานพื้นฐานนี้แทบไม่ได้ทำอะไรเลย ผู้ใช้เฟรมเวิร์กนี้ได้รับการคาดหวังให้จัดเตรียมคลาสที่ขยาย emissary.place.ServiceProviderPlace เพื่อดำเนินการกับเพย์โหลด emissary.core.IBaseDataObject
สามารถทำสิ่งต่างๆ ได้มากมายและขั้นตอนการทำงานได้รับการจัดการเป็นขั้นตอน เช่น การศึกษา ID การประสานงาน การเปลี่ยนแปลง การวิเคราะห์ IO การทบทวน
คลาสที่รับผิดชอบในการกำหนดทิศทางเวิร์กโฟลว์คือ emissary.core.MobileAgent และคลาสที่ได้รับจากคลาสนั้น ซึ่งจัดการพาธของชุดของอ็อบเจ็กต์เพย์โหลดที่เกี่ยวข้องผ่านเวิร์กโฟลว์และ emissary.directory.DirectoryPlace ซึ่งจัดการเซอร์วิสที่มีอยู่ ต้นทุน และ คุณภาพและเชื่อมต่อเครือข่าย P2P
ระบบปฏิบัติการ Linux หรือ MacOSX
เจดีเค 11
อาปาเช่ มาเวน 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 ที่รันทุกอย่าง อยู่ในไดเรกทอรีทูตระดับบนสุด สคริปต์รันคลาส emissary.Emissary ซึ่งมีคำสั่ง Picocli หลายคำสั่งที่พร้อมใช้งานเพื่อจัดการฟังก์ชันต่างๆ
หากสคริปต์ Emissary รันโดยไม่มีอาร์กิวเมนต์ใดๆ คุณจะได้รับรายการคำสั่งย่อยคอนฟิกูเรชันทั้งหมดและคำอธิบายโดยย่อ
./emissary
การรัน ./emissary help
จะให้ผลลัพธ์เหมือนกับการรันโดยไม่มีข้อโต้แย้ง หากคุณต้องการดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับคำสั่ง ให้เพิ่มชื่อคำสั่งหลังวิธีใช้ ตัวอย่างเช่น ดูอาร์กิวเมนต์ทั้งหมดพร้อมคำอธิบายสำหรับคำสั่ง เซิร์ฟเวอร์ ให้รัน:
./emissary help server
คำสั่งที่เหลือทั้งหมดมีอาร์กิวเมนต์ (-b หรือ --projectBase) ที่สามารถตั้งค่าได้ แต่จะต้องตรงกับ PROJECT_BASE
ไดเร็กทอรี config มีค่าเริ่มต้นเป็น /config แต่สามารถส่งผ่านด้วย (-c หรือ --config) ได้ เมื่อเรียกใช้จากการชำระเงิน git คุณควรใช้ เป้าหมาย เป็น projectBase คุณสามารถแก้ไขไฟล์ปรับแต่งใน target/config ได้อย่างอิสระก่อนที่จะเริ่ม
การบันทึกได้รับการจัดการโดยการล็อกแบ็ค คุณสามารถชี้ไปที่ไฟล์ที่กำหนดเองด้วยอาร์กิวเมนต์ --logbackConfig
ดู help -c สำหรับแต่ละคำสั่งเพื่อรับข้อมูลเพิ่มเติม
คำสั่งนี้จะเริ่มต้นเซิร์ฟเวอร์ Emissary และเริ่มต้นสถานที่ทั้งหมด สถานที่รับ และปล่อยตัวกรองที่ได้รับการกำหนดค่า มันจะเริ่มต้นในโหมดสแตนด์อโลนหากไม่ได้ระบุ -m หรือ --mode ตามค่าเริ่มต้น จำนวน MobileAgents จะถูกคำนวณตามข้อมูลจำเพาะของเครื่อง ในคอมพิวเตอร์ยุคใหม่ สิ่งนี้อาจสูงได้ คุณสามารถควบคุมจำนวนเอเจนต์ได้ด้วย -a หรือ --agents นี่คือตัวอย่างการรัน
./emissary server -a 2
หากไม่มีการกำหนดค่าเพิ่มเติม ระบบจะเริ่มบน http://localhost:8001 หากคุณเรียกดู URL นั้น คุณจะต้องป้อนชื่อผู้ใช้และรหัสผ่านที่กำหนดไว้ใน target/config/jetty-users.properties ซึ่งก็คือ emissary และ emissary123
PickUpPlace เริ่มต้นได้รับการกำหนดค่าให้อ่านไฟล์จาก target/data/InputData หากคุณคัดลอกไฟล์ลงในไดเร็กทอรีนั้น คุณจะเห็น Emissary ประมวลผลไฟล์เหล่านั้น โปรดทราบว่ามีการกำหนดค่าเฉพาะ toUpper และ toLower ดังนั้นเอาต์พุตจะไม่น่าสนใจเกินไป
คำสั่งตัวแทนจะแสดงจำนวนของ MobileAgents สำหรับโฮสต์ที่กำหนดค่าไว้ และสิ่งที่เอเจนต์เหล่านั้นกำลังทำอยู่ ตามค่าเริ่มต้น พอร์ตจะเป็น 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 ด้วยตัวแปรที่กำหนดค่าไว้ การทำเช่นนี้เพื่อให้เชลล์สคริปต์สามารถ source $PROJECT_BASE}/env.sh
จากนั้นให้ตัวแปรเหล่านั้นพร้อมใช้งานโดยไม่ต้องกังวลกับการกำหนดค่าที่อื่น
คำสั่ง config ช่วยให้คุณเห็นการกำหนดค่าที่มีประสิทธิภาพสำหรับสถานที่/บริการ/ชั้นเรียนที่ระบุ เนื่องจาก Emissary ใช้รสชาติ คำสั่งนี้จะแสดงการกำหนดค่าผลลัพธ์ของคลาสหลังจากใช้รสชาติทั้งหมดแล้ว คำสั่งนี้สามารถใช้เพื่อเชื่อมต่อกับโหนด Emissary ที่รันอยู่โดยการระบุ -h
สำหรับโฮสต์ (ค่าเริ่มต้นคือ localhost) และ -p
สำหรับพอร์ต (ค่าเริ่มต้นคือ 8001) หากต้องการเชื่อมต่อกับ Emissary ที่ทำงานอยู่ในเครื่องบนพอร์ต 8001 คำสั่งใด ๆ ต่อไปนี้จะใช้งานได้:
./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
ในโหมดออฟไลน์ คุณสามารถระบุรสชาติเพื่อดูความแตกต่างในการกำหนดค่าได้:
./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 คลัสเตอร์ เพื่อบอกให้โหนดเชื่อมต่อกับโหนดอื่น ในโหมดคลัสเตอร์ Emissary จะเริ่ม PickUpClient แทน PickUpPlace ดังนั้นคุณจะต้องเริ่มตัวป้อน
ดูที่ target/config/peers.cfg เพื่อดูเพื่อนที่นัดพบ ในกรณีนี้มี 3 โหนดที่ทำงานบนพอร์ต 8001 และ 9001 เป็นเพียงโหนด Emissary โหนดที่ทำงานบน 7001 เป็นตัวป้อน เรามาเริ่มต้น 8001 และ 9001 ในเทอร์มินัลสองแห่งที่แตกต่างกันกัน
./emissary server -a 2 -m cluster ./emissary server -a 2 -m cluster -p 9001
เนื่องจากโหนดเหล่านี้รู้เกี่ยวกับพอร์ต 8001, 9001 และ 7001 คุณจะเห็นข้อผิดพลาดในบันทึกขณะที่พยายามเชื่อมต่อต่อไป
โปรดทราบว่าในการปรับใช้ในโลกแห่งความเป็นจริง เราไม่ได้รันกระบวนการ Emissary หลายกระบวนการบนโหนดเดียวกัน คุณสามารถกำหนดค่าชื่อโฮสต์ด้วย -h
เมื่อโหนดเริ่มต้นที่พอร์ต 8001 และ 9001 เราจำเป็นต้องเริ่มตัวป้อน คำสั่งฟีดใช้พอร์ต 7001 เป็นค่าเริ่มต้น แต่เราจำเป็นต้องตั้งค่าไดเร็กทอรีที่ตัวป้อนจะอ่าน ไฟล์ที่ทิ้งลงในไดเร็กทอรีนั้นจะพร้อมใช้งานสำหรับโหนดของผู้ปฏิบัติงานและควรกระจายงานไปยังคลัสเตอร์ เริ่มต้นฟีดด้วย
mkdir ~/Desktop/feed1 ./emissary feed -i ~/Desktop/feed1/
คุณควรจะสามารถกด http://localhost:8001, http://localhost:9001 และ http://localhost:7001 ในเบราว์เซอร์และดูตำแหน่งที่กำหนดค่าไว้ วางไฟล์บางไฟล์ใน ~/Desktop/feed1 และดูว่า 2 โหนดประมวลผลไฟล์เหล่านั้น อาจใช้เวลาสักครู่เพื่อเริ่มการประมวลผล
เจ้าหน้าที่ในโหมดคลัสเตอร์จะแสดงรายละเอียดเกี่ยวกับ mobileAgents อีกครั้ง โดยเริ่มต้นที่โหนดที่คุณกำหนดค่า (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