Berbagi teknologi

Melaksanakan layanan koordinasi terdistribusi berdasarkan Zookeeper

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Melaksanakan layanan koordinasi terdistribusi berdasarkan Zookeeper

Halo semuanya, saya editor Weizhuan Taoke System 3.0, dan saya juga seorang programmer yang tidak memakai celana panjang di musim dingin, tetapi tetap harus sejuk di cuaca dingin!

1. Apa itu Penjaga Kebun Binatang?

Zookeeper adalah layanan koordinasi aplikasi terdistribusi open source yang menyediakan manajemen data terdistribusi dan kemampuan koordinasi yang efisien. Hal ini terutama digunakan untuk memecahkan masalah konsistensi data dalam aplikasi terdistribusi, seperti pendaftaran dan penemuan layanan, kunci terdistribusi, manajemen konfigurasi, dll.

2. Integrasikan Zookeeper di Spring Boot

Dalam proyek Spring Boot, kita dapat menggunakan Zookeeper untuk mengimplementasikan layanan koordinasi terdistribusi. Selanjutnya kami akan memperkenalkan cara mengkonfigurasi, menghubungkan, dan menggunakan Zookeeper.

2.1. Tambahkan dependensi

Pertama, di Spring Bootpom.xmlTambahkan dependensi Zookeeper:

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.7.0</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>5.1.0</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
2.2. Konfigurasikan koneksi Zookeeper

adaapplication.propertiesKonfigurasikan informasi koneksi Zookeeper di:

zookeeper.connect-string=localhost:2181
  • 1
2.3.Penulisan layanan Penjaga Kebun Binatang

Buat kelas layanan Zookeeper untuk menghubungkan dan mengoperasikan Zookeeper:

package cn.juwatech.zookeeper;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

@Service
public class ZookeeperService {

    @Value("${zookeeper.connect-string}")
    private String connectString;

    private CuratorFramework client;

    @PostConstruct
    private void init() {
        client = CuratorFrameworkFactory.newClient(connectString, new ExponentialBackoffRetry(1000, 3));
        client.start();
    }

    public void createNode(String path, byte[] data) throws Exception {
        client.create().creatingParentsIfNeeded().forPath(path, data);
    }

    public void setData(String path, byte[] data) throws Exception {
        client.setData().forPath(path, data);
    }

    public byte[] getData(String path) throws Exception {
        return client.getData().forPath(path);
    }

    public void deleteNode(String path) throws Exception {
        client.delete().deletingChildrenIfNeeded().forPath(path);
    }

    public void close() {
        client.close();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
2.4. Gunakan Zookeeper untuk menerapkan kunci terdistribusi

Dalam kode contoh, kami menunjukkan cara menggunakan Zookeeper untuk mengimplementasikan kunci terdistribusi sederhana:

package cn.juwatech.zookeeper;

import org.apache.curator.framework.recipes.locks.InterProcessMutex;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

@Service
public class DistributedLockService {

    @Autowired
    private ZookeeperService zookeeperService;

    private InterProcessMutex lock;

    @PostConstruct
    private void init() {
        lock = new InterProcessMutex(zookeeperService.getClient(), "/distributed-lock");
    }

    public void acquireLock() throws Exception {
        lock.acquire();
    }

    public void releaseLock() throws Exception {
        lock.release();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

3. Ringkasan

Artikel ini memperkenalkan cara mengintegrasikan dan menggunakan Zookeeper dalam proyek Spring Boot untuk mengimplementasikan layanan koordinasi terdistribusi, termasuk langkah-langkah penting seperti konfigurasi ketergantungan, menghubungkan ke Zookeeper, dan menerapkan kunci terdistribusi. Melalui contoh-contoh ini, pengembang dapat lebih memahami dan menerapkan peran penting Zookeeper dalam sistem terdistribusi.

Diproduksi oleh editor Micro-earning Taoke System 3.0, produk tersebut harus berkualitas tinggi. Harap sebutkan sumbernya saat mencetak ulang!