dubbo學習筆記---dubbo開發實戰

饅頭太帥了發表於2020-10-14

dubbo學習筆記—dubbo開發實戰

1.介面協定—api模組

2.dubbo的配置介紹

  1. 註解: 基於註解可以快速的將程式配置,無需多餘的配置資訊,包含提供者和消費者。但是這種方
    式有一個弊端,有些時候配置資訊並不是特別好找,無法快速定位。
  2. XML: 一般這種方式我們會和Spring做結合,相關的Service和Reference均使用Spring整合後的。
    通過這樣的方式可以很方便的通過幾個檔案進行管理整個叢集配置。可以快速定位也可以快速更
    改。
  3. 基於程式碼方式: 基於程式碼方式的對上述配置進行配置。這個使用的比較少,這種方式更適用於自己
    公司對其框架與Dubbo做深度整合時才會使用。

3.dubbo的管理控制檯

  1. 主要包含:服務管理 、 路由規則、動態配置、服務降級、訪問控制、權重調整、負載均衡等管理功能
  2. 如我們在開發時,需要知道Zookeeper註冊中心都註冊了哪些服務,有哪些消費者來消費這些服務。我們可以通過部署一個管理中心來實現。
  3. 其實管理中心就是一個web應用,原來是war(2.6版本以前)包需要部署到tomcat即可。現在是jar包可以直接通過java命令執行。

4.dubbo的配置說明:每個配置項都對應一個類

4-1.dubbo:application

對應 org.apache.dubbo.config.ApplicationConfig, 代表當前應用的資訊

  1. name: 當前應用程式的名稱,在dubbo-admin中我們也可以看到,這個代表這個應用名稱。我們在真正時是時也會根據這個引數來進行聚合應用請求。
  2. owner: 當前應用程式的負責人,可以通過這個負責人找到其相關的應用列表,用於快速定位到責任人。
  3. qosEnable : 是否啟動QoS 預設true
  4. qosPort : 啟動QoS繫結的埠 預設22222
  5. qosAcceptForeignIp: 是否允許遠端訪問 預設是false

4-2.dubbo:registry

org.apache.dubbo.config.RegistryConfig, 代表該模組所使用的註冊中心。一個模組中的服務可以將其註冊到多個註冊中心上,也可以註冊到一個上。後面再service和reference也會引入這個註冊中心。

  1. id : 噹噹前服務中provider或者consumer中存在多個註冊中心時,則使用需要增加該配置。在一
    些公司,會通過業務線的不同選擇不同的註冊中心,所以一般都會配置該值。
  2. address : 當前註冊中心的訪問地址。
  3. protocol : 當前註冊中心所使用的協議是什麼。也可以直接在 address 中寫入,比如使用zookeeper,就可以寫成 zookeeper://xx.xx.xx.xx:2181
  4. timeout : 當與註冊中心不再同一個機房時,大多會把該引數延長。

4-3.dubbo:protocol

org.apache.dubbo.config.ProtocolConfig, 指定服務在進行資料傳輸所使用的協議。

  1. id: 在大公司,可能因為各個部門技術棧不同,所以可能會選擇使用不同的協議進行互動。這裡
    在多個協議使用時,需要指定。
  2. name : 指定協議名稱。預設使用 dubbo 。
  3. 連結:http://dubbo.apache.org/zh-cn/docs/user/perf-test.html

4-4.dubbo:service

org.apache.dubbo.config.ServiceConfig, 用於指定當前需要對外暴露的服務資訊。和 dubbo:reference 大致相同。

  1. interface : 指定當前需要進行對外暴露的介面是什麼。
  2. ref: 具體實現物件的引用,一般我們在生產級別都是使用Spring去進行Bean託管的,所以這裡面一般也指的是Spring中的BeanId
  3. version : 對外暴露的版本號。不同的版本號,消費者在消費的時候只會根據固定的版本號進行消費。

4-5.dubbo:reference

org.apache.dubbo.config.ReferenceConfig, 消費者的配置,這裡只做簡單說明。

  1. id: 指定該Bean在註冊到Spring中的id。
  2. interface: 服務介面名
  3. version : 指定當前服務版本,與服務提供者的版本一致。
  4. registry: 指定所具體使用的註冊中心地址。這裡面也就是使用上面在 dubbo:registry 中所宣告的id。

4-6.dubbo:method

org.apache.dubbo.config.MethodConfig, 用於在制定的 dubbo:service 或者 dubbo:reference 中的更具體一個層級,指定具體方法級別在進行RPC操作時候的配置,可以理解為對這上面層級中的配置針對於具體方法的特殊處理。

  1. name : 指定方法名稱,用於對這個方法名稱的RPC呼叫進行特殊配置。
  2. async: 是否非同步 預設false

5.dubbo:service和dubbo:reference詳解

這兩個在dubbo中是我們最為常用的部分,其中有一些我們必然會接觸到的屬性。並且這裡會講到一些設定上的使用方案。
  1. mock: 用於在方法呼叫出現錯誤時,當做服務降級來統一對外返回結果,後面我們也會對這個方法做更多的介紹。
  2. timeout: 用於指定當前方法或者介面中所有方法的超時時間。我們一般都會根據提供者的時長來具體規定。比如我們在進行第三方服務依賴時可能會對介面的時長做放寬,防止第三方服務不穩定導致服務受損。
  3. check: 用於在啟動時,檢查生產者是否有該服務。我們一般都會將這個值設定為false,不讓其進行檢查。因為如果出現模組之間迴圈引用的話,那麼則可能會出現相互依賴,都進行check的話,那麼這兩個服務永遠也啟動不起來。
  4. retries: 用於指定當前服務在執行時出現錯誤或者超時時的重試機制。
    1. 注意提供者是否有冪等,否則可能出現資料一致性問題
    2. 注意提供者是否有類似快取機制,如出現大面積錯誤時,可能因為不停重試導致雪崩
  5. executes: 用於在提供者做配置,來確保最大的並行度。
    1. 可能導致叢集功能無法充分利用或者堵塞
    2. 但是也可以啟動部分對應用的保護功能
    3. 可以不做配置,結合後面的熔斷限流使用

相關文章