天天看點

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

本文來自暢銷書《從 Paxos 到 Zookeeper》作者倪超,講述了其對阿裡雲最新釋出的微服務引擎 MSE 産品的使用初體驗。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

(圖檔來自《從 Paxos 到 ZooKeeper 》一書的封面)

螢幕前的讀者朋友們

如果

正在為運維 ZooKeeper

這份至關重要,但繁瑣而枯燥

甚至心裡沒底的活

而煩惱

正在為自己的應用

找尋一個高可用,且免運維的

ZooKeeper

那麼,它來了

阿裡雲全托管的 ZooKeeper 叢集産品

微服務引擎 MSE

讀者可以在任何搜尋引擎搜尋“微服務引擎 MSE”,即可直達産品官網。

阿裡巴巴和 ZooKeeper 的結緣

從微服務引擎 MSE 的官方網站上,了解到,自 2010 年左右第一次引入以來,Apache ZooKeeper 目前在阿裡巴巴集團内部已經有了将近 10 年的發展,使用的場景非常廣泛,基于 ZooKeeper 強一緻性的特點,被用在了分布式鎖、分布式隊列、Leader 選舉、微服務注冊發現和配置管理等多個大資料和微服務場景下。

其中,在微服務場景中,注冊中心的地位舉足輕重,承載着位址路由的核心功能,常見的有 ZooKeeper,Eureka 和 Nacos,在日常的研發中,如果沒有接觸過這些注冊中心的開發同學,需要花不少時間學習這些元件,而如果想要在生産環境中良好的運作它們,還需要有豐富的運維經驗。

為此,阿裡雲推出了

全托管的 ZooKeeper 叢集産品 —— MSE

接下來,我将以一個 Dubbo 應用為例,快速體驗如何使用 MSE 的 ZooKeeper 叢集。

快速建立,開箱即用

MSE 提供了一鍵建立叢集的能力,3 分鐘左右,就可以擁有一套屬于自己的 ZooKeeper 叢集,微服務引擎的接入點,非常簡單,就是一個連接配接串,和自己搭建的 ZooKeeper 是一樣的,而且從控制台頁面上,我發現這個接入點已經為我們做好了負載均衡和高可用檢測 —— 也就是說,自己不用關心叢集節點的可用性了。

目前公測階段,執行個體是免費使用的,隻需要開通一下服務,不收取任何其他費用。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

進入微服務引擎控制台之後,點選「建立執行個體」按鈕,這裡我們選擇建立公網執行個體,配置選擇 1 核 2G 。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

題外話,從控制台上可以看到,目前 MSE 僅支援 ZooKeeper,而如果有其他注冊中心的需求,請肆無忌憚的告訴他們的産品團隊吧,可以在開通頁面投票選擇你需要的。

點選建立之後,進入清單頁,這裡會展示你所有的叢集。剛剛我建立的那個叢集,運作狀态會變成「啟動/加載中」,整個建立過程大約會花費 3 分鐘左右的時間,之後你就擁有一個屬于自己的 ZooKeeper 的叢集了。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

安全高效的網絡連通方案

微服務引擎 MSE 支援兩種網絡連通方案,公網執行個體和 VPC 專有網絡,公網執行個體模式會給叢集申請一個可供公網環境通路的域名,預設是有網絡安全政策限制,無法通路的,需要使用者自己額外配置白名單政策,這樣最大限度的提升了系統的安全等級;VPC 專有網絡,是阿裡雲的私網環境,網絡的隔離性更加徹底,隻有使用者自己的專有網絡,才能與微服務引擎執行個體連通,同時,網絡延時,更加低,網絡通路品質高效。

兩種不同的網絡方案 ,覆寫了使用者日常的使用場景,在非阿裡雲網絡環境下,可以通過公網模式,進行日常開發與測試,正式生産時,再切換至高效的專有網絡模式。

在上文截圖中所示的「mse-f3288e50-p.zk.mse.aliyuncs.com」這個連結串,是提供的外網域名,剛生産出來,是通路不了的,因為安全的限制,需要給它加白名單,加白名單的入口如下:

叢集清單頁 - 管理 - 白名單設定

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

白名單的設定規則是,需要把你的公網出口 IP 或者 IP 段,添加進來,才能通路到 ZooKeeper 叢集,例如,此次我本機的出口公網 IP 為“42.120.74.119”,那麼設定的格式為“42.120.74.119/32”,

擷取本機出口公網 IP 的方法,可直接通路

https://www.ip.cn/

設定完之後,可通過如下指令驗證,與 Zookeeper 的連通是否成功:

echo mntr |nc mse-f3288e50-p.zk.mse.aliyuncs.com 2181

資料管理

微服務引擎提供了節點資料管理的可視化頁面,ZooKeeper 的資料結構,在記憶體中是一顆樹,我們将它一比一的在頁面上呈現出來,這樣就能直覺形象的看到整個記憶體資料的狀态,同時支援了可以在頁面上對記憶體資料進行增加、删除、更新和查詢的正常操作。

在新增節點的時候,支援自動建立父目錄,删除父節點的時候,支援遞歸删除下面的子節點,所見即所得,非常友善,是 ZooKeeper 原生用戶端強功能有力的補充。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

參數設定

白屏化的運維,能夠最大限度的降低線上安全事故,通過工具自動化,降低人帶來的不确定性操作,微服務引擎,提供了注冊中心常用的配置項修改功能,可以直接通過頁面上進行更改操作,更改完之後,一鍵重新開機生效。ZooKeeper 目前支援常用的配置項如下所示,同時還支援超級使用者的設定,在你對 ZooKeeper 節點使用了 ACL 政策時,如果忘記了政策密碼,可以通過超級使用者的方式,通路加密資料。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

釋出 Dubbo 服務

接下來,通過開發一個日常的 Dubbo 微服務應用,給大家示範下如何內建 MSE(微服務引擎),下面是部署結構圖:

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

申請完 ZooKeeper 執行個體之後,可以開始寫一個 DubboProvider ,代碼如下:

public class DubboProvider {
    private final static String ZOOKEEPER_URL = "mse-f3288e50-p.zk.mse.aliyuncs.com";
    public static void main(String[] args) throws InterruptedException {
        ServiceConfig<GreetingService> service = new ServiceConfig<>();
        service.setApplication(new ApplicationConfig("first-dubbo-provider"));
        service.setRegistry(new RegistryConfig("zookeeper://" + ZOOKEEPER_URL + ":2181"));
        service.setInterface(GreetingService.class);
        service.setRef(new GreetingsServiceImpl());
        service.export();
        System.out.println("======dubbo service started");
        new CountDownLatch(1).await();
    }
}           

把 ZOOKEEPER_URL 換成你申請的位址連結串即可,可直接啟動,啟動之後,我們通過微服務引擎的資料管理頁面,可以清晰看到, DubboProvider 将自己的服務中繼資料,釋出在“/dubbo/dubbo.GreetingService/providers/”目錄下面,以一個節點(dubbo%3A開頭)形式存在, 這是 1 個 ZooKeeper 的臨時節點,當把 Provider 的程序關閉後,這個節點會消失,但是父節點不會,可以自己驗證一下。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

訂閱 Dubbo 服務

接下來,我們啟動一下 Consumer 節點,需要連接配接同一個 ZooKeeper 注冊中心,訂閱剛才釋出的接口位址清單,代碼如下:

public class DubboConsumer {
    private final static String ZOOKEEPER_URL = "mse-f3288e50-p.zk.mse.aliyuncs.com";
    public static void main(String[] args) throws InterruptedException {
        ReferenceConfig<GreetingService> reference = new ReferenceConfig<>();
        reference.setApplication(new ApplicationConfig("first-dubbo-consumer"));
        reference.setRegistry(new RegistryConfig("zookeeper://" + ZOOKEEPER_URL + ":2181"));
        reference.setInterface(GreetingService.class);
        GreetingService service = reference.get();
        String message = service.sayHello("dubbo");
        System.out.println("======"+message);
        Thread.sleep(Integer.MAX_VALUE);
    }
}           

啟動之後,我們通過資料管理頁面,可以看到,Consumer 在 ZooKeeper 上面也注冊了 1 個節點,在路徑“/dubbo/dubbo.GreetingService/consumers/”下面:

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

同時,它也是屬于臨時節點,節點名字是經過 URL 編碼的,解碼後可以看到如下:

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

監控

除了可以看到注冊在 ZooKeeper 上面的資料結構及内容,微服務引擎還提供了 ZooKeeper 常見的監控圖,例如用戶端連結數,通路 ZooKeeper 的 TPS(寫操作),QPS(讀操作),如下圖所示:

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語
3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語
3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

高可用

微服務引擎執行個體,預設使用的是多可用區部署,這意味着,具備了多區域的容災能力,在某個可用區出現系統性故障時,可以最大限度的保證整體服務的連續可用性。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

相容原生接口

微服務引擎支援的注冊中心,原則之一,就是完全相容原産品的接口和功能,無需修改代碼,對使用者使用完全透明,如果需要切回原産品,也是無縫切換,不存在使用壁壘,給使用者最大的選擇。

結束語

通過上面的微服務示例開發,可以看到,不需要太多的的運維學習成本,很快就擁有了自己的 1 個 ZooKeeper 叢集,大大提高了研發效率,專注于業務,微服務引擎目前處于公測期間,完全免費,申請位址點選

這裡

,歡迎體驗。

如果您在使用微服務引擎 MSE 過程中有任何疑問,官方還提供了使用者交流群,掃描下面的二維碼就可以加入。

3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語
3分鐘,了解阿裡雲熱門産品 ZooKeeper阿裡巴巴和 ZooKeeper 的結緣快速建立,開箱即用安全高效的網絡連通方案資料管理參數設定釋出 Dubbo 服務訂閱 Dubbo 服務監控高可用相容原生接口結束語

繼續閱讀