dubbo接口開發文檔


<dubbo:protocol

  • 事件處理線程說明
  • 如果事件處理的邏輯能迅速完成,並且不會發起新的IO請求,比如只是在內存中記個標識,則直接在IO線程上處理更快,因為減少了線程池調度。
  • 但如果事件處理邏輯較慢,或者需要發起新的IO請求,比如需要查詢數據庫,則必須派發到線程池,否則IO線程阻塞,將導致不能接收其它請求。
  • 如果用IO線程處理事件,又在事件處理過程中發起新的IO請求,比如在連接事件中發起登錄請求,會報“可能引發死鎖”異常,但不會真死鎖。

<dubbo:registry

有時候希望人工管理服務提供者的上線和下線,此時需將注冊中心標識為非動態管理模式。

<dubbo:registry address="10.20.141.150:9090" dynamic="false" />

 

 

不同服務在性能上適用不同協議進行傳輸,比如大數據用短連接協議,小數據大並發用長連接協議。

 

異步調用

基於NIO的非阻塞實現並行調用,客戶端不需要啟動多線程即可完成並行調用多個遠程服務,相對多線程開銷較小。

<dubbo:reference id="fooService" interface="com.alibaba.foo.FooService">

      <dubbo:method name="findFoo" async="true" />

</dubbo:reference>

<dubbo:reference id="barService" interface="com.alibaba.bar.BarService">

      <dubbo:method name="findBar" async="true" />

</dubbo:reference>

 

 

 

應用間聲明依賴強度,哪些功能強依賴,哪些弱依賴,然后基於依賴強度,計算出影響面,並定期測試復查,加強關鍵路徑上的服務的優化和容錯,清理不該在關鍵路徑上的服務。

提供容錯Mock數據,Mock數據也應可以在注冊中心在運行時動態下發,當某服務不可用時,用Mock數據代替,可以減少故障的發生,比如某驗權服務,當驗權服務全部掛掉后,直接返回false表示沒有權限,並打印Error日志報警。

另外,前端的頁面也應采用Portal進行降級,當該Portal獲取不到數據時,直接隱藏,或替換為其它模塊展示,並提供功能開關,可人工干預是否展示,或限制多少流量可以展示。

結果緩存

(+) (#)

 

結果緩存,用於加速熱門數據的訪問速度,Dubbo提供聲明式緩存,以減少用戶加緩存的工作量。

 

2.1.0以上版本支持

     

示例代碼:https://github.com/alibaba/dubbo/tree/master/dubbo-test/dubbo-test-examples/src/main/java/com/alibaba/dubbo/examples/cache

  • lru 基於最近最少使用原則刪除多余緩存,保持最熱的數據被緩存。
  • threadlocal 當前線程緩存,比如一個頁面渲染,用到很多portal,每個portal都要去查用戶信息,通過線程緩存,可以減少這種多余訪問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM