微服務之Dubbo,Zookeeper
RPC:
RPC(Remote Procedure Call)—遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。在OSI網路通訊模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網路分散式多程式在內的應用程式更加容易。
RPC採用客戶機/伺服器模式。請求程式就是一個客戶機,而服務提供程式就是一個伺服器。首先,客戶機呼叫程序傳送一個有程序引數的呼叫資訊到服務程序,然後等待應答資訊。在伺服器端,程序保持睡眠狀態直到呼叫資訊到達為止。當一個呼叫資訊到達,伺服器獲得程序引數,計算結果,傳送答覆資訊,然後等待下一個呼叫資訊,最後,客戶端呼叫程序接收答覆資訊,獲得程序結果,然後呼叫執行繼續進行。
有多種 RPC模式和執行。最初由 Sun 公司提出。IETF ONC 憲章重新修訂了 Sun 版本,使得 ONC RPC 協議成為 IETF 標準協議。現在使用最普遍的模式和執行是開放式軟體基礎的分散式計算環境(DCE)。
工作原理編輯:
執行時,一次客戶機對伺服器的RPC呼叫,其內部操作大致有如下十步:
1.呼叫客戶端控制代碼;執行傳送引數
2.呼叫本地系統核心傳送網路訊息
3.訊息傳送到遠端主機
4.伺服器控制代碼得到訊息並取得引數
5.執行遠端過程
6.執行的過程將結果返回伺服器控制代碼
7.伺服器控制代碼返回結果,呼叫遠端系統核心
8.訊息傳回本地主機
9.客戶控制代碼由核心接收訊息
10.客戶接收控制代碼返回的資料
Dubbo是微服務,服務是service
把controller和service放在一起的缺點
1,不容易定位bug
2,不容易擴充套件
3,不能單獨釋出
分散式優點
1,容易定位bug
2,容易擴充套件
3,能單獨釋出
分散式實現:
分析:
2.3.設計
2.3.1.Rpc server
1.Maven quick start
2.cartService
3.cartServiceImpl
4.providerMain
2.3.2.Rpc client
1.maven quick start
2.cartService
3.CartController.invoke 測試
4.Invoke中聯網 測試
實現:
RPC總結:
Zookeeper:
安裝Zookeeper:
解壓壓縮檔案。建立資料夾data log
[root@iZwz9c6jlipu33po7lw2kgZ zookeeper-3.4.8]# tar -zxvf zookeeper-3.4.8.tar.gz
[root@iZwz9c6jlipu33po7lw2kgZ zookeeper-3.4.8]# mkdir data log
開啟資料夾:
cd /usr/local/src/zookeeper/zookeeper-3.4.8/conf
更改檔名:
[root@iZwz9c6jlipu33po7lw2kgZ conf]# mv zoo_sample.cfg zoo.cfg
12行修改dataDir,增加dataLogDir
dataDir=/usr/local/src/zookeeper-3.4.8/data
dataLogDir=/usr/local/src/zookeeper-3.4.8/log
啟動zookeeper伺服器:
在/usr/local/src/zookeeper/zookeeper-3.4.8/bin 開啟資料夾
指令:
Redis-server redis-cli
zkServer.sh zkCli.sh
[root@iZwz9c6jlipu33po7lw2kgZ bin]# sh zkServer.sh start
//啟動zookeeper
進入zookeeper客戶端:
[root@iZwz9c6jlipu33po7lw2kgZ bin]# sh zkCli.sh
列出註冊的服務:
[zk: localhost:2181(CONNECTED) 0] ls /
退出:
[zk: localhost:2181(CONNECTED) 1] quit
Dubbo案例:
步驟:
1.建立maven
2.依賴dubboInterface
3.依賴dubbo,zookeeper
4.實現類CartServiceImpl
5.applicationContext-provider.xml
6.啟動spring框架
7.執行zkCli.sh
Dubbo後臺管理,監控
不同jdk用不同的root.war
1.檢視windows 的jdk版本號
2.把對應的root.war拷貝到tomat/webapps
3.雙擊/bin/startup.bat啟動tomcat,tomcat會把root.war解壓到root中
4.修改root/web-inf/dubbo.properties
dubbo.registry.address=zookeeper://192.168.216.202:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
5.重啟tomcat
6.瀏覽器訪問http://localhost:8090
修改root/web-inf/dubbo.properties
在這裡插入程式碼片