91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld

發布時間:2020-07-31 21:20:35 來源:網絡 閱讀:16948 作者:wyp57801314 欄目:軟件技術

Nacos是什么?

引用官方的介紹,他主要提供以下幾個功能點:

  • 動態配置服務
  • 服務發現及管理
  • 動態DNS服務

動態配置服務

就是通過一個系統,管理系統中的配置項,在配置項需要更新的時候,可以通過管理系統去操作更新,更新完了之后,會主動推送到訂閱了這個配置的客戶端
具體的使用場景,例如,在系統中,會有數據庫的鏈接串,賬號密碼等配置信息,常規的做法是寫在配置文件里面,如果需要修改更新,需要重新打包編譯,如果你是分布式集群,那成本太大了,通常我們都會將它抽取出來,存放到db,或者一個管理系統,Nacos,就是這個管理系統,Nacos還提供主動通知的能力,DB是沒有的,在自己的系統代碼里面,可以監聽某個配置,如果在管理系統上修改了配置項,客戶端的監聽函數,會立刻執行,在里面,你可以拿到最新的配置,執行自己的業務邏輯

服務發現及管理

這個主要是針對分布式的微服務集群系統,某A集群提供服務出去,其他應用集群,需要消費到A集群的服務,需要一個系統去管理A集群的ip列表,其他應用集群,去這個系統才能獲取到A集群的ip列表,進行調用,同時該系統需要能夠自動將A集群中無法工作的ip進行去除掉,這樣才能保證調用方調用成功,Nacos就是提供這種能力的一個系統

動態DNS服務

這個理解起來也簡單,我們平常在代碼里面 ,訪問一個http的api,通常是帶一個域名的,請求的時候,一般會先去DNS域名服務器上面尋找該域名對應的ip,再發起http請求,Nacos可以充當這個DNS域名服務器的角色的,優點是什么呢?Nacos提供了比DNS域名服務器更方便的管理能力,新增一個域名,只需要在Nacos的控制臺上面配置一下,同時它還提供了包括權重,健康檢查,屬性,路由等DNS服務器不具備的能力,比DNS的產品功能,穩定性,靈活性,超出太多了
Nacos除了能夠解決上面提到的一些場景,大家可以自由發揮,反正它的能力在那里,至于怎么用,就靠你們聰明的腦袋了。
?
下面,我們嘗試從Nacos的官方源碼拉一份下來,進行一個服務的發布,訂閱的簡單流程,讓大家更有體感去感受下Nacos的功能。
?
下載源碼
?
Nacos的代碼是托管在github上,https://github.com/alibaba/nacos
開始之前先start關注一下,加上watch,后續Nacos的郵件列表也會通知到你,可以關注到Nacos的最新實時消息.

深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld

我們首先直接下載Nacos的源碼到本地,下載地址如下圖:
深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld

然后,要從github上把代碼拉下來,命令如下:

git clone git@github.com:alibaba/nacos.git

執行完之后,出現下圖進度
深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld

編譯啟動
下載完后,在本地會有一個nacos的文件夾,進去后,執行編譯打包的命令:

mvn -Prelease-nacos clean install -U -Dmaven.test.skip=true

執行完之后,在nacos/distribution/target文件夾里面,會生成如下幾個工程文件:
深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld
忽略archive-tmp,將nacos-server-0.2.0.zip或者nacos-server-0.2.0.tar.gz直接copy到你的服務器上面,
然后解壓開來,得到一個叫nacos的文件夾,里面的結構如下:
深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld

進入bin文件,里面有啟動,關閉nacos server的腳本,我們執行一下啟動腳本,注意,nacos server的啟動,有2種方式,一種是集群模式,一種是單機模式,由于集群模式還需要一些其他的配置才能運行,今天我們就跑單機模式,需要加一個特殊參數,命令如下:

sh startup.sh -m standalone

命令執行完之后,出現提示:

nacos is starting,you can check the /home/caogu.wyp/test/nacos/logs/start.log

我們可以去/nacos/logs/start.log看下啟動日志,是否有報錯,如果有報錯,自己分析一下,找不到原因,聯系Nacos管理員 @超哥,他會很熱心的幫你解決問題滴。
啟動成功的日志如下:
深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld

同時, 我們也可以自己check下server的端口是否監聽成功,執行

netstat -ano|grep 8080 

深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld

發布一個服務

我們現在來用Java客戶端,發布和訂閱一個服務,客戶端,我們有2種方式運行,一個是在自己工程里面,通過maven坐標下載進來,另外一種,直接從下載的Nacos源碼里面,坐標如下:

<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>0.1.0</version>

由于我們有代碼,我就直接在工程里面進行操作了,工程結構如下,直接在test模塊里面,新建一個helloworld的包:
深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld
Pub類里面,是發布一條數據,代碼如下:

public class Pub {

    public static void main(String[] args) throws NacosException, InterruptedException {
        //發布的服務名
        String serviceName = "helloworld.services";
        //構造一個nacos實例,入參是nacos server的ip和服務端口
        NamingService naming = NamingFactory.createNamingService("100.81.0.34:8080");
        //發布一個服務,該服務對外提供的ip為127.0.0.1,端口為8888
        naming.registerInstance(serviceName, "127.0.0.1", 8888);
        Thread.sleep(Integer.MAX_VALUE);
    }
}

啟動之后,服務已經發布上去了

訂閱一個服務

下面是Sub的代碼:

public class Sub {

    public static void main(String[] args) throws NacosException, InterruptedException {
        //訂閱的服務名
        String serviceName = "helloworld.services";
        //創建一個nacos實例
        NamingService naming = NamingFactory.createNamingService("100.81.0.34:8080");
        //訂閱一個服務
        naming.subscribe(serviceName, event -> {
            if (event instanceof NamingEvent) {

                System.out.println("訂閱到數據");
                System.out.println(((NamingEvent) event).getInstances());
            }
        });
        System.out.println("訂閱完成,準備等數來");
        Thread.sleep(Integer.MAX_VALUE);
    }
}

我們嘗試啟動,會訂閱到剛才發布的數據:

深入淺出高性能服務發現、配置框架Nacos系列 1: HelloWorld

總結

上面流程,就是一個helloworld的服務發布和訂閱,夠簡單吧,在實際的生產環境中,一個服務下面往往掛有好幾個ip提供服務,在訂閱端,拿到服務下面的所有地址列表后,通過負載均衡策略,例如隨機策略,選擇到一個ip進行調用,這樣就完成了一次遠程調用。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

林西县| 四平市| 英吉沙县| 云安县| 云龙县| 大名县| 黄骅市| 岑巩县| 五常市| 泰和县| 静海县| 张家港市| 宁城县| 富顺县| 西盟| 大城县| 隆昌县| 阿克| 武邑县| 眉山市| 仪陇县| 额敏县| 黎城县| 富阳市| 商洛市| 安顺市| 澄城县| 桐梓县| 泗水县| 闸北区| 子长县| 宁远县| 浑源县| 宜兰市| 德兴市| 隆化县| 六枝特区| 正阳县| 鞍山市| 荆州市| 安岳县|