亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

etcd的java客戶端

econi / 2270人閱讀

摘要:客戶端鏈接鏈接初始化根據(jù)指定的配置名稱獲取對應(yīng)的配置項根據(jù)指定的配置名稱獲取對應(yīng)的配置項新增或者修改指定的配置刪除指定的配置配置初始化和監(jiān)聽加載配置啟動監(jiān)聽線程對某一個配置進(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ù)指定的配置名稱獲取對應(yīng)的value
     * 
     * @param key
     *            配置項
     * @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ù)指定的配置名稱獲取對應(yīng)的keyvalue
     * 
     * @param key
     *            配置項
     * @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());
            // 啟動監(jiān)聽線程
            new Thread(() -> {
                // 對某一個配置進(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/74840.html

相關(guān)文章

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

    摘要:運行在上的微服務(wù)服務(wù)發(fā)現(xiàn)與注冊在上一節(jié)中,我們學(xué)習(xí)了如何在上構(gòu)建一個風(fēng)格的微服務(wù)。接下來,我們將學(xué)習(xí)如何把運行在上的微服務(wù)暴露在服務(wù)中心上,以便客戶端的調(diào)用。資源服務(wù)在關(guān)閉時需要將服務(wù)實例在服務(wù)中心進(jìn)行注銷操作。響應(yīng)用戶的終止。 運行在 Docker 上的微服務(wù) - 服務(wù)發(fā)現(xiàn)與注冊 tags: Docker Microservice RESTful etcd Author: And...

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

    摘要:的服務(wù)治理平臺發(fā)源于早期的個人項目??蛻舳税l(fā)現(xiàn)模式要求客戶端負(fù)責(zé)查詢注冊中心,獲取服務(wù)提供者的列表信息,使用負(fù)載均衡算法選擇一個合適的服務(wù)提供者,發(fā)起接口調(diào)用請求。系統(tǒng)和系統(tǒng)之間,少不了數(shù)據(jù)的互聯(lián)互通。隨著微服務(wù)的流行,一個系統(tǒng)內(nèi)的不同應(yīng)用進(jìn)行互聯(lián)互通也是常態(tài)。 PowerDotNet的服務(wù)治理平臺發(fā)源于早期的個人項目Power.Apix。這個項目借鑒了工作過的公司的服務(wù)治理方案,站在...

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

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

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

    摘要:容器云架構(gòu)方案。容器云架構(gòu)方案基于容器技術(shù),運維技術(shù)團(tuán)隊開發(fā)了五阿哥網(wǎng)站的容器云平臺。多云對接私有云和公有云進(jìn)行統(tǒng)一托管,包含網(wǎng)絡(luò)區(qū)域配置,實例開通及的環(huán)境初始化配置等。技術(shù)選型及實踐鏡像標(biāo)準(zhǔn)眾所周知,的鏡像是分層的。 前言 五阿哥鋼鐵電商平臺(www.wuage.com)是由鋼鐵行業(yè)第一的中國五礦與互聯(lián)網(wǎng)第一的阿里巴巴聯(lián)手打造,并充分運用雙方股東優(yōu)勢資源,即:阿里巴巴在大數(shù)據(jù)、電商運...

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

    摘要:谷歌思科華為等等均是的貢獻(xiàn)成員。其中谷歌云平臺和等大型云提供商成功在生產(chǎn)環(huán)境中使用了。它為良好穩(wěn)定的生產(chǎn)部署提供了一個良好的起點。預(yù)先準(zhǔn)備在繼續(xù)之前,我們需要準(zhǔn)備一個谷歌云平臺的賬號免費的應(yīng)該足夠了。我們將為部署配置。 本文將帶你充分了解Etcd的工作原理,演示如何用Kubernetes建立并運行etcd集群,如何與Etcd交互,如何在Etcd中設(shè)置和檢索值,如何配置高可用等等。 sh...

    yhaolpz 評論0 收藏0

發(fā)表評論

0條評論

econi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<