一、zookeeper註冊中心
談zookeeper之前,感覺還是需要聊一聊分佈式。不然一個陌生的技術作用在哪裏就體現不出來了。
在實際項目開發中,一個系統肯定不止你一個人開發,那麼在多位軟件開發工程師一起協調合作,項目管理和項目開發的調配不好統一管理,這時候就產生分佈式系統,目前國內分佈式系統最火的依然是alibba的Dubbo框架 ,而zookeeper就是Dubbo的核心註冊中心
分佈式: 分佈式系統是若干獨立計算機(服務器) 的集合 這些計算機相對用戶來講就是一個獨立的系統。分佈式系統(distributed system)是建立在網絡之上的服務器端一種結構。
1.註冊中心
zookeeper是一個高性能、分佈式的開放的分佈式應用程序協調服務。
翻譯過來是動物管理員他是一個樹形結構。這種樹形結構和標準文件系統相似。ZooKeeper 樹中的每個節點被稱爲Znode。和文件系統的目錄樹一樣,ZooKeeper 樹中的每個節點可以擁有子節點。每個節點表示一個唯一服務資源。Zookeeper 運行需要 java 環境。
2、安裝配置zookeeper
進入官網 下載好壓縮包 zookeeper-3.5.4-beta.tar.gz
修改配置文件 zookeeper-3.5.4/conf/ 複製 zoo-sample.cfg 改名爲 zoo.cfg
因爲在zookeeper啓動時會首先尋找zoo.cfg文件 ,並修改幾個屬性值
1.tickTime 心跳時間
每隔tickTime時間間隔發送一個心跳。zookeeper服務器之間或客戶端與服務器之間的維持心跳
2.dataDir 數據目錄
3.clientPort 端口號 默認是2181
那麼如何將Zookeeper加入到我們的項目裏呢?
<!--服務的名稱-->
<dubbo:application name="zk-node-shop-web"/>
<!--聲明dubbo註冊中心-->
<dubbo:registry address="zookeeper://localhost:2181" />
<dubbo:reference interface="com.bjpowernode.service.OrderService"
id="remoteOrderService" check="false" retries="2" timeout="6000" />
<dubbo:reference interface="com.bjpowernode.service.UserInfoService"
id="remoteUserService"
check="false"
retries="2"
timeout="6000"
version="1.0" />
<!--聲明自定義時候showServiceImpl對象-->
<bean id="showService" class="com.bjpowernode.service.impl.ShowServiceImpl">
<property name="orderService" ref="remoteOrderService" />
<property name="userInfoService" ref="remoteUserService" />
</bean>
這是一個服務的消費者,可以看到我們需要聲明Dubbo服務的名稱,聲明zookeeper註冊中心。其中。 retries 表示重試的次數,這個次數不建議設的過大。一次或者兩次就好,重試成功的機會不大。timeout 失效時間 ,check 屬性 一般建議設置爲false.若爲true表示啓動時需要先啓動服務的提供者,在啓動服務的消費者 否則啓動報錯。version版本號。
<!--設置服務名稱-->
<dubbo:application name="zk-node-shop-userservice"></dubbo:application>
<!--聲明註冊中心 dubbo:registry -->
<dubbo:registry address="zookeeper://localhost:2181"></dubbo:registry>
<!--聲明使用的協議-->
<dubbo:protocol name="dubbo" port="20882" />
<!--暴露接口,供消費者使用-->
<dubbo:service interface="com.bjpowernode.service.UserInfoService"
ref="userService" version="1.0"/>
再看我們服務的提供者。我們服務的提供者需要暴露我們的服務接口。供消費者使用
運行應用
先啓動註冊中心,這個項目是在windows上,所以找到我們剛剛的安裝目錄,
雙擊運行我們的zkServer.cmd 出現一個dos窗口。這個窗口不要關閉,
第二步運行我們的服務提供者
最後開啓我們的服務的消費者,訪問的時候也是直接訪問我們的服務消費者
二、Dubbo監控中心
Dubbo監控中心在程序中不是非要不可的,在一個Dubbo項目中,只需要我們的註冊中心、服務提供者和服務的消費者即可
dubbo-admin
這是國內alibaba公司提供的一個分佈式項目管理工具。
下載監控中心,https://github.com/apache/incubator-dubbo-ops
運行監控中心的jar包
可以修改dubbo-properties文件,推薦不修改,直接使用默認配置即可
啓動
先啓動註冊中心zookeeper zkServer.cmd
執行服務提供者
運行監控中心 在所在目錄下執行cmd 窗口命令 java -jar xxx
在瀏覽器地址欄輸入 http;//localhost:7001
默認的用戶名和密碼都是root