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ä!
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.
Spring Boot -projektissa Zookeeperin avulla voimme toteuttaa hajautettuja koordinointipalveluita. Seuraavaksi esittelemme Zookeeperin määrittämisen, yhdistämisen ja käytön.
Ensinnäkin Spring Bootissapom.xml
Lisää 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>
olla olemassaapplication.properties
Määritä Zookeeperin yhteystiedot:
zookeeper.connect-string=localhost:2181
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();
}
}
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();
}
}
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!