使用Zookeeper與Thrift構建Ha的LogServer


zookeeper簡介

     ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,它包含一個簡單的原語集,分布式應用程序可以基於它實現同步服務,配置維護和命名服務等。目前zookeeper被應用於hadoop/hbase中進行節點的管理,通過zookeeper你可以很方便的開發出一些分布式控制的工具,比如分布式lock, barrier,countDown , Semaphore等,甚至有人使用zookeeper開發了一個分布式Collections.

zookeeper客戶端     

      我們構建分布式logserver系統,主要使用zookeeper的目錄服務,zookeeper本身有api可供我們來使用zookeeper的一些特性,但是zookeeper的api接口太生硬了,不方便使用,但這么強大的zookeeper肯定有很多公司在使用,他們一定會發現現有api的問題,肯定會出不少優秀的api,於是我們找到了Curator,Curator是Netflix開源的一套ZooKeeper客戶端框架. Netflix在使用ZooKeeper的過程中發現ZooKeeper自帶的客戶端太底層, 應用方在使用的時候需要自己處理很多事情, 於是在它的基礎上包裝了一下, 提供了一套更好用的客戶端框架。

Curator主要解決了三類問題:

    封裝ZooKeeper client與ZooKeeper server之間的連接處理;

    提供了一套Fluent風格的操作API;

    提供ZooKeeper各種應用場景(recipe, 比如共享鎖服務, 集群領導選舉機制)的抽象封裝.

    Curator實現的zookeeper的特性有如下這些:

使用Curator

       使用Curator向zookeeper注冊logserver,具體代碼見logserver的ZooKeeperManager類中的init方法:

   

使用Curator向zookeeper獲取注冊到zookeeper中的logserver信息,具體代碼見logserver項目ZooLogClient類中的init方法:

具體總結下來,就是使用curator向zookeeper注冊logserver,log的客戶端再使用curator獲取注冊的zookeeper信息,當某台logserver當機,zookeeper能通知到log的客戶端,以重新獲取新的logserver服務。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM