JavaRush /Blog Jawa /Random-JV /Zookeeper utawa apa urip kaya kanggo zookeeper
Viacheslav
tingkat

Zookeeper utawa apa urip kaya kanggo zookeeper

Diterbitake ing grup
Zookeeper utawa cara urip buruh kebon binatang - 1

Pambuka

Aplikasi Java asring duwe konfigurasi sing beda. Contone, alamat lan port sambungan. Contone, bisa uga katon kaya iki yen kita nggunakake kelas Properties :
public static void main(String []args) {
	Properties props = new Properties();
	props.setProperty("host", "www.tutorialspoint.com");
	System.out.println("Hello, " + props.getProperty("host"));
}
Lan iki katon cukup, amarga ... kita bisa njaluk Properties saka file. Lan kabeh katon apik karo kita ing siji mesin. Nanging mbayangno yen sistem kita wiwit kalebu macem-macem sistem sing dipisahake saka siji liyane? Sistem kasebut uga disebut sistem distribusi. Ing Wikipedia sampeyan bisa nemokake definisi ing ngisor iki: Sistem sing disebarake yaiku sistem sing komponene dumunung ing komputer jaringan sing beda-beda sing saling komunikasi lan koordinasi tumindake kanthi ijol-ijolan pesen. Sampeyan bisa ndeleng diagram ing ngisor iki:
Zookeeper utawa carane urip buruh kebon binatang - 2
Kanthi pendekatan iki, sistem siji dipérang dadi komponen. Konfigurasi minangka komponen umum sing kapisah. Saben komponen liyane tumindak minangka klien kanggo komponen konfigurasi. Kasus iki diarani " Konfigurasi sing disebarake ". Ana macem-macem implementasi konfigurasi sing disebarake. Lan ing dina iki review aku propose kanggo njaluk kenalan karo salah siji saka wong-wong mau, disebut Zookeeper.
Penjaga kebon binatang utawa cara uripe buruh kebon binatang - 3

Kebon binatang

Path kanggo ngerti Zookeeper diwiwiti saka situs web resmi: zookeeper.apache.org Ing situs web resmi sampeyan kudu pindhah menyang bagean " Download " . Ing bagean iki, download arsip ing format .tar.gz, contone "zookeeper-3.4.13.tar.gz". tar minangka format arsip tradisional kanggo sistem Unit. gz - tegese gzip digunakake kanggo ngompres arsip. Yen kita nggarap mesin Windows, mula iki ora bakal ngganggu kita. Umume arsip modern (contone, 7-zip ) bisa digunakake kanthi sampurna ing Windows. Ayo extract isi menyang sawetara direktori. Ing wektu sing padha, kita bakal weruh prabédan - ing disk ing negara sing diekstrak bakal manggoni kira-kira 60 megabyte, lan kita ndownload arsip kanthi ukuran 35 megabyte. Nalika sampeyan bisa ndeleng, komprèsi tenan dianggo. Saiki sampeyan kudu miwiti Zookeeper. Umumé, Zookeeper minangka jinis server. Zookeeper bisa mbukak ing salah siji saka rong mode: Standalone utawa Replicated . Ayo nimbang opsi sing paling gampang, uga dikenal minangka pilihan pisanan - Mode mandiri. Kanggo mbukak Zookeper, perlu file konfigurasi. Mula, ayo digawe ing kene: [КаталогРаспаковкиZookeeper]/conf/zoo.cfg. Kanggo Windows, kita bakal nggunakake rekomendasi saka Sedheng: " Nginstal Apache ZooKeeper ing Windows ". Isi file konfigurasi bakal kaya iki:
tickTime=2000
dataDir=C:/zookeeper-3.4.13/data
clientPort=2181
Ayo nambah variabel lingkungan ZOOKEEPER_HOME sing ngemot path menyang direktori root zookeper (kaya ing pandhuan ing medium), lan uga nambahake pecahan ing ngisor iki menyang variabel lingkungan PATH: ;%ZOOKEEPER_HOME%\bin; Uga, direktori sing ditemtokake ing dataDir kudu ana, yen ora Zookeeper ora bakal bisa miwiti server. Saiki kita bisa miwiti server kanthi aman nggunakake printah: zkServer. Thanks kanggo kasunyatan sing direktori Zookeeper wis ditambahake kanggo variabel lingkungan path, kita bisa nelpon Zookeper printah saka ngendi wae, ora mung saka direktori bin.
Zookeeper utawa carane urip buruh kebon binatang - 4

ZNode

Kaya sing kasebut ing " Ikhtisar Zookeeper ", data ing Zookeper diwakili ing wangun ZNodes (node) sing diatur dadi struktur wit. Sing, saben ZNode bisa ngemot data lan duwe anak ZNodes. Informasi liyane babagan organisasi ZNode bisa ditemokake ing dokumentasi Zookeeper: " Model data lan ruang jeneng hirarkis ". Kanggo nggarap Zookeeper lan ZNode, kita bakal nggunakake Zookeeper CLI (antarmuka Command Line). Sadurunge, kita miwiti server nggunakake printah zkServer. Saiki, kanggo nyambung, ayo eksekusi. zkCli.cmd -server 127.0.0.1:2181 Yen sukses, sesi sambungan menyang Zookeeper bakal digawe lan kita bakal weruh output ing ngisor iki:
Zookeeper utawa carane urip buruh kebon binatang - 5
Sing nggumunake, sanajan sawise instalasi, Zookeeper wis duwe ZNode. Wis path ing ngisor iki:/zookeeper/quota
Zookeeper utawa carane urip buruh kebon binatang - 6
Iki sing diarani " kuota ". Kaya sing kasebut ing " Apache ZooKeeper Essentials ", saben ZNode bisa duwe kuota sing digandhengake, mbatesi data sing bisa disimpen. Watesan jumlah znode lan jumlah data sing disimpen bisa ditemtokake. Kajaba iku, yen watesan iki ngluwihi, banjur operasi karo ZNode ora dibatalake, nanging bebaya bakal ditampa babagan ngluwihi watesan. Disaranake maca babagan ZNode ing " ZooKeeper Programmer's Guide: ZNodes ". Sawetara conto saka carane sampeyan bisa nggarap ZNode:
Zookeeper utawa carane urip buruh kebon binatang - 7
Aku uga kaya Wigati sing ZNodes beda. ZNode reguler (kajaba sampeyan nemtokake gendera tambahan) minangka jinis " persistent ". Ana ZNode saka jinis " Ephemeral Node ". ZNode kasebut mung ana sajrone sesi sambungan Zookeeper nalika digawe. Ana ZNode jinis " Sequence Node ". ZNodes iki ditambahake karo nomer saka urutan kanggo mesthekake uniqueness. Sequence Node bisa dadi terus-terusan utawa ephemeral. Informasi latar mburi sethithik babagan ZNode uga dianjurake ing kene: " Zookeeper ZNodes - Karakteristik & Conto ".
Zookeeper utawa carane urip buruh kebon binatang - 8

Pengawas ZNode

Aku uga pengin ngomong babagan nonton. Rincian babagan kasebut ditulis ing dokumentasi Zookeeper: " ZooKeeper Watches ". Ing cendhak, watcher minangka pemicu siji-wektu sing dipicu dening sawetara acara. Kanthi njupuk data kanthi nindakake operasi getData (), getChildren () utawa ana (), kita bisa nggawe pemicu minangka tumindak tambahan. Zookeeper njamin urutan acara sing diproses. Kajaba iku, dokumentasi nyatakake yen sadurunge bisa ndeleng nilai ZNode anyar, kita bakal weruh acara babagan ngganti nilai lawas menyang sing anyar. Sampeyan bisa maca liyane babagan Watchers ing kene: " Jam ZooKeeper - Fitur & Jaminan ". Kanggo nyoba iki, ayo nggunakake CLI maneh : Ayo nganggep kita duwe sawetara ZNode kanthi nilai ing ngendi kita nyimpen status sawetara layanan:
[zk: 127.0.0.1:2181(CONNECTED) 0] create /services/service1/status stopped
Created /services/service1/status
[zk: 127.0.0.1:2181(CONNECTED) 1] get /services/service1/status [watch]
stopped
Saiki, yen data /services/service1/statusdiganti, pemicu siji-wektu bakal murub:
Zookeeper utawa carane urip buruh kebon binatang - 9
Menarik yen nalika nyambung menyang Zookeeper, kita uga bisa ndeleng cara kerja pengawas:
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
SyncConnected minangka salah sawijining acara Zookeper sing bisa ditindakake. Rincian liyane babagan iki bisa ditemokake ing katrangan API.
Zookeeper utawa carane urip buruh kebon binatang - 10

Zookeeper lan Jawa

Saiki kita duwe sawetara pangerten dhasar babagan apa sing bisa ditindakake Zookeeper. Ayo saiki digarap liwat Jawa, lan ora liwat CLI. Lan kanggo iki, kita butuh aplikasi Java, ing ngendi kita bakal weruh carane nggarap Zookeeper. Kanggo nggawe aplikasi, kita bakal nggunakake sistem mbangun proyek Gradle . Nggunakake plugin " Gradle Build Init " kita bakal nggawe proyek kasebut. Kanggo nindakake iki, ayo mbukak printah: gradle init --type java-application Yen Gradle takon kita kanggo njlentrehake pitakonan, banjur kita bakal ninggalake nilai standar (mung pencet Enter). Saiki ayo mbukak skrip mbangun, yaiku. file build.gradle. Isine katrangan babagan apa proyek kita digawe lan artefak apa (perpustakaan, kerangka kerja) gumantung. Amarga kita pengin nggunakake Zookeeper, banjur kita kudu nambah. Mula, ayo tambahake dependensi ing Zookeeper menyang blok dependensi:
dependencies {
    implementation 'org.apache.zookeeper:zookeeper:3.4.13'
Sampeyan bisa maca liyane babagan Gradle ing review: " A Brief Pambuka kanggo Gradle ". Dadi, kita duwe proyek Jawa, kita nyambungake perpustakaan Zookeeper. Ayo nulis soko saiki. Nalika kita ngelingi, nggunakake CLI kita nyambung kaya iki: zkCli.cmd -server 127.0.0.1:2181 Ayo ngumumake atribut "server" ing kelas App ing metode utama:
String server = "127.0.0.1:2181";
Sambungan ora tumindak cepet. Kita kudu ngenteni ing utas utama eksekusi program supaya sambungan kasebut kedadeyan. Mulane, kita butuh kunci. Ayo wara-wara ing ngisor iki:
Object lock = new Object();
Saiki kita kudu wong sing ngomong yen sambungan wis ditetepake. Minangka kita elinga, nalika kita nindakake iki liwat CLI, watcher makarya kanggo kita. Dadi ing kode Jawa kabeh padha persis. Pengawas kita bakal nampilake pesen babagan sukses rampung lan menehi kabar marang kabeh wong sing nunggu babagan kasebut liwat kunci. Ayo nulis pengamat:
Watcher connectionWatcher = new Watcher() {
	public void process(WatchedEvent we) {
		if (we.getState() == Event.KeeperState.SyncConnected) {
			System.out.println("Connected to Zookeeper in " + Thread.currentThread().getName());
			synchronized (lock) {
            	lock.notifyAll();
            }
		}
	}
};
Saiki ayo nambah sambungan menyang server zooKeeper:
int sessionTimeout = 2000;
ZooKeeper zooKeeper = null;
synchronized (lock) {
	zooKeeper = new ZooKeeper(server, sessionTimeout, connectionWatcher);
	lock.wait();
}
Kabeh iku prasaja ing kene. Nalika nglakokake cara utama ing utas utama program, kita njupuk kunci lan njaluk sambungan menyang zookeeper. Ing wektu sing padha, kita ngeculake kunci lan ngenteni nganti wong liya nyekel kunci kasebut lan menehi kabar yen kita bisa nerusake. Nalika sambungan ditetepake, watcher bakal bisa. Dheweke bakal mriksa manawa acara SyncConnected wis teka (kaya sing kita eling, iki sing dicekel dening pengamat liwat CLI), banjur nulis pesen. Sabanjure, kita njupuk kunci (wiwit utas utama sadurunge dirilis) lan ngabari kabeh utas nunggu kunci sing bisa terus. Utas pangolahan acara metu saka blok sing disinkronake, saéngga ngeculake kunci. Utas utama nampa kabar lan, sawise ngenteni kunci dibebasake, terus eksekusi, amarga nganti entuk kunci, ora bakal bisa metu saka blok sing disinkronake lan terus kerja. Mangkono, nggunakake multithreading lan Zookeeper API, kita bisa nindakake macem-macem tumindak. API Zookeeper luwih jembar tinimbang sing diidinake CLI. Tuladhane:
// Creation нового узла
String znodePath = "/zookeepernode2";
List<ACL> acls = ZooDefs.Ids.OPEN_ACL_UNSAFE;
if (zooKeeper.exists(znodePath, false) == null) {
	zooKeeper.create(znodePath, "data".getBytes(), acls, CreateMode.PERSISTENT);
}

// Получение данных из узла
byte[] data = zooKeeper.getData(znodePath, null, null);
System.out.println("Result: " + new String(data, "UTF-8"));
Nalika sampeyan bisa ndeleng, nalika nggawe simpul kita bisa ngatur ACL. Iki minangka fitur penting liyane. ACL minangka ijin sing ditrapake kanggo tumindak karo ZNode. Ana akeh setelan, mula aku nyaranake sampeyan ndeleng dokumentasi resmi kanggo rincian: " Izin Zookeeper ACL ".
Zookeeper utawa carane urip buruh kebon binatang - 11

Kesimpulan

Yagene kita maca iki? Amarga Zookeeper digunakake ing teknologi populer liyane. Contone, Apache Kafka mbutuhake Zookeeper, sing bisa diwaca ing " Pandhuan Mulai Cepet Kafka ". Iki uga digunakake ing database NOSQL HBase, sing sampeyan bisa maca liyane babagan ing " HBase Quickstart Guide ". Nyatane, akeh proyek liyane nggunakake Zookeeper. Sawetara wong kasebut kadhaptar ing " Nggunakake Zookeeper ing Donya Nyata ". Muga-muga aku mangsuli pitakon "kenapa". Pitakonan sing paling penting saiki yaiku: "Apa sabanjure?" Pisanan, sampeyan bisa maca buku ing ngisor iki babagan topik Apache Zookeeper: Kapindho, ana laporan video sing apik babagan Zookeeper. Disaranake ndeleng: Katelu, ana sawetara artikel migunani sing bakal nglengkapi gambar donya: Iki review cendhak banget, nanging minangka tembung pambuka, muga-muga bisa migunani. #Viacheslav
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION