dubbo+zookeeper

 引言:html

       根據公司項目計劃我先學習 dubbo+zookeeper 先不看JeeSite 企業信息管理系統基礎框架,後期本身跟進吧,iBase4J 先看這個。。。。。java

 zookeeper :node

      前言:算法

      ZooKeeper 是一個開源的分佈式協調服務,由雅虎建立,是 Google Chubby 的開源實現。分佈式應用程序能夠基於 ZooKeeper 實現諸如數據發佈/訂閱、負載均衡、命名服務、分佈式協調/通知、集羣管理、Master 選舉、分佈式鎖和分佈式隊列等功能。-------->這句話我理解的是Zookeeper 是服務,數據庫

      先學概念吧:我理解的分佈式:一個公司會大體分總裁 ,副總裁,經理 ,副經理,員工 等 這就是一個分佈式 。總裁把工做分步到各個下屬 ,下屬再往下分另外一個下屬,當合做公司須要東西就跟總裁要,總裁跟下屬要而總裁就是ZooKeeper。apache

      ZooKeeper被設計用來存儲協調數據:狀態信息,配置,位置信息等。這種元信息一般是以千字節爲單位的,若是不是字節的話。網絡

      ZooKeeper具備1M的內置完整性檢查,以防止它被用做大型數據存儲,但一般用於存儲更小的數據架構

  ZooKeeper 服務自己經過一組包含該服務的機器進行復制這些機器在持久性存儲中維護數據樹的內存映像以及事務日誌和快照。因爲數據保存在內存中,ZooKeeper可以得到很是高的吞吐量和低延遲數量。內存數據庫的缺點是ZooKeeper能夠管理的數據庫的大小受限於內存。負載均衡

    這個限制是進一步的緣由,以保持在znodes存儲的數據量小。框架

     

集羣角色:

     ZooKeeper 有三種:Leader Follower Observer 。一個 ZooKeeper 集羣同一時刻只會有一個 Leader,其餘都是 Follower 或 Observer。

我邊安裝部署邊學吧:ZooKeeper的安裝包括單機模式安裝,以及集羣模式安裝。--->單機模式(stand-alone)、集羣模式和集羣僞分佈模式。

  Zookeeper 能夠運行在多個系統平臺上,以下圖

系統 開發環境 生產環境
Linux 支持 支持
Solaris 支持 支持
FreeBSD 支持 支持
Windows 支持 不支持
MacOS 支持 不支持

  ZooKeeper是用Java編寫的,運行在Java環境上,所以,在部署zk的機器上須要安裝Java運行環境。爲了正常運行zk,咱們須要JRE1.6或者以上的版本。 對於集羣模式下的ZooKeeper部署,3個ZooKeeper服務進程是建議的最小進程數量,並且不一樣的服務進程建議部署在不一樣的物理機器上面,以減小機器宕機帶來的風險,以實現ZooKeeper集羣的高可用。 

我下載ZooKeeper 地址:http://mirrors.hust.edu.cn/apache/zookeeper

解壓後目錄:

    • bin目錄 
      zk的可執行腳本目錄,包括zk服務進程,zk客戶端,等腳本。其中,.sh是Linux環境下的腳本,.cmd是Windows環境下的腳本。
    • conf目錄 
      配置文件目錄。zoo_sample.cfg爲樣例配置文件,須要修改成本身的名稱,通常爲zoo.cfg(ZooKeeper 配置很簡單,每一個節點的配置文件(zoo.cfg)都是同樣的,只有 myid 文件不同。myid 的值必須是 zoo.cfg中server.{數值}{數值}部分。)。log4j.properties爲日誌配置文件。
    • lib 
      zk依賴的包。
    • contrib目錄 (其實我解壓完沒有這個目錄呢)
      一些用於操做zk的工具包。
    • recipes目錄 
      zk某些用法的代碼示例

下面單機安裝: 

是指只部署一個zk進程,客戶端直接與該zk進程進行通訊。上面提到,conf目錄下提供了配置的樣例zoo_sample.cfg,要將zk運行起來,須要將其名稱修改成zoo.cfg。打開後:

    • tickTime 
      時長單位爲毫秒,爲zk使用的基本時間度量單位。例如,1 * tickTime是客戶端與zk服務端的心跳時間,2 * tickTime是客戶端會話的超時時間。 
      tickTime的默認值爲2000毫秒,更低的tickTime值能夠更快地發現超時問題,但也會致使更高的網絡流量(心跳消息)和更高的CPU使用率(會話的跟蹤處理)。(之後慢慢懂。。。。。)
    • clientPort 
      zk服務進程監聽的TCP端口,默認狀況下,服務端會監聽2181端口。
    • dataDir 
      無默認配置,必須配置,用於配置存儲快照文件的目錄。若是沒有配置dataLogDir,那麼事務日誌也會存儲在此目錄。

  

啓動:

在Windows環境下,進入到bin目錄,而且啓動zkServer.cmd,這個腳本中會啓動一個java進程

 dubbo:是一個分佈式服務框架(按照分層的方式來架構)由阿里巴巴開源

  Dubbo採用的是一種很是簡單的模型,要麼是提供方提供服務,要麼是消費方消費服務,因此基於這一點能夠抽象出服務提供方(Provider)和服務消費方(Consumer)兩個角色。

包括基於接口的遠程調用,容錯和負載均衡,以及自動服務註冊和發現。達博框架普遍應用於阿里巴巴內外,其餘公司包括京東噹噹qunarkaola等。天天爲2千多個服務提供大於30億次訪問量支持,並被普遍應用於阿里巴巴集團的各成員站點以及別的公司的業務中。

Dubbo提供三個關鍵功能,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

zookeeper至關一個文件系統,能夠用來存儲數據,所謂的註冊到zk上去,就是把接口信息寫到zk上去保存起來。經過命令能夠清楚看到dubbo其實把接口調用信息全都註冊到zk上了,經過咱們經過另外一個dubbo(註冊在相同的zk上)去消費,dubbo上記錄了接口的調用信息就能夠,經過這些信息去調用接口。能夠看到下面記錄哪一個IP,哪一個端口號。如下是我的理解:記錄的信息,其實zookeeper只負責註冊,調用方法是由dubbo去調就是zookeeper的配置管理功能體現。還有zookeeper在這裏還有負載均衡的體現,dubbo上有三個默認負載均衡算法,RandomLoadBalance(隨機算法),RoundRobinLoadBalance(輪詢算法),LeastActiveLoadBalance(最少活躍算法)。zookeeper將用你選擇的算法,爲你選擇一臺機器,所以zookeeper就幫你負載均衡了。

相關文章
相關標籤/搜索