成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

etcd的java客戶端

econi / 2208人閱讀

摘要:客戶端鏈接鏈接初始化根據(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
    
  
  
    
      
            org.apache.maven.plugins  
            maven-assembly-plugin  
            2.5.5  
              
                  
                      
                        com.xxg.Main  
                      
                  
                  
                    jar-with-dependencies  
                  
              
        
    
  

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

相關(guān)文章

  • 運(yùn)行在 Docker 上微服務(wù) - 服務(wù)發(fā)現(xiàn)與注冊(cè)

    摘要:運(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...

    陳偉 評(píng)論0 收藏0
  • PowerDotNet平臺(tái)化軟件架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)系列(04):服務(wù)治理平臺(tái)

    摘要:的服務(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ù)治理方案,站在...

    reclay 評(píng)論0 收藏0
  • 2021 年最新基于 Spring Cloud 微服務(wù)架構(gòu)分析

    摘要:是一個(gè)相對(duì)比較新的微服務(wù)框架,年才推出的版本雖然時(shí)間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實(shí)現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問題。通過互相注冊(cè)的方式來進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個(gè)相對(duì)比較新的微服務(wù)框架,...

    cikenerd 評(píng)論0 收藏0
  • 五阿哥鋼鐵電商平臺(tái)Docker容器云平臺(tái)建設(shè)實(shí)踐——你想知道都在這里!

    摘要:容器云架構(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)...

    jeffrey_up 評(píng)論0 收藏0
  • Etcd超全解:原理闡釋及部署設(shè)置最佳實(shí)踐

    摘要:谷歌思科華為等等均是的貢獻(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...

    yhaolpz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

econi

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<