国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

etcd的java客戶端

econi / 2183人閱讀

摘要:客戶端鏈接鏈接初始化根據指定的配置名稱獲取對應的配置項根據指定的配置名稱獲取對應的配置項新增或者修改指定的配置刪除指定的配置配置初始化和監聽加載配置啟動監聽線程對某一個配置進行監聽獲取事件變化類型獲取發生變化的獲取變化后的

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

    /**
     * 根據指定的配置名稱獲取對應的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;
        }
    }

    /**
     * 根據指定的配置名稱獲取對應的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配置初始化和監聽
    public void init() {
        try {
            // 加載配置
            getConfig(client.getKVClient().get(ByteSequence.fromString("test")).get().getKvs());
            // 啟動監聽線程
            new Thread(() -> {
                // 對某一個配置進行監聽
                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());
                            // 獲取發生變化的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;
        }
    }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74840.html

相關文章

  • 運行在 Docker 上微服務 - 服務發現與注冊

    摘要:運行在上的微服務服務發現與注冊在上一節中,我們學習了如何在上構建一個風格的微服務。接下來,我們將學習如何把運行在上的微服務暴露在服務中心上,以便客戶端的調用。資源服務在關閉時需要將服務實例在服務中心進行注銷操作。響應用戶的終止。 運行在 Docker 上的微服務 - 服務發現與注冊 tags: Docker Microservice RESTful etcd Author: And...

    陳偉 評論0 收藏0
  • PowerDotNet平臺化軟件架構設計與實現系列(04):服務治理平臺

    摘要:的服務治理平臺發源于早期的個人項目。客戶端發現模式要求客戶端負責查詢注冊中心,獲取服務提供者的列表信息,使用負載均衡算法選擇一個合適的服務提供者,發起接口調用請求。系統和系統之間,少不了數據的互聯互通。隨著微服務的流行,一個系統內的不同應用進行互聯互通也是常態。 PowerDotNet的服務治理平臺發源于早期的個人項目Power.Apix。這個項目借鑒了工作過的公司的服務治理方案,站在...

    reclay 評論0 收藏0
  • 2021 年最新基于 Spring Cloud 微服務架構分析

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

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

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

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

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

    yhaolpz 評論0 收藏0

發表評論

0條評論

econi

|高級講師

TA的文章

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