Teknologian jakaminen

Toteuttaa Zookeeperiin perustuvat hajautetut koordinointipalvelut

2024-07-12

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

Toteuttaa Zookeeperiin perustuvat hajautetut koordinointipalvelut

Hei kaikki, olen Weizhuan Taoke System 3.0:n editori, ja olen myös ohjelmoija, joka ei käytä pitkiä housuja talvella, mutta joka on silti viileä kylmällä säällä!

1. Mikä on Zookeeper?

Zookeeper on avoimen lähdekoodin hajautettu sovelluskoordinointipalvelu, joka tarjoaa tehokkaat hajautetut tiedonhallinta- ja koordinointiominaisuudet. Sitä käytetään pääasiassa tietojen johdonmukaisuusongelmien ratkaisemiseen hajautetuissa sovelluksissa, kuten palvelun rekisteröinti ja etsiminen, hajautetut lukot, kokoonpanon hallinta jne.

2. Integroi Zookeeper Spring Bootiin

Spring Boot -projektissa Zookeeperin avulla voimme toteuttaa hajautettuja koordinointipalveluita. Seuraavaksi esittelemme Zookeeperin määrittämisen, yhdistämisen ja käytön.

2.1. Lisää riippuvuuksia

Ensinnäkin Spring Bootissapom.xmlLisää Zookeeper-riippuvuudet:

<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 Määritä Zookeeper-yhteys

olla olemassaapplication.propertiesMääritä Zookeeperin yhteystiedot:

zookeeper.connect-string=localhost:2181
  • 1
2.3 Eläintarhanhoitajapalvelu

Luo Zookeeper-palveluluokka Zookeeperin yhdistämistä ja käyttöä varten:

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. Käytä Zookeeperiä hajautettujen lukkojen toteuttamiseen

Esimerkkikoodissa näytämme, kuinka Zookeeperia käytetään yksinkertaisen hajautetun lukon toteuttamiseen:

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. Yhteenveto

Tässä artikkelissa esitellään Zookeeperin integrointi ja käyttö Spring Boot -projektissa hajautettujen koordinointipalvelujen toteuttamiseen, mukaan lukien tärkeimmät vaiheet, kuten riippuvuusmääritykset, yhteyden muodostaminen Zookeeperiin ja hajautettujen lukkojen käyttöönotto. Näiden esimerkkien avulla kehittäjät voivat paremmin ymmärtää ja soveltaa Zookeeperin tärkeää roolia hajautetuissa järjestelmissä.

Micro-earning Taoke System 3.0:n toimittajan tuottaman tuotteen on oltava korkealaatuinen. Ilmoita lähde uusintapainossa!