Rumah Java javaTutorial Menggunakan ZooKeeper untuk pemprosesan kunci teragih dalam pembangunan API Java

Menggunakan ZooKeeper untuk pemprosesan kunci teragih dalam pembangunan API Java

Jun 17, 2023 pm 10:36 PM
Kunci yang diedarkan zookeeper java api

Memandangkan aplikasi moden terus berkembang dan keperluan untuk ketersediaan tinggi serta keselarasan berkembang, seni bina sistem teragih menjadi semakin biasa. Dalam sistem teragih, berbilang proses atau nod berjalan pada masa yang sama dan menyelesaikan tugas bersama-sama, dan penyegerakan antara proses menjadi sangat penting. Memandangkan banyak nod dalam persekitaran teragih boleh mengakses sumber yang dikongsi pada masa yang sama, cara menangani isu konkurensi dan penyegerakan telah menjadi tugas penting dalam sistem teragih. Dalam hal ini, ZooKeeper telah menjadi penyelesaian yang sangat popular.

ZooKeeper ialah perkhidmatan penyelarasan aplikasi teragih sumber terbuka yang boleh menyediakan beberapa perkhidmatan asas yang dikongsi, seperti penyelenggaraan konfigurasi, perkhidmatan penamaan, perkhidmatan penyegerakan, kunci teragih dan perkhidmatan kumpulan, dsb. Dalam artikel ini, kami akan membincangkan cara menggunakan ZooKeeper untuk melaksanakan pengendalian kunci teragih dalam pembangunan API Java.

Mekanisme kunci ZooKeeper
Idea utama untuk melaksanakan mekanisme kunci dalam ZooKeeper ialah menggunakan status nod. Dalam ZooKeeper, setiap nod mempunyai tiga keadaan: Dibuat, Wujud dan Dipadamkan. Kita boleh menggunakan keadaan ini untuk melaksanakan kunci teragih.

Apabila berbilang proses cuba memperoleh kunci pada masa yang sama, hanya satu proses boleh berjaya mencipta nod ZooKeeper. Proses lain akan melihat bahawa nod sudah wujud dan menunggu untuk dialih keluar. Setelah proses memegang kunci telah menyelesaikan kerjanya dan melepaskan kunci, nod yang sepadan akan dipadamkan. Pada ketika ini, proses menunggu kunci akan mempunyai peluang untuk berjaya mencipta nod dan memperoleh kunci.

Gunakan ZooKeeper untuk melaksanakan kunci dalam Java
Sangat mudah untuk menggunakan ZooKeeper untuk melaksanakan kunci yang diedarkan di Java. Berikut ialah langkah untuk melaksanakan kunci teragih menggunakan ZooKeeper dalam API Java:

  1. Buat sambungan pelanggan ZooKeeper. Sambungan ZooKeeper boleh dilaksanakan melalui kelas ZooKeeper.
  2. Buat nod ZooKeeper yang mewakili kunci teragih. Ini boleh dilakukan melalui kaedah create().
  3. Apabila proses perlu mendapatkan kunci, panggil kaedah create() dan lulus nama nod dan parameter jenis nod. Parameter jenis nod perlu ditetapkan kepada EPHEMERAL (ephemeral) dan SEQUENTIAL (sequential). Ini bermakna nod ZooKeeper akan ditandakan dengan pembilang, jadi setiap proses boleh mencipta nod unik.
  4. Dapatkan senarai semua nod kunci yang dibuat, kemudian isikannya mengikut nombor siri nod. Anda boleh mendapatkan senarai nod menggunakan kaedah getChildren().
  5. Semak sama ada proses semasa memiliki kunci yang diedarkan. Jika nod semasa ialah nod pertama, ia mempunyai kunci teragih.
  6. Jika proses tidak memiliki kunci yang diedarkan, tunggu sehingga kunci dilepaskan. Anda boleh melakukan ini menggunakan kaedah exists() dan getData().
  7. Selepas proses menyelesaikan tugasan yang diperlukan, lepaskan kunci. Ini boleh dilakukan dengan memadamkan nod, menggunakan kaedah delete().

Berikut ialah contoh kod Java ringkas yang menunjukkan cara melaksanakan pengendalian kunci teragih menggunakan ZooKeeper:

public class ZooKeeperLock {
    
    private final ZooKeeper zooKeeper;
    private final String nodePath;
    private String myNode;
    
    public ZooKeeperLock() {
        try {
            zooKeeper = new ZooKeeper("localhost:2181", 5000, null);
            nodePath = "/lock";
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    
    public void lock() {
        while (true) {
            try {
                myNode = zooKeeper.create(nodePath + "/lock_", new byte[0], 
                        ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
                
                List<String> children = zooKeeper.getChildren(nodePath, false);
                Collections.sort(children);
                
                if (myNode.equals(nodePath + "/" + children.get(0))) {
                    return;
                }
                
                String myNodeSuffix = myNode.substring(myNode.lastIndexOf("/") + 1);
                String prevNodeSuffix = children.get(Collections.binarySearch(children, 
                        myNodeSuffix) - 1);
                String prevNode = nodePath + "/" + prevNodeSuffix;
                
                final CountDownLatch latch = new CountDownLatch(1);
                Stat prevStat = zooKeeper.exists(prevNode, new Watcher() {
                    public void process(WatchedEvent event) {
                        if (event.getType() == Event.EventType.NodeDeleted) {
                            latch.countDown();
                        }
                    }
                });
                
                if (prevStat != null) {
                    latch.await();
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
    
    public void unlock() {
        try {
            zooKeeper.delete(myNode, -1);
            zooKeeper.close();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
Salin selepas log masuk

Dalam contoh ini, kami mencipta kelas ZooKeeperLock yang melaksanakan The lock() dan kaedah buka kunci() disertakan. Kaedah lock() akan memperoleh kunci dan tunggu sehingga proses lain melepaskan kunci. Kaedah buka kunci() melepaskan kunci. Seperti yang anda lihat, proses melaksanakan kunci teragih di Java menggunakan ZooKeeper adalah sangat mudah.

Kesimpulan
ZooKeeper ialah perkhidmatan penyelarasan teragih yang sangat berkuasa yang boleh digunakan untuk menyelesaikan banyak masalah konkurensi dalam sistem teragih. Dalam artikel ini, kami membincangkan penggunaan ZooKeeper untuk melaksanakan pengendalian kunci teragih dalam pembangunan API Java. Dengan menggunakan ZooKeeper, kami boleh melaksanakan kunci teragih dan protokol penyegerakan lain dengan mudah tanpa perlu risau tentang berbilang proses yang mengakses sumber kongsi pada masa yang sama. Jika anda sedang membina sistem teragih dan perlu menangani isu penyegerakan dan konkurensi, pertimbangkan ZooKeeper.

Atas ialah kandungan terperinci Menggunakan ZooKeeper untuk pemprosesan kunci teragih dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kunci yang diedarkan: 5 kes, dari kemasukan ke pengebumian Kunci yang diedarkan: 5 kes, dari kemasukan ke pengebumian Aug 24, 2023 pm 02:48 PM

Apa yang saya ingin kongsikan dengan anda hari ini ialah kunci yang diedarkan Artikel ini menggunakan lima kes, gambar rajah, analisis kod sumber, dll. untuk menganalisis. Kunci biasa seperti disegerakkan dan Kunci semuanya dilaksanakan berdasarkan JVM tunggal Apakah yang perlu kita lakukan dalam senario yang diedarkan? Pada masa ini, kunci yang diedarkan muncul.

Apakah tapak web antara muka API percuma? Apakah tapak web antara muka API percuma? Jan 05, 2024 am 11:33 AM

Laman web antara muka api percuma: 1. UomgAPI: platform yang menyediakan perkhidmatan API percuma yang stabil dan pantas, dengan lebih daripada 100 antara muka API 2. api percuma: menyediakan pelbagai antara muka API percuma 3. API JSON: menyediakan antara muka API data percuma; . Platform Terbuka AutoNavi: Menyediakan antara muka API yang berkaitan dengan peta; 5. Pengecaman muka Muka++: Menyediakan antara muka API yang berkaitan dengan pengecaman muka: Menyediakan lebih seratus antara muka API percuma, sesuai untuk pelbagai keperluan sumber; 7. Data agregat, dsb.

Penyelesaian raja antara kunci yang diedarkan - Redisson Penyelesaian raja antara kunci yang diedarkan - Redisson Aug 24, 2023 pm 03:31 PM

Jika anda pernah menggunakan Redis sebelum ini, anda akan mendapat hasil dua kali ganda dengan separuh usaha dengan menggunakan Redisson menyediakan cara yang paling mudah dan mudah untuk menggunakan Redis. Tujuan Redisson adalah untuk mempromosikan pengasingan kebimbangan pengguna (Separation of Concern) daripada Redis, supaya pengguna boleh memberi lebih tumpuan kepada memproses logik perniagaan.

Perbandingan Etcd dalam Redis pelaksanaan kunci yang diedarkan Perbandingan Etcd dalam Redis pelaksanaan kunci yang diedarkan Jun 20, 2023 pm 05:51 PM

Dengan mempopularkan sistem teragih secara beransur-ansur, kunci teragih telah menjadi cara penting untuk memastikan kestabilan sistem dan konsistensi data. Sebagai pangkalan data memori teragih berprestasi tinggi, Redis secara semula jadi menjadi salah satu pelaksanaan penting kunci teragih. Walau bagaimanapun, dalam beberapa tahun kebelakangan ini, Etcd telah menerima lebih banyak perhatian sebagai penyelesaian ketekalan teragih yang muncul. Artikel ini akan membincangkan persamaan dan perbezaan antara pelaksanaan kunci teragih Redis dan Etcd dari aspek seperti prinsip pelaksanaan dan analisis perbandingan. Prinsip Redis melaksanakan kunci teragih Pelaksanaan kunci teragih Redis

Apakah protokol biasa untuk pengaturcaraan rangkaian Java? Apakah protokol biasa untuk pengaturcaraan rangkaian Java? Apr 15, 2024 am 11:33 AM

Protokol yang biasa digunakan dalam pengaturcaraan rangkaian Java termasuk: TCP/IP: digunakan untuk penghantaran data dan pengurusan sambungan yang boleh dipercayai. HTTP: digunakan untuk penghantaran data web. HTTPS: Versi HTTP selamat yang menggunakan penyulitan untuk menghantar data. UDP: Untuk pemindahan data yang cepat tetapi tidak stabil. JDBC: digunakan untuk berinteraksi dengan pangkalan data hubungan.

Menggunakan Jgroups untuk komunikasi teragih dalam pembangunan API Java Menggunakan Jgroups untuk komunikasi teragih dalam pembangunan API Java Jun 18, 2023 pm 11:04 PM

Menggunakan JGroups untuk komunikasi teragih dalam pembangunan JavaAPI Dengan perkembangan pesat Internet dan populariti pengkomputeran awan, sistem teragih telah menjadi salah satu trend penting dalam pembangunan Internet hari ini. Dalam sistem teragih, nod yang berbeza perlu berkomunikasi dan bekerjasama antara satu sama lain untuk mencapai ketersediaan tinggi, prestasi tinggi, berskala tinggi dan ciri-ciri lain sistem teragih. Komunikasi teragih adalah bahagian penting daripadanya. JGroups ialah perpustakaan Java yang menyokong kolaborasi multicast dan diedarkan Ia menyediakan satu siri

Menggunakan ZooKeeper dan Kurator untuk penyelarasan dan pengurusan yang diedarkan di Beego Menggunakan ZooKeeper dan Kurator untuk penyelarasan dan pengurusan yang diedarkan di Beego Jun 22, 2023 pm 09:27 PM

Dengan perkembangan pesat Internet, sistem teragih telah menjadi salah satu infrastruktur dalam banyak perusahaan dan organisasi. Untuk sistem teragih berfungsi dengan baik, ia perlu diselaraskan dan diuruskan. Dalam hal ini, ZooKeeper dan Curator ialah dua alat yang patut digunakan. ZooKeeper ialah perkhidmatan penyelarasan teragih yang sangat popular yang boleh membantu kami menyelaraskan status dan data antara nod dalam kelompok. Kurator ialah enkapsulasi ZooKeeper

Apakah itu j2ee dan apakah teknologi yang disertakan Apakah itu j2ee dan apakah teknologi yang disertakan Apr 14, 2024 pm 09:06 PM

J2EE ialah platform Java yang direka untuk membangunkan aplikasi perusahaan dan termasuk teknologi berikut: Java Servlet dan JSPJava Enterprise Beans (EJB)Java Persistence API (JPA)Java API untuk XML Web Services (JAX-WS)JavaMailJava Message Service ( JMS)Java Transaction API (JTA) Penamaan Java dan Antara Muka Direktori (JNDI)

See all articles