Κοινή χρήση τεχνολογίας

Εφαρμογή κατανεμημένων υπηρεσιών συντονισμού με βάση το Zookeeper

2024-07-12

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

Εφαρμογή κατανεμημένων υπηρεσιών συντονισμού με βάση το Zookeeper

Γεια σε όλους, είμαι ο συντάκτης του Weizhuan Taoke System 3.0 και είμαι επίσης προγραμματιστής που δεν φοράει long john το χειμώνα, αλλά πρέπει ακόμα να είναι δροσερός στον κρύο καιρό!

1. Τι είναι το Zookeeper;

Το Zookeeper είναι μια υπηρεσία συντονισμού εφαρμογών ανοιχτού κώδικα που παρέχει αποτελεσματική διαχείριση κατανεμημένων δεδομένων και δυνατότητες συντονισμού. Χρησιμοποιείται κυρίως για την επίλυση προβλημάτων συνοχής δεδομένων σε κατανεμημένες εφαρμογές, όπως η καταχώριση και ο εντοπισμός υπηρεσιών, οι κατανεμημένες κλειδαριές, η διαχείριση διαμόρφωσης κ.λπ.

2. Ενσωματώστε το Zookeeper στο Spring Boot

Στο έργο Spring Boot, μπορούμε να χρησιμοποιήσουμε το Zookeeper για την υλοποίηση κατανεμημένων υπηρεσιών συντονισμού. Στη συνέχεια θα παρουσιάσουμε τον τρόπο διαμόρφωσης, σύνδεσης και χρήσης του Zookeeper.

2.1 Προσθήκη εξαρτήσεων

Πρώτον, στο Spring Bootpom.xmlΠροσθήκη εξαρτήσεων 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 Διαμόρφωση σύνδεσης Zookeeper

υπάρχειapplication.propertiesΔιαμόρφωση πληροφοριών σύνδεσης Zookeeper:

zookeeper.connect-string=localhost:2181
  • 1
2.3 Γραφή υπηρεσία Zookeeper

Δημιουργήστε μια κλάση υπηρεσιών Zookeeper για σύνδεση και λειτουργία 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 Χρησιμοποιήστε το Zookeeper για την εφαρμογή κατανεμημένων κλειδαριών

Στο δείγμα κώδικα, δείχνουμε πώς να χρησιμοποιήσετε το Zookeeper για να εφαρμόσετε μια απλή κατανεμημένη κλειδαριά:

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. Περίληψη

Αυτό το άρθρο εισάγει τον τρόπο ενσωμάτωσης και χρήσης του Zookeeper στο έργο Spring Boot για την υλοποίηση κατανεμημένων υπηρεσιών συντονισμού, συμπεριλαμβανομένων των βασικών βημάτων όπως η ρύθμιση παραμέτρων εξάρτησης, η σύνδεση στο Zookeeper και η εφαρμογή κατανεμημένων κλειδαριών. Μέσω αυτών των παραδειγμάτων, οι προγραμματιστές μπορούν να κατανοήσουν καλύτερα και να εφαρμόσουν τον σημαντικό ρόλο του Zookeeper στα κατανεμημένα συστήματα.

Κατασκευασμένο από τον εκδότη του Micro-earning Taoke System 3.0, πρέπει να είναι προϊόν υψηλής ποιότητας, αναφέρετε την πηγή κατά την επανεκτύπωση.