#開發環境html
- 筆記僅供參考,具體開發環境可能存在版本差別。
- OS:Windows 10
- JDK:SUN 1.8
- Eclipse:4.5[STS Spring定製版]
- Maven:3.3.9
#Dubboreact
- 服務治理(SOA)治理框架
- Duboo是一個分佈式服務框架
- 遠程通信:提供多種基於長連接的NIO框架抽象封裝,包括多種線程模型、序列化「請求-響應」的信息交換方案。
- 集羣容錯:提供基於接口方法的透明遠程調用過程,包括多協議支持、軟負載均衡、失敗容錯、地址路由、動態配置等集羣支持。
- 自動發現:基於註冊中心目錄服務,使服務消費方能動態地查找提供方,使地址透明,使服務提供方能夠平滑增或減小機器。
- 介紹: * 致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。
* Dubbo的命名:澳大利亞達博市 * 同類型框架:
- Apache Thrift、Hessian、RMI、WebService(原生)、HSF(淘寶,不開源)、JSF(京東,不開源)。
* Dubbo涉及的基礎知識
- 遠程調用方面:RMI、Hassion、WebService、Thrift進行底層調用。
- 通信交互:HTTP、Mian、netty。
- 序列化:Hession二、Java、Json。
- 容器:Jetty、Spring。
- 負載均衡:zookeeper、Redis。(大部分都是zookeeper) * 簡單的使用場景
- 做爲對內提供服務應用的容器。
- 拆分負載Web應用到服務容器。
- 應用負載均和協調。
- 引用服務處理。
#架構節點(抽象概念)git
- Provider:暴露服務的服務提供方。
- Consumer:調用遠程服務的服務消費方。
- Registry:服務註冊於發現服務
- Monitor:統計服務的調用次調用時間監控中心
- Container:服務運行容器
- 節點調用關係
- 服務提供-服務提供者在啓動的時候,向註冊中心提供本身提供的服務。
- 服務消費-服務消費者在啓動的時候,向註冊中心訂閱本身所須要的服務。
- 註冊中心異步返回服務提供者地址列表給消費者,若是有變更,註冊中心將給予長鏈接推送變動數據給消費者。
- 服務統計-服務者和消費者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
- 服務調用關係
- 服務消費者,從提供者地址列表中,基於[軟負載均衡算法],選一臺提供者進行調用,若是調用失敗,在選另外一臺調用。
#Dubbo源碼相關github
* 初次編碼不執行Test ```
mvn clean install -Dmaven.test.skip=true
* 關於maven-dependency-plugin錯誤 多是IDE錯誤提示,空白處添加空格保存自動消失。
* 錯誤信息以下:Artifact has not been packaged yet. When used on reactor artifact, unpack should be executed after packaging: see MDEP-98. (org.apache.maven.plugins:maven-dependency-plugin:2.8:unpack:unpack:package)
* 修復方案更改插件配置:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version
<executions>
<execution>
<id>unpack</id>
<phase>packaged</phase>
<goals>
<goal>unpack</goal>
</goals>
</execution>
</executions>
- Dubbo源碼模塊
- Config配置層(Dubbo-config)
- Proxy服務代理層(Dubbo-rpc)
- Registry註冊中心層(Dubbo-registry)
- Cluster路由層(Dubbo-cluster)
- Monitor監控層(Dubbo-monitor)
- Protocol遠程調用層(Dubbo-rpc)
- Exchange信息交換層(Dubbo-remoting)
- Transport網絡傳輸層(Dubbo-remoting)
- Serialize數據序列化層(Dubbo-common)
#Zookeeper (測試方案採用zookeeper作均衡負載,簡單介紹下配置信息)apache
- 下載地址 http://apache.fayea.com/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
- 基本配置:
- 單機模式:修改zookeeper-3.4.8/conf zoo.cfg(原始文件名zoo_sanple.cfg複製一份重命名)
- 編輯內容(僅供參考,具體環境自行修改)
- tickTime = 2000
- tickTime:基本事件單元,以毫秒爲單位。這個時間是做爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。
- initLimit= 5
- initLimit:這個配置項用來配置Zookeeper接受客戶端初始化鏈接時最長能忍受多少個心跳時間間隔數,當已超過5個心跳的時間(也就是tickTime)長度後Zookeeper服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度是5 * 2000=4s。
- dataDir = D:\zookeeper\data
- 顧名思義就是 Zookeeper 保存數據快照的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏)。
- dataLogDir= D:\zookeeper\log
- 顧名思義就是 Zookeeper 保存日誌的目錄。
- synclimit = 5
- 這個配置項表示Leader與Follower之間發送消息,請求和應答時間長長度,最長不能超過多少個tickTime的時間長度,總的時間長度是2 * 2000 = 4s。
- clientPort = 2181
- 這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
- Server(待續)
- 格式:server.id=host:port:port(兩個port保證能夠正常使用就行)
- id:一般爲整數,建議使用整數。
- host:服務器的IP地址。
- port: Follower端口
- port: Leader選舉投票。
- ZooKeeper建議使用hostname,而非ip。這須要對主機的/etc/hostname和/etc/hosts作host綁定(不用的OS不一樣修改方式)。
- 建立一個myid文件(放在 dataDir文件下面)
- 寫入一行數據(請查閱zoo.cfg文件)
- 寫入當前Zookeeper id位置的數據便可。表示當前系統環境Zookeeper是哪個Server(通信用的)。
#Dubbo程序運行tomcat
- 測試運行,默認配置便可。注意與zookeeper一臺機器。
- 運行Dubbo-admin本機tomcat啓動啓動成功後127.0.0.1:8080/dubbo-admin(注意默認請設置跟目錄,不然部分功能不發正常顯示)
- 默認用戶名密碼(root/root,guest/guest)
待續。。。服務器
#參考文獻網絡