Dubbo學(xué)習總結(jié) - 無碼

Dubbo總體的使用和源碼分析,都在git上有體現(xiàn),參考git:https://github.com/apache/incubator-dubbo

本文主要是針對看過知識點,做下總結(jié)記錄。

Dubbo是SOA服務(wù)治理,

簡單的說就是對各個接口方法做管理,比如監(jiān)查,控制等操作。

這些操作不止是API接口,還可以頁面配置。

頁面配置可以看git:http://dubbo.apache.org/books/dubbo-admin-book/ops/dubbo-ops.html

API(主要是xml參數(shù)的配置)可以參考http://dubbo.apache.org/books/dubbo-user-book/demos/thread-model.html

總結(jié)下Dubbo的缺點,個人覺得比較明顯的地方,列舉了出來

a、服務(wù)提供方與調(diào)用方接口依賴方式太強:調(diào)用方對提供方的抽象接口存在強依賴關(guān)系,需要嚴格的管理版本依賴,才不會出現(xiàn)服務(wù)方與調(diào)用方的不一致導(dǎo)致應(yīng)用無法編譯成功等一系列問題;

?b、服務(wù)對平臺敏感,難以簡單復(fù)用:通常我們在提供對外服務(wù)時,都會以REST的方式提供出去,這樣可以實現(xiàn)跨平臺的特點。

Dubbo快速上手使用示例

1. 抽出公共接口

? 可以建立個小工程,寫個接口,打個小jar包,放到生產(chǎn)者和消費者中

2. 建立生產(chǎn)者

? 做兩件事:建立producer的xml,和啟動producer

3. 建立消費者

? 也是做兩件事:建立consumer的xml,和啟動consumer

CODE:

可以見官網(wǎng)文檔:http://dubbo.apache.org/books/dubbo-user-book/quick-start.html

示例:

producer.xml

consumer.xml

兩個角色找服務(wù)是根據(jù)com.alibaba.dubbo.examples.merge.api.MergeService類全路徑找的,與application name之類的屬性無關(guān)

Dubbo開發(fā)實現(xiàn),主要參見http://dubbo.apache.org/books/dubbo-user-book/demos/fault-tolerent-strategy.html

1. 啟動時檢查

? ? 默認就可以(true)

? ?

2. 集群容錯

? ? 這里提到了Invoker了,白話講就是對服務(wù)的抽象代理。

? ? 分為多種模式(快速失敗,失敗重試之類的),有不同的介紹

? ?

3. 負載均衡

? ? 調(diào)用機制。針對的是producer和consumer,可以精確Service(類)和方法

4. 線程模型

? ? 針對producer的線程池(不同類型),原理與jdk中的線程池一樣

5. 直連提供者

? ? 線上開發(fā)沒有用。簡單說就是Unit Test,繞過zk,測試接口服務(wù)。

6. 只訂閱

7. 只注冊

? ? 個人情況而言,這兩個在線上對我用處不大

8. 靜態(tài)服務(wù)

? ? 代碼控制producer的啟用禁用

9. 多協(xié)議

? ? 主要就是可以 長、短連接、http之類的配置

10.?多注冊中心

? ? producer和consumer 可以使用多個注冊組件服務(wù)

11. 服務(wù)分組

? ? 當一個接口有多種實現(xiàn)時,可以用 group 區(qū)分。

? ? 簡單說就是 consumer調(diào)用不同的producer ServiceImpl

12. 多版本

? ? 就是根據(jù)不同的pom值,取不同的接口、ServiceImpl

13. 分組聚合

? ? 就是從不同producer的ServiceImpl中,分別取結(jié)果

14. 參數(shù)驗證

? ? 攔截器,注解形勢,驗證參數(shù)的規(guī)則(非空,長短...)

15. 結(jié)果緩存

? ? consumer端緩存結(jié)果數(shù)據(jù)

16.?

另外開發(fā)拓展參考http://dubbo.apache.org/books/dubbo-dev-book/

======================

Dubbo用到的相關(guān)技術(shù)簡單講解

Hessian的使用

CODE

web.xml

-

- ????helloService

- ????com.caucho.hessian.server.HessianServlet

- ????

- ????????service-class

- ????????com.test.hessian.impl.BaseServiceImpl

- ????

-

-

-

- ????helloService

- ????/helloService

-

?- service

public interface BasicAPI {

public String hello();

}

public class BasicServiceImpl extends HessianServlet implements BasicAPI {

private String _greeting = "Hello, world";

public void setGreeting(String greeting)

{

_greeting = greeting;

}

public String hello()

{

return _greeting;

}

}

?- client

String url = "http://localhost/helloService";

HessianProxyFactory factory = new HessianProxyFactory();

BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class, url);

System.out.println("hello(): " + basic.hello());

Hessian總結(jié)

Binary-RPC 是一種和 RMI 類似的遠程調(diào)用的協(xié)議,它和 RMI 的不同之處在于它以標準的二進制格式來定義請求的信息 ( 請求的對象、方法、參數(shù)等 ) ,這樣的好處是什么呢,就是在跨語言通訊的時候也可以使用。

來看下 Binary -RPC 協(xié)議的一次遠程通信過程:

1 、客戶端發(fā)起請求,按照 Binary -RPC 協(xié)議將請求信息進行填充;

2 、填充完畢后將二進制格式文件轉(zhuǎn)化為流,通過傳輸協(xié)議進行傳輸;

3 、接收到在接收到流后轉(zhuǎn)換為二進制格式文件,按照 Binary -RPC 協(xié)議獲取請求的信息并進行處理;

4 、處理完畢后將結(jié)果按照 Binary -RPC 協(xié)議寫入二進制格式文件中并返回。

=========

Hessian 是由 caucho 提供的一個基于 binary-RPC 實現(xiàn)的遠程通訊 library 。

1 、是基于什么協(xié)議實現(xiàn)的?

基于 Binary-RPC 協(xié)議實現(xiàn)。

2 、怎么發(fā)起請求?

需通過 Hessian 本身提供的 API 來發(fā)起請求。

3 、怎么將請求轉(zhuǎn)化為符合協(xié)議的格式的?

Hessian 通過其自定義的串行化機制將請求信息進行序列化,產(chǎn)生二進制流。

4 、使用什么傳輸協(xié)議傳輸?

Hessian 基于 Http 協(xié)議進行傳輸。

5 、響應(yīng)端基于什么機制來接收請求?

響應(yīng)端根據(jù) Hessian 提供的 API 來接收請求。

6 、怎么將流還原為傳輸格式的?

Hessian 根據(jù)其私有的串行化機制來將請求信息進行反序列化,傳遞給使用者時已是相應(yīng)的請求信息對象了。

7 、處理完畢后怎么回應(yīng)?

? ? ? ? ? ?? 處理完畢后直接返回, hessian 將結(jié)果對象進行序列化,傳輸至調(diào)用端。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 0 準備 安裝注冊中心:Zookeeper、Dubbox自帶的dubbo-registry-simple;安裝Du...
    七寸知架構(gòu)閱讀 14,114評論 0 88
  • Dubbo是什么 Dubbo是Alibaba開源的分布式服務(wù)框架,它最大的特點是按照分層的方式來架構(gòu),使用這種方式...
    Coselding閱讀 17,461評論 3 196
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • 我活得如此絕望,不知道該干些什么,不知道該去追求什么。我本能地認為自己追求不到。
    清溪淺淺流閱讀 125評論 0 0
  • N久不見的好友,突然之間,聯(lián)系上了,有一些激動,有一些慌張,有一些不知所措………… 沒有客套的寒暄,沒有假意的問候...
    程程姐閱讀 425評論 0 0

友情鏈接更多精彩內(nèi)容