1. 程式人生 > 實用技巧 >Dubbo理論、zookeeper安裝、Dubbo-admin視覺化監控安裝

Dubbo理論、zookeeper安裝、Dubbo-admin視覺化監控安裝

一、分散式理論

什麼是分散式系統?
在《分散式系統原理與範型》一書中有如下定義: "分散式系統是若干獨立計算機的集合, 這些計算機對於使用者來說就像單個相關係統”;
分散式系統是由一組通過網路進行通訊、為了完成共同的任務而協調工作的計算機節點組成的系統。分散式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、儲存任務。其目的是利用更多的機器,處理更多的資料。

分散式系統(distributed system)是建立在網路之上的軟體系統。

首先需要明確的是,只有當單個節點的處理能力無法滿足日益增長的計算、儲存任務的時候,且硬體的提升(加記憶體、加磁碟、使用更好的CPU)高昂到得不償失的時候,應用程式也不能進一步優化的時候,我們才需要考慮分散式系統。因為,分散式系統要解決的問題本身就是和單機系統一樣的, 而由於分散式系統多節點、通過網路通訊的拓撲結構,會引入很多單機系統沒有的問題,為了解決這些問題又會引入更多的機制、協議,帶來更多的問題。。。

Dubbo文件
隨著網際網路的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分散式服務架構以及流動計算架構勢在必行,急需一個治理系統確保架構有條不紊的演進。
在Dubbo的官網文件有這樣一張圖:http://dubbo.apache.org/zh-cn/

image

單一應用架構

當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。此時,用於簡化增刪改查工作量的資料訪問框架(ORM)是關鍵。

垂直應用架構

當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,提升效率的方法之一是將應用拆成互不相干的幾個應用,以提升效率。此時,用於加速前端頁面開發的Web框架(MVC)是關鍵。

分散式服務架構

當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用於提高業務複用及整合的分散式服務框架(RPC)是關鍵。

流動計算架構

當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基於訪問壓力實時管理叢集容量,提高叢集利用率。此時,用於提高機器利用率的資源排程和治理中心(SOA)是關鍵。

二、RPC

1.什麼是RPC?

RPC [Remote Procedure Call]是指遠端過程呼叫,是一種程序間通訊方式, 他是一種技術的思想, 而不是規範。它允許程式呼叫另一個地址空間(通常是共享網路的另一臺機器上)的過程或函式,而不用程式設計師顯式編碼這個遠端呼叫的細節。即程式設計師無論是呼叫本地的還是遠端的函式,本質上編寫的呼叫程式碼基本相同。

也就是說兩臺伺服器A, B, 一個應用部署在A伺服器上,想要呼叫B伺服器上應用提供的函式/方法,由於不在一個記憶體空間,不能直接呼叫,需要通過網路來表達呼叫的語義和傳達呼叫的資料。為什麼要用RPC呢?就是無法在一個程序內, 甚至一個計算機內通過本地呼叫的方式完成的需求,比如不同的系統間的通訊,甚至不同的組織間的通訊,由於計算能力需要橫向擴充套件,需要在多臺機器組成的叢集上部署應用。RPC就是要像呼叫本地的函式一樣去調遠端函式;

RPC原理:

步驟解析:

RPC的兩個核心:通訊,序列化

三、Dubbo概念

1.什麼是dubbo?
Apache Dubbo I'dAbau|是一款高效能、 輕量級的開源Java RPC框架,它提供了三大核心能力:面向介面的遠端方法呼叫,智慧容錯和負載均衡,以及服務自動註冊和發現。

服務提供者(Provider) : 暴露服務的服務提供方,服務提供者在啟動時,向註冊中心註冊自己提供的服務。

服務消費者(Consumer) : 呼叫遠端服務的服務消費方,服務消費者在啟動時,向註冊中心訂閱自己所需的服務,服務消費者,從

提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,如果呼叫失敗,再選另一臺呼叫。

註冊中心(Registry) :註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者

監控中心(Monitor) :服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心

2.zookeeper下載

https://downloads.apache.org/zookeeper/zookeeper-3.5.8/

下載帶bin的包,解壓後以管理員身份執行/bin包下的zkServer.cmd

首次執行可能會閃退,在下圖位置加入pause,就能看到錯誤資訊,一般情況下會出現zoo.cfg找不到的錯誤,我們在config包下把zoo_sample.cfg複製一份然後改名成zoo.cfg即可正常啟動

2.Dubbo-admin

Dubbo本身並不是一個服務軟體。它其實就是一個jar包, 能夠幫你的java程式連線到zookeeper,並利用zookeeper消費、提供服務。
但是為了讓使用者更好的管理監控眾多的Dubbo服務,官方提供了一個視覺化的監控程式Dubbo-admin,不過這個監控即使不裝也不影響使用。

這裡直接我主頁資源下的jar包就好了

開啟jar包所在位置,然後在路徑欄輸入cmd開啟命令提示符,或者開啟命令提示符跳轉到jar包位置,輸入指令:

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

Dubbo-admin的預設埠號為7001,登入名和密碼預設都是root

http://localhost:7001/

就可以實現視覺化監控了