Dubbo入門筆記(一)

#開發環境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
  • JS錯誤不修改,請自行忽視。
  • 修復mavan的警告 * dubbo-parent pom.xml
    * maven-jar-plugin version:2.4
    * maven-surefire-plugin Version 2.19.1
    * maven-deploy-plugin Version 3.3.9
  • 項目導入後修復Dubbo XML校驗錯誤提示
  • 須要導入dubbo.xsd文件
    * 下載dubbo-2.5.3.jar 版本儘可能保持源碼同步,解壓dt後導入eclipse中。
    • Preferences-XML-XML Catalog 添加一個自定義的:
    "http://code.alibabatech.com/schema/dubbo">
*   關於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)

待續。。。服務器

#參考文獻網絡

相關文章
相關標籤/搜索