Perkenalan
Persyaratan Minimal
Memulai
Hubungi kami
Emissary adalah mesin alur kerja berbasis data berbasis P2P yang berjalan di jaringan sumber daya komputasi P2P multi-tingkat yang heterogen dan mungkin tersebar luas. Rencana alur kerja tidak direncanakan sebelumnya seperti pada mesin alur kerja konvensional, namun ditemukan seiring dengan semakin banyaknya informasi yang ditemukan tentang data. Biasanya tidak ada interaksi pengguna dalam alur kerja Utusan, melainkan data diproses dengan cara yang berorientasi pada tujuan hingga mencapai status penyelesaian.
Emissary sangat dapat dikonfigurasi, tetapi dalam implementasi dasar ini hampir tidak melakukan apa pun. Pengguna kerangka kerja ini diharapkan menyediakan kelas yang memperluas emissary.place.ServiceProviderPlace untuk melakukan pekerjaan pada muatan emissary.core.IBaseDataObject.
Berbagai hal dapat dilakukan dan alur kerja dikelola secara bertahap, misalnya STUDY, ID, COORDINATE, TRANSFORM, ANALYZE, IO, REVIEW.
Kelas yang bertanggung jawab untuk mengarahkan alur kerja adalah emissary.core.MobileAgent dan kelas turunannya, yang mengelola jalur sekumpulan objek payload terkait melalui alur kerja dan emissary.directory.DirectoryPlace yang mengelola layanan yang tersedia, biayanya, dan kualitas dan menjaga jaringan P2P tetap terhubung.
Sistem operasi Linux atau MacOSX
JDK 11
Apache Maven 3.5+
Bacalah panduan DEVELOPING.md untuk informasi tentang cara menginstal komponen yang diperlukan, mengambil kode sumber, membuat dan menjalankan Emissary.
Jalankan mvn clean package
untuk mengkompilasi, menguji, dan mengemas Utusan
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.132 s [INFO] Finished at: 2022-01-10T22:31:05Z [INFO] ------------------------------------------------------------------------
Ada satu skrip bash di Emissary yang menjalankan semuanya. Itu ada di direktori Utusan tingkat atas. Skrip menjalankan kelas emissary.Emissary yang memiliki beberapa perintah Picocli yang tersedia untuk menangani fungsi berbeda.
Jika skrip utusan dijalankan tanpa argumen apa pun, Anda akan mendapatkan daftar semua subperintah konfigurasi dan deskripsi singkat.
./emissary
Menjalankan ./emissary help
akan memberi Anda hasil yang sama seperti menjalankan tanpa argumen. Jika Anda ingin melihat informasi lebih detail tentang suatu perintah, tambahkan nama perintah setelah bantuan. Misalnya, lihat semua argumen dengan deskripsi untuk perintah server , jalankan:
./emissary help server
Semua perintah lainnya memiliki argumen (-b atau --projectBase) yang dapat disetel, tetapi harus cocok dengan PROJECT_BASE.
Direktori config secara default adalah /config tetapi juga dapat diteruskan dengan (-c atau --config) . Saat menjalankan dari git checkout, Anda harus menggunakan target sebagai projectBase. Jangan ragu untuk memodifikasi file konfigurasi di target/config sebelum Anda mulai.
Logging ditangani oleh logback. Anda dapat menunjuk ke file khusus dengan argumen --logbackConfig .
Lihat bantuan -c untuk setiap perintah untuk mendapatkan info lebih lanjut.
Perintah ini akan memulai server Utusan dan menginisialisasi semua tempat, tempat penjemputan, dan filter pengantaran yang dikonfigurasi. Ini akan dimulai dalam mode mandiri jika -m atau --mode tidak ditentukan. Secara default, jumlah MobileAgents dihitung berdasarkan spesifikasi mesin. Pada komputer modern, angka ini bisa jadi tinggi. Anda dapat mengontrol jumlah agen dengan -a atau --agents . Berikut adalah contoh yang dijalankan.
./emissary server -a 2
Tanpa konfigurasi lebih lanjut, ini akan dimulai pada http://localhost:8001. Jika Anda menelusuri url itu, Anda harus memasukkan nama pengguna dan kata sandi yang ditentukan di target/config/jetty-users.properties, yaitu emissary dan emissary123.
PickUpPlace default dikonfigurasi untuk membaca file dari target/data/InputData . Jika Anda menyalin file ke direktori itu, Anda akan melihat Utusan memprosesnya. Perlu diingat, hanya toUpper dan toLower yang dikonfigurasi, sehingga outputnya tidak akan terlalu menarik.
Perintah agen menunjukkan jumlah Agen Seluler untuk host yang dikonfigurasi dan apa yang dilakukan agen tersebut. Secara default, portnya adalah 9001, tetapi Anda dapat menggunakan -p atau --port untuk mengubahnya.
Dengan asumsi Anda menjalankan 8001 dari perintah server di atas, coba:
./emissary agents -p 8001
Pool adalah tampilan agen yang diciutkan untuk sebuah node. Ini juga defaultnya adalah port 9001. Untuk menjalankan server mandiri, jalankan di atas
./emissary pool -p 8001
Perintah ini lebih berguna untuk sebuah cluster karena tampilan setiap node lebih mudah dicerna.
Perintah Env membutuhkan server untuk berjalan. Ini akan menanyakan beberapa nilai konfigurasi kepada server, seperti PROJECT_BASE dan BIN_DIR. Tanpa argumen, ini akan membuang respons json yang belum diformat.
./emissary env
Namun Anda juga dapat membuang respons yang sesuai untuk sumbernya di bash.
./emissary env --bashable
Memulai server Emissary sebenarnya memanggil titik akhir ini dan membuang $PROJECT_BASE}/env.sh dengan variabel yang dikonfigurasi. Hal ini dilakukan agar skrip shell dapat source $PROJECT_BASE}/env.sh
dan kemudian menyediakan variabel tersebut tanpa harus khawatir dengan mengonfigurasinya di tempat lain.
Perintah config memungkinkan Anda melihat konfigurasi efektif untuk tempat/layanan/kelas tertentu. Karena Emissary menggunakan ragam, perintah ini akan menampilkan konfigurasi kelas yang dihasilkan setelah semua ragam diterapkan. Perintah ini dapat digunakan untuk menyambung ke node Utusan yang sedang berjalan dengan menentukan -h
untuk host (standarnya adalah localhost) dan -p
untuk port (standarnya adalah 8001). Untuk terhubung ke Emissary yang berjalan secara lokal pada port 8001, salah satu perintah berikut akan berfungsi:
./emissary config --place emissary.place.sample.ToLowerPlace ./emissary config --place emissary.place.sample.ToLowerPlace -h localhost -p 8001
Secara opsional, Anda dapat menentukan mode offline menggunakan --offline
untuk menggunakan file konfigurasi yang ditentukan di CONFIG_DIR lokal Anda:
./emissary config --place emissary.place.sample.ToLowerPlace --offline
Dalam mode offline, Anda dapat memberikan ragam untuk melihat perbedaan konfigurasi:
./emissary config --place emissary.place.sample.ToLowerPlace --offline --flavor STANDALONE,TESTING
Ini berguna untuk melihat konfigurasi yang efektif, tetapi kita juga dapat menjalankannya dalam mode verbose untuk melihat semua file konfigurasi beserta hasil akhirnya. Ini dikontrol dengan flag --detailed
:
./emissary config --place emissary.place.sample.ToLowerPlace --detailed
atau dalam mode offline:
./emissary config --place emissary.place.sample.ToLowerPlace --offline --detailed
Emissary menyenangkan jika berdiri sendiri, tetapi menjalankan cluster lebih cocok untuk pekerjaan nyata. Cara menjalankan clustered mirip dengan standalone, tetapi Anda perlu -m cluster untuk memberitahu node agar terhubung ke node lain. Dalam mode berkerumun, Emissary juga akan memulai PickUpClient, bukan PickUpPlace, jadi Anda perlu memulai pengumpan.
Lihat target/config/peers.cfg untuk melihat rekan pertemuan. Dalam hal ini, ada 3. Node yang berjalan pada port 8001 dan 9001 hanyalah node Utusan. Node yang berjalan pada 7001 adalah pengumpan. Jadi mari kita mulai 8001 dan 9001 di dua terminal berbeda.
./emissary server -a 2 -m cluster ./emissary server -a 2 -m cluster -p 9001
Karena semua node ini mengetahui tentang port 8001, 9001, dan 7001, Anda akan melihat kesalahan di log saat mereka terus mencoba menyambung.
Catatan, dalam penerapan di dunia nyata kami tidak menjalankan beberapa proses Utusan pada node yang sama. Anda dapat mengonfigurasi nama host dengan -h .
Dengan node yang dimulai pada port 8001 dan 9001, kita perlu memulai feeder. Perintah feed menggunakan port 7001 secara default, tetapi kita perlu menyiapkan direktori tempat feeder akan membaca. File yang dimasukkan ke dalam direktori tersebut akan tersedia untuk diambil oleh node pekerja dan pekerjaan harus didistribusikan di antara cluster. Mulai umpan dengan
mkdir ~/Desktop/feed1 ./emissary feed -i ~/Desktop/feed1/
Anda seharusnya dapat menekan http://localhost:8001, http://localhost:9001 dan http://localhost:7001 di browser dan melihat tempat yang dikonfigurasi. Letakkan beberapa file di ~/Desktop/feed1 dan lihat 2 node memprosesnya. Mungkin diperlukan waktu beberapa menit bagi mereka untuk mulai memproses
Agen dalam mode berkerumun kembali menampilkan detail tentang Agen seluler. Ini dimulai dengan node yang Anda konfigurasikan (localhost:9001 secara default), kemudian memanggil semua node yang diketahuinya dan mendapatkan informasi yang sama. Jalankan dengan:
./emissary agents --cluster
Kumpulan dalam mode berkerumun juga melakukan hal yang sama seperti kumpulan dalam mode mandiri. Ini dimulai pada node (locahost:9001) secara default kemudian menuju ke semua node yang diketahuinya dan menggabungkan tampilan cluster yang diciutkan. Jalankan dengan
./emissary pool --cluster
Topologi berkomunikasi dengan node yang dikonfigurasi (localhost:8001 secara default) dan berkomunikasi dengan setiap node yang diketahuinya. Responsnya adalah apa yang diketahui oleh semua node tersebut, sehingga Anda dapat membangun topologi jaringan cluster Anda. Jalankan dengan
./emissary topology
Kata sandi keystore dan keystore ada di file emissary.client.EmissaryClient-SSL.cfg. Termasuk dan dikonfigurasikan secara default adalah contoh keystore yang dapat Anda gunakan untuk menguji fungsi ini. Kami tidak menyarankan penggunaan contoh keystore di lingkungan produksi. Untuk menggunakan keystore Anda sendiri, ubah nilai konfigurasi di file emissary.client.EmissaryClient-SSL.cfg.
Mandiri
./emissary server -p 8443 --ssl --disableSniHostCheck
Berkelompok
./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/
Jika Anda memiliki pertanyaan atau kekhawatiran tentang proyek ini, Anda dapat menghubungi kami di: [email protected]
Untuk pertanyaan keamanan dan pelaporan kerentanan, silakan merujuk ke SECURITY.md