阿里雲提供全託管 ZooKeeper

自 2010 年左右第一次引入以來,Apache ZooKeeper 目前在阿里巴巴集團內部已經有了將近 10 年的發展,使用的場景很是普遍,基於 ZooKeeper 強一致性的特色,被用在了分佈式鎖、分佈式隊列、Leader 選舉、服務註冊發現和配置管理等多個大數據和微服務場景下,包括配置中心,註冊中心,分佈式框架下,分佈式調度框架,分佈式消息中間件,分佈式數據中間件等。安全

其中,在微服務場景中,註冊中心的地位舉足輕重,承載着地址路由的核心功能,常見的有 ZooKeeper,Eureka和 Nacos,在平常的研發中,若是沒有接觸運維過這些註冊中心的開發同窗,須要從新花大部分時間學習瞭解這些組件,而且若是想要在生產環境良好的運行它們,還須要有豐富的運維經驗。網絡

爲此,阿里雲推出了全託管的 ZooKeeper 集羣產品數據結構

快速部署,開箱即用

在微服務應用開發中,就算是寫個簡單的 HelloWorld 程序提早驗證業務流程,都須要手動預先搭建一套註冊中心,搭建的過程當中,各類註冊中心的多種配置參數,須要瞭解而且合理設置,若是須要到不一樣的註冊中心,搭建的方式又不能通用,完成一個簡單微服務接口的開發,花了 80% 的時間在環境的搭建上面。負載均衡

MSE 提供了一鍵開通集羣的能力,基於雲原生 K8s 資源底座,3 分鐘左右,你就能夠擁有一套屬於本身的註冊中心集羣,微服務引擎的交付物,很是簡單,就是一個鏈接串,後面已經幫你作好了負載均衡,高可用檢測等等,目前 MSE 支持 ZooKeeper 註冊中心,若是你有其餘註冊中心的需求,請肆無忌憚的告訴咱們,能夠在開通頁面選擇你須要的。框架

安全高效的連通方案

微服務引擎支持兩種網絡連通方案,公網實例和 VPC 專有網絡,公網實例模式會給集羣申請一個可供公網環境訪問的域名,默認是有網絡安全策略限制,沒法訪問的,須要用戶本身額外配置白名單策略,這樣最大限度的提高了系統的安全等級;VPC 專有網絡,是阿里雲的私網環境,網絡的隔離性更加完全,只有用戶本身的專有網絡,才能與微服務引擎實例連通,同時,網絡延時,更加低,網絡訪問質量高效。運維

兩種不一樣的網絡方案 ,覆蓋了用戶平常的使用場景,在非阿里雲網絡環境下,能夠經過公網模式,進行平常開發與測試,正式生產時,再切換至高效的專有網絡模式。分佈式

實用的節點管理

微服務引擎提供了節點數據管理的可視化頁面,ZooKeeper 的數據結構,在內存中是一顆樹,咱們將它一比一的在頁面上呈現出來,這樣就能直觀形象的看到整個內存數據的狀態,同時支持了能夠在頁面上對內存數據進行,增長,刪除,更新,查詢的常規操做。ide

在新增節點的時候,支持自動建立父目錄,刪除父節點的時候,支持遞歸刪除下面的子節點,所見即所得,很是方便,是 ZooKeeper 原生客戶端強功能有力的補充。微服務

白屏化參數設置

白屏化的運維,可以最大限度的下降線上安全事故,經過工具自動化,下降人帶來的不肯定性操做,微服務引擎,提供了註冊中心經常使用的配置項修改功能,能夠直接經過頁面上進行更改操做,更改完以後,一鍵重啓生效。ZooKeeper 目前支持經常使用的配置項以下所示,同時還支持超級用戶的設置,在你對 ZooKeeper 節點使用了 ACL 策略時,若是忘記了策略密碼,能夠經過超級用戶的方式,訪問加密數據。工具

高可用能力

微服務引擎實例,默認使用的是多可用區部署,這意味着,具有了多區域的容災能力,在某個可用區出現系統性故障時,能夠最大限度的保證總體服務的連續可用性。

微服務引擎的資源底座,依託於容器服務 ACK,是一款久經考驗的商業化產品,同時也是阿里集團內規模化最大的在線服務容器組件,可以支持節點宕機自動恢復,磁盤使用的是阿里雲的高性能雲盤,保證在節點出現故障事,數據的完備性。

兼容原生接口

微服務引擎支持的註冊中心,原則之一,就是徹底兼容原產品的接口和功能,無需修改代碼,對用戶使用徹底透明,若是須要切回原產品,也是無縫切換,不存在使用壁壘,給用戶最大的選擇。

Dubbo 應用集成 MSE

接下來,經過開發一個平常的 Dubbo 微服務應用,給你們演示下如何集成 MSE(微服務引擎),下面是部署結構圖:

首先,登錄微服務引擎官網,申請 1 個 ZooKeeper 集羣實例,目前公測階段,實例是無償使用的,只須要開通一下服務,不收取任何其餘費用:

進入微服務引擎控制檯以後,點擊「建立實例」按鈕,這裏咱們選擇建立公網實例,配置選擇 1 核 2G 。

點擊建立以後,進入列表頁,這裏會展現你全部的集羣,剛建立集羣,運行狀態會變成「啓動/加載中」,整個建立過程,在 3 分鐘左右,以後你就擁有一個屬於本身的 ZooKeeper 的集羣了。

mse-f3288e50-p.zk.mse.aliyuncs.com(外)這個連接串,是提供的外網域名,剛生產出來,是訪問不了的,由於安全的限制,須要給它加白名單,加白名單的入口,從集羣列表頁,點擊管理,進入管理頁面,白名單設置按鈕:

白名單的設置規則是,須要把你的公網出口 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 實例以後,能夠開始寫一個 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 的進程關閉後,這個節點會消失,可是父節點不會,能夠本身驗證一下。

接下來,咱們啓動一下 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/」下面:

同時,它也是屬於臨時節點,節點名字是通過 URL 編碼的,解碼後能夠看到以下:

除了能夠看到註冊在 ZooKeeper 上面的數據結構及內容,微服務引擎還提供了 ZooKeeper 常見的監控圖,例如客戶端連接數,訪問ZooKeeper 的 TPS(寫操做),QPS(讀操做),以下圖所示:

結束語

經過上面的微服務示例開發,不須要太多的的運維學習成本,很快就擁有了本身的 1 個 ZooKeeper 集羣,大大提升了研發效率,專一於業務,微服務引擎目前處於公測期間,徹底免費,申請地址點擊這裏,歡迎體驗。

 

本文做者:中間件小哥

原文連接

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索