Meteor-zookeeper使用說明書

Meteor-zookeeper使用說明書

項目地址:

Meteor-zookeeper-core  https://github.com/18106960985/meteor-zookeeper 是一個對zookeeper操作的集成方案,其核心設計目的 - 對內高對內聚、無入侵, 採用fastjson序列化與反序列化,內置了數據本地緩存,實現節點監聽

對外開箱即用、易擴展、輕量級,提供豐富API方法,它可以幫助你快速的管理zookeeper。

Meteor-zookeeper-admin  採用了居說是最新的前端技術棧的 vue-element-ui 這裏就不做更多闡述,在需要自定義UI的情況下請自行查看該項目說明

縮略圖 

 

目錄

1. 前言 1

1.1. 編寫的目的 1

1.2. 系統架構圖 2

1.3. 數據結構圖 3

2. 術語和定義、縮略語 3

2.1. 縮略語 3

3. Zk-CORE說明 4

3.1. 數據類型 4

3.2. Zk-core 4

3.3. ZKUtils 5

3.4. AppConfig 5

3.5. Initializer (Curator實例) 6

3.6. TreeCacheInitialize (ZNode監聽器) 6

4. admin-zookeeper-ui說明 7

4.1.1. 項目技術簡介 7

4.1.2. 主要組件說明 7

  1. 前言
    1. 編寫的目的

  當你的應用程序以分佈式的形式被實現的時候,服務之間的錯誤和競爭是不可避免的,這使得它們在變化的存在下變得十分脆弱並難以管理,及時正確的執行了,這些服務也會應爲管理的複雜性而增加不必要的精力,那麼爲什麼不將這些交給Zookeeper?它能提供:維護配置信息,域名服務,分佈式同步和組服務!

curator-web用於獲取服務不同環境下的配置信息,對數據進行本地化並保證其數據與服務器同步,web上提供了可視化操作管理ZK,減少了部署時候修改配置的操作以及配置信息同步

    1. 系統架構圖

 

meteor-curator架構圖

 

 

 

    1. 數據結構圖
znode

Znode的結構是一個類似文件目錄的樹結構

  1. 術語和定義、縮略語
    1. 縮略語

下列縮略語適用於本文件。

ZK——分佈式協調應用(Zookeeper)

WEB——Zookeeper 視圖管理工具(Admin-we)

CORE——核心依賴JAR。(Zk-core)

UI——前端視圖文件(admin-zookeeper-ui)

 

  1. Zk-CORE說明
    1. 數據類型

存儲在Znode上的數據類型對應見 表 1:

表 1 數據類型

數據類型

示例

描述及要求

MAP

Key1=value

Key2=value

key = value 格式,鍵值對之間使用換行符進行拆分

LIST

1

2

3

數組之間使用換行符進行拆分

STRING

string字符串

UTF8 編碼,若無數據,置空 其他基本類型一致

YAML

#zk 的目錄監聽
key: value

請使用yml格式

PROPERTIES

 

Key2.xxx=value

請使用properties文件格式

JSON

{key : value}

請使用json 數據格式

 

    1. Zk-core

 core是分佈式集羣服務依賴jar

Maven引入

<dependency>
   <groupId>meteor-curator</groupId>

   <artifactId>curator-core</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</dependency>

API簡介見 表 1:

表 1 API簡介

類名

描述

ZKUtil

提供基礎的增刪改查方法,包含持久化操作

ZKNode

znode數據模型

Initializer

Curator clinet實例

TreeCacheInitialize

zNode 監聽實例,需要要配置config/spring/zk.yml

AppConfig

對外提供的接口方法

 

    1. ZKUtils

 

ZkUtils 封裝了對zk的具體操作方法,該操作都會將數據保存至磁盤 說明見表2:

表 2 ZkUtils主要方法

 方法

描述及參數說明

tree

獲取znode 樹形結構模型 (path 可選節點,null默認爲根節點)

setData

新增或者修改節點數據 (Path 節點 data 節點數據)

getData

獲取zk節點值 (path 節點路徑)

remove

 移除zk節點 path節點

getYml

封裝了getData方法,獲取節點數據並轉換成yml 對象

 

示例:

//該方法能獲取整個znode 並且會緩存在本地磁盤

ZKNode zkNode = ZKUtil.tree(null);

//該方法能獲取到存儲在zookeeper 的yml格式數據對象

Yaml ymlConfig = ZKUtil.getYaml("/xxxx", Yaml.class);

//setData 方法能改變ZK服務上的節點數據 ,

String path ="/module/admin/urls";

//這是一個map類型 的數據結構
String data = "maven=http//:maven.test.net.cn:88";
ZKUtil.setData(path,data);

    1. AppConfig

AppConfig 在ZKUtils的基礎上提供給對外的接口,並提供更多複合類型的轉換 見表3

表 3 AppConfig

方法

描述及參數說明

getItemValue

獲取zk的節點數據優先從緩存中讀取 (key 節點路徑 ,clazz 返回的類型 包含基本類型以及MAP LIST 和bean類)

getProp

獲取zk的節點的properties 數據優先從緩存中讀取 (key 節點路徑 ,clazz 返回 類型)

getMap

獲取zk的節點的Map數據優先從緩存中讀取 (key 節點路徑 ,clazz 返回 類型)

getJson

獲取zk的節點的JSON數據優先從緩存中讀取 (key 節點路徑 ,clazz 返回 類型)

 

示例:

String path ="/module/admin/urls";
//默認返回String 類型
 String str =  AppConfig.getItemValue(path);
 //選擇返回Map類型
 Map<String,String> params = AppConfig.getItemValue(path,Map.class);

 

    1. Initializer (Curator實例)

 zk-core與ZK交互是採用了TCP協議。Initializer是curator client的實例

 

Initializer是curator client的生命週期控制類 表 1:

表 1 Initializer

方法

描述及要求

init

建立連接並獲得到zookeeper實例

close

關閉連接

reInit

Client 重啓

 

詳細請看代碼

    1. TreeCacheInitialize (ZNode監聽器)

當ZK服務器更改數據的時候,我們需要監聽變動並及時更新 treeCache做的就是這件事情。默認不啓用

要求: 啓用需要引入meteor.yml  請放置在resource下  

配置示例:

#zk監聽配置 注意!!該數據格式爲數組形式
rootPath:
              #監聽根節點 監聽全部子節點
              - /
              #監聽test 及test全部子節點
              - /test

說明:

ZK_ROOT_PATHS 是配置的屬性KEY ,其數據是爲數組類型

  1. meteor-curator-admin說明
      1. 項目技術簡介

  Admin-Zookeeper-ui是使用開源項目vue-element-admin搭建,使用的是以vue爲主體技術的vue-element-ui組件。

 

 

      1. 主要組件說明

Admin-Zookeeper-ui 主要組件說明見表1

表 1 主要組件

組件

描述及使用到的地方

axios

VUE所推薦的類ajax請求組件,負責HTTP協議請求。

Vue-router

 針對前端的路徑路由組件,與axios實現動態路由,以及前端路由攔截器。

Vuex

vue的全局變量,與cookies結合實現多種狀態管理

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章