摘要:客戶端鏈接鏈接初始化根據(jù)指定的配置名稱獲取對(duì)應(yīng)的配置項(xiàng)根據(jù)指定的配置名稱獲取對(duì)應(yīng)的配置項(xiàng)新增或者修改指定的配置刪除指定的配置配置初始化和監(jiān)聽加載配置啟動(dòng)監(jiān)聽線程對(duì)某一個(gè)配置進(jìn)行監(jiān)聽獲取事件變化類型獲取發(fā)生變化的獲取變化后的
UTF-8 UTF-8 1.8 1.8 1.8 com.coreos jetcd-core 0.0.2 org.slf4j slf4j-log4j12 1.7.25 log4j log4j 1.2.17 org.slf4j slf4j-api 1.7.25 org.slf4j slf4j-nop 1.7.25 org.slf4j slf4j-simple 1.7.5 package com.gemdale.iot; import com.coreos.jetcd.Client; import com.coreos.jetcd.KV; import com.coreos.jetcd.Watch; import com.coreos.jetcd.data.ByteSequence; import com.coreos.jetcd.data.KeyValue; import java.util.List; public class EtcdUtil1 { // etcd客戶端鏈接 private static Client client = null; private static String IPPORT = null; static { IPPORT = System.getProperty("IPPORT", "http://127.0.0.1:11000"); getEtcdClient(); } // 鏈接初始化 public static Client getEtcdClient() { if (client == null) { synchronized (EtcdUtil1.class) { client = Client.builder().lazyInitialization(false).endpoints(IPPORT).build(); } } return client; } /** * 根據(jù)指定的配置名稱獲取對(duì)應(yīng)的value * * @param key * 配置項(xiàng) * @return * @throws Exception */ public static String getEtcdValueByKey(String key) throws Exception { KeyValue kv = getEtcdKeyValueByKey(key); if (kv != null) { return kv.getValue().toStringUtf8(); } else { return null; } } /** * 根據(jù)指定的配置名稱獲取對(duì)應(yīng)的keyvalue * * @param key * 配置項(xiàng) * @return * @throws Exception */ public static KeyValue getEtcdKeyValueByKey(String key) throws Exception { client.getKVClient().get(ByteSequence.fromString(key)).get().getKvs(); if (kvs.size() > 0) { return kvs.get(0); } else { return null; } } /** * 新增或者修改指定的配置 * * @param key * @param value * @return */ public static void putEtcdValueByKey(String key, String value) throws Exception { client.getKVClient().put(ByteSequence.fromString(key), ByteSequence.fromBytes(value.getBytes("utf-8"))); } /** * 刪除指定的配置 * * @param key * @return */ public static void deleteEtcdValueByKey(String key) { client.getKVClient().delete(ByteSequence.fromString(key)); } // V3 api配置初始化和監(jiān)聽 public void init() { try { // 加載配置 getConfig(client.getKVClient().get(ByteSequence.fromString("test")).get().getKvs()); // 啟動(dòng)監(jiān)聽線程 new Thread(() -> { // 對(duì)某一個(gè)配置進(jìn)行監(jiān)聽 Watch.Watcher watcher = client.getWatchClient().watch(ByteSequence.fromString("etcd_key")); try { while (true) { watcher.listen().getEvents().stream().forEach(watchEvent -> { KeyValue kv = watchEvent.getKeyValue(); // 獲取事件變化類型 System.out.println(watchEvent.getEventType()); // 獲取發(fā)生變化的key System.out.println(kv.getKey().toStringUtf8()); // 獲取變化后的value String afterChangeValue = kv.getValue().toStringUtf8(); }); } } catch (InterruptedException e) { e.printStackTrace(); } }).start(); } catch (Exception e) { e.printStackTrace(); } } private String getConfig(List org.apache.maven.plugins maven-assembly-plugin 2.5.5 com.xxg.Main jar-with-dependencies kvs) { if (kvs.size() > 0) { String config = kvs.get(0).getValue().toStringUtf8(); System.out.println("etcd "s config "s configValue is :" + config); return config; } else { return null; } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74840.html
摘要:運(yùn)行在上的微服務(wù)服務(wù)發(fā)現(xiàn)與注冊(cè)在上一節(jié)中,我們學(xué)習(xí)了如何在上構(gòu)建一個(gè)風(fēng)格的微服務(wù)。接下來,我們將學(xué)習(xí)如何把運(yùn)行在上的微服務(wù)暴露在服務(wù)中心上,以便客戶端的調(diào)用。資源服務(wù)在關(guān)閉時(shí)需要將服務(wù)實(shí)例在服務(wù)中心進(jìn)行注銷操作。響應(yīng)用戶的終止。 運(yùn)行在 Docker 上的微服務(wù) - 服務(wù)發(fā)現(xiàn)與注冊(cè) tags: Docker Microservice RESTful etcd Author: And...
摘要:的服務(wù)治理平臺(tái)發(fā)源于早期的個(gè)人項(xiàng)目。客戶端發(fā)現(xiàn)模式要求客戶端負(fù)責(zé)查詢注冊(cè)中心,獲取服務(wù)提供者的列表信息,使用負(fù)載均衡算法選擇一個(gè)合適的服務(wù)提供者,發(fā)起接口調(diào)用請(qǐng)求。系統(tǒng)和系統(tǒng)之間,少不了數(shù)據(jù)的互聯(lián)互通。隨著微服務(wù)的流行,一個(gè)系統(tǒng)內(nèi)的不同應(yīng)用進(jìn)行互聯(lián)互通也是常態(tài)。 PowerDotNet的服務(wù)治理平臺(tái)發(fā)源于早期的個(gè)人項(xiàng)目Power.Apix。這個(gè)項(xiàng)目借鑒了工作過的公司的服務(wù)治理方案,站在...
摘要:是一個(gè)相對(duì)比較新的微服務(wù)框架,年才推出的版本雖然時(shí)間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實(shí)現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問題。通過互相注冊(cè)的方式來進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個(gè)相對(duì)比較新的微服務(wù)框架,...
摘要:容器云架構(gòu)方案。容器云架構(gòu)方案基于容器技術(shù),運(yùn)維技術(shù)團(tuán)隊(duì)開發(fā)了五阿哥網(wǎng)站的容器云平臺(tái)。多云對(duì)接私有云和公有云進(jìn)行統(tǒng)一托管,包含網(wǎng)絡(luò)區(qū)域配置,實(shí)例開通及的環(huán)境初始化配置等。技術(shù)選型及實(shí)踐鏡像標(biāo)準(zhǔn)眾所周知,的鏡像是分層的。 前言 五阿哥鋼鐵電商平臺(tái)(www.wuage.com)是由鋼鐵行業(yè)第一的中國(guó)五礦與互聯(lián)網(wǎng)第一的阿里巴巴聯(lián)手打造,并充分運(yùn)用雙方股東優(yōu)勢(shì)資源,即:阿里巴巴在大數(shù)據(jù)、電商運(yùn)...
摘要:谷歌思科華為等等均是的貢獻(xiàn)成員。其中谷歌云平臺(tái)和等大型云提供商成功在生產(chǎn)環(huán)境中使用了。它為良好穩(wěn)定的生產(chǎn)部署提供了一個(gè)良好的起點(diǎn)。預(yù)先準(zhǔn)備在繼續(xù)之前,我們需要準(zhǔn)備一個(gè)谷歌云平臺(tái)的賬號(hào)免費(fèi)的應(yīng)該足夠了。我們將為部署配置。 本文將帶你充分了解Etcd的工作原理,演示如何用Kubernetes建立并運(yùn)行etcd集群,如何與Etcd交互,如何在Etcd中設(shè)置和檢索值,如何配置高可用等等。 sh...
閱讀 1718·2023-04-25 20:16
閱讀 3928·2021-10-09 09:54
閱讀 2753·2021-09-04 16:40
閱讀 2542·2019-08-30 15:55
閱讀 858·2019-08-29 12:37
閱讀 2773·2019-08-26 13:55
閱讀 2932·2019-08-26 11:42
閱讀 3182·2019-08-23 18:26