組成部分java
Client: 是ZooKeeper客戶端的一個替代品, 提供了一些底層處理和相關的工具方法
Framework: 用來簡化ZooKeeper高級功能的使用, 並增長了一些新的功能, 好比管理到ZooKeeper集羣的鏈接, 重試處理
Recipes: 實現了通用ZooKeeper的recipe, 該組件創建在Framework的基礎之上
Utilities:各類ZooKeeper的工具類
Errors: 異常處理, 鏈接, 恢復等
Extensions: recipe擴展apache
包
curator-recipes 全部典型應用場景。例如:分佈式鎖服務、集羣領導選舉、共享計數器、緩存機制、分佈式隊列等)的抽象封裝等。須要依賴client和framework,需設置自動獲取依賴。
curator-async jdk8 異步操做
curator-framework Zookeeper API的高層封裝,大大簡化Zookeeper客戶端編程,添加了例如Zookeeper鏈接管理、重試機制等。
curator-client Zookeeper client的封裝,用於取代原生的Zookeeper客戶端(ZooKeeper類),提供一些很是有用的客戶端特性。
curator-test 包含TestingServer,TestingCluster和一些其餘有助於測試的工具。
curator-examples 各類使用Curator特性的例子。
curator-x-discovery 服務註冊發現,在SOA /分佈式系統中,服務須要相互尋找。curator-x-discovery提供了服務註冊,找到特定服務的單個實例,和通知服務實例什麼時候更改。
curator-x-discovery-server 服務註冊發現管理器,能夠和curator-x-discovery 或者非java程序程序使用RESTful Web服務以註冊,刪除,查詢等服務。編程
示例:緩存
@Bean(initMethod = "start", destroyMethod = "close") public CuratorFramework zookeeperClient() { //建立重試策略 RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 5); //建立zookeeper客戶端 CuratorFramework client = CuratorFrameworkFactory.builder().connectString("77.11.159.108:2181") //.authorization() //.connectionTimeoutMs() //.waitForShutdownTimeoutMs() //.sessionTimeoutMs(10000) .retryPolicy(retryPolicy) //.namespace("my-project") .build(); // 鏈接 //client.start(); //關閉鏈接 //client.close(); return client; }
zookeeper的身份認證有4種方式
(1)world: 它下面只有一個id, 叫anyone, world:anyone表明任何人,zookeeper中對全部人有權限的結點就是屬於world:anyone的
(2)auth: 它不須要id, 只要是經過authentication的user都有權限(zookeeper支持經過kerberos來進行authencation, 也支持username/password形式的authentication)
(3)digest: 它對應的id爲username:BASE64(SHA1(password)),它須要先經過username:password形式的authentication
(4)ip: 它對應的id爲客戶機的IP地址,設置的時候能夠設置一個ip段,好比ip:192.168.1.0/16, 表示匹配前16個bit的IP段
super: 在這種scheme狀況下,對應的id擁有超級權限,能夠作任何事情(cdrwa)session
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.5</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.2.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.2.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-client</artifactId> <version>4.2.0</version> </dependency>
參考:異步
https://blog.csdn.net/qq_34021712/article/details/82872311async