dubbo 各通訊協議比較


1.各協議的比較

 

協議名稱 實現描述 連接 使用場景
dubbo 傳輸:mina、netty、grizzy

序列化:dubbo、hessian2、java、json
    dubbo缺省采用單一長連接和NIO異步通訊    1.傳入傳出參數數據包較小

2.消費者 比提供者多

3.常規遠程服務方法調用

4.不適合傳送大數據量的服務,比如文件、傳視頻
rmi 傳輸:java  rmi

序列化:java 標准序列化
    

連接個數:多連接

連接方式:短連接

傳輸協議:TCP/IP

傳輸方式:BIO

1.常規RPC調用

2.與原RMI客戶端互操作

3.可傳文件

4.不支持防火牆穿透
hessian
傳輸:Serverlet容器

序列化:hessian二進制序列化
   

    連接個數:多連接
    連接方式:短連接
    傳輸協議:HTTP
    傳輸方式:同步傳輸

   

1.提供者比消費者多

2.可傳文件

3.跨語言傳輸
http
傳輸:servlet容器

序列化:表單序列化
    連接個數:多連接
    連接方式:短連接
    傳輸協議:HTTP
    傳輸方式:同步傳輸
1.提供者多余消費者

2.數據包混合
webservice
傳輸:HTTP

序列化:SOAP文件序列化
    連接個數:多連接
    連接方式:短連接
    傳輸協議:HTTP
    傳輸方式:同步傳輸

1.系統集成

2.跨語言調用
thrift
    與thrift RPC實現集成,並在基礎上修改了報文頭   

長連接、NIO異步傳輸   
 

 

2、協議的配置:<dubbo:protocal>(只需在服務提供方配置即可)

 

屬性 類型 是否必填 缺省值 描述
name string 必填 dubbo 協議名稱
port int 可選

dubbo協議缺省端口為20880,

rmi協議缺省端口為1099,

http和hessian協議缺省端口為80;

如果配置為-1或者沒有配置port,則

會分配一個沒有被占用的端口。

服務端口
threadpool string 可選 fixed 線程池類型,可選:fixed/cached
threads int 可選 100 服務h定大小)
iothreads int 可選 CPU個數+1 io線程池大小(固定)
accepts int 可選 0 服務提供方最大可接受連接數
serialization string 可選

dubbo協議缺省為hessian2,

rmi缺省協議為java,

http協議缺省為json

可填序列化:dubbo|hessian2|

java|compactedjava|fastjson

dispatcher string 可選 dubbo協議缺省為all

協議的消息派發方式,用於指定線程模型,

比如:dubbo協議的all, direct, message,

execution, connection等

參考:https://blog.csdn.net/fd2025/article/

details/79985542

queues int 可選 0

線程池隊列大小,當線程池滿時,

排隊等待執行的隊列大小,建議不要設置,

當線程程池時應立即失敗,重試其它服務

提供機器,而不是排隊,除非有特殊需求。

charset string 可選 UTF-8 序列化編碼
server server string

dubbo協議缺省為netty,

http協議缺省為servlet

hessian協議缺省為jetty

協議的服務器端實現類型,

比如:dubbo協議的mina,netty等,

http協議的jetty,servlet等

1    <dubbo:protocol name="hessian" server="jetty"
2                     client="httpclient"
3                     port="20880"
4                     threadpool="fixed"
5                     threads="50"
6                      iothreads="5"
7                     accepts="1000"/>

協議對應的源碼:

 

dubbo 協議com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol

RMI協議: com.alibaba.dubbo.rpc.protocol.rmi.RmiProtocol

Http協議com.alibaba.dubbo.rpc.protocol.http.HttpProtocol.InternalHandler

Hessian協議 :com.alibaba.dubbo.rpc.protocol.hessian.HessianProtocol.HessianHandler

 

 

 

dubbo多連接配置:

Dubbo 協議缺省每服務每提供者每消費者使用單一長連接,如果數據量較大,可以使用多個連接。

1 <dubbo:service connections="1"/>
2 <dubbo:reference connections="1"/>
  • <dubbo:service connections="0"> 或 <dubbo:reference connections="0"> 表示該服務使用 JVM 共享長連接。缺省
  • <dubbo:service connections="1"> 或 <dubbo:reference connections="1"> 表示該服務使用獨立長連接。
  • <dubbo:service connections="2"> 或<dubbo:reference connections="2"> 表示該服務使用獨立兩條長連接。

為防止被大量連接撐掛,可在服務提供方限制大接收連接數,以實現服務提供方自我保護。

<dubbo:protocol name="dubbo" accepts="1000" />

dubbo.properties 配置:

1 dubbo.service.protocol=dubbo

 

 

1.各協議的比較

 

協議名稱 實現描述 連接 使用場景
dubbo 傳輸:mina、netty、grizzy

序列化:dubbo、hessian2、java、json
    dubbo缺省采用單一長連接和NIO異步通訊    1.傳入傳出參數數據包較小

2.消費者 比提供者多

3.常規遠程服務方法調用

4.不適合傳送大數據量的服務,比如文件、傳視頻
rmi 傳輸:java  rmi

序列化:java 標准序列化
    

連接個數:多連接

連接方式:短連接

傳輸協議:TCP/IP

傳輸方式:BIO

1.常規RPC調用

2.與原RMI客戶端互操作

3.可傳文件

4.不支持防火牆穿透
hessian
傳輸:Serverlet容器

序列化:hessian二進制序列化
   

    連接個數:多連接
    連接方式:短連接
    傳輸協議:HTTP
    傳輸方式:同步傳輸

   

1.提供者比消費者多

2.可傳文件

3.跨語言傳輸
http
傳輸:servlet容器

序列化:表單序列化
    連接個數:多連接
    連接方式:短連接
    傳輸協議:HTTP
    傳輸方式:同步傳輸
1.提供者多余消費者

2.數據包混合
webservice
傳輸:HTTP

序列化:SOAP文件序列化
    連接個數:多連接
    連接方式:短連接
    傳輸協議:HTTP
    傳輸方式:同步傳輸

1.系統集成

2.跨語言調用
thrift
    與thrift RPC實現集成,並在基礎上修改了報文頭   

長連接、NIO異步傳輸   
 

 

2、協議的配置:<dubbo:protocal>(只需在服務提供方配置即可)

 

屬性 類型 是否必填 缺省值 描述
name string 必填 dubbo 協議名稱
port int 可選

dubbo協議缺省端口為20880,

rmi協議缺省端口為1099,

http和hessian協議缺省端口為80;

如果配置為-1或者沒有配置port,則

會分配一個沒有被占用的端口。

服務端口
threadpool string 可選 fixed 線程池類型,可選:fixed/cached
threads int 可選 100 服務h定大小)
iothreads int 可選 CPU個數+1 io線程池大小(固定)
accepts int 可選 0 服務提供方最大可接受連接數
serialization string 可選

dubbo協議缺省為hessian2,

rmi缺省協議為java,

http協議缺省為json

可填序列化:dubbo|hessian2|

java|compactedjava|fastjson

dispatcher string 可選 dubbo協議缺省為all

協議的消息派發方式,用於指定線程模型,

比如:dubbo協議的all, direct, message,

execution, connection等

參考:https://blog.csdn.net/fd2025/article/

details/79985542

queues int 可選 0

線程池隊列大小,當線程池滿時,

排隊等待執行的隊列大小,建議不要設置,

當線程程池時應立即失敗,重試其它服務

提供機器,而不是排隊,除非有特殊需求。

charset string 可選 UTF-8 序列化編碼
server server string

dubbo協議缺省為netty,

http協議缺省為servlet

hessian協議缺省為jetty

協議的服務器端實現類型,

比如:dubbo協議的mina,netty等,

http協議的jetty,servlet等

  1.  
    <dubbo:protocol name="hessian" server="jetty"
  2.  
    client= "httpclient"
  3.  
    port= "20880"
  4.  
    threadpool= "fixed"
  5.  
    threads= "50"
  6.  
    iothreads= "5"
  7.  
    accepts= "1000"/>

    

協議對應的源碼:

 

dubbo 協議com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol

RMI協議: com.alibaba.dubbo.rpc.protocol.rmi.RmiProtocol

Http協議com.alibaba.dubbo.rpc.protocol.http.HttpProtocol.InternalHandler

Hessian協議 :com.alibaba.dubbo.rpc.protocol.hessian.HessianProtocol.HessianHandler

 

 

 

dubbo多連接配置:

Dubbo 協議缺省每服務每提供者每消費者使用單一長連接,如果數據量較大,可以使用多個連接。

  1.  
    <dubbo:serviceconnections="1"/>
  2.  
    <dubbo:referenceconnections="1"/>
  • <dubbo:service connections="0"> 或 <dubbo:reference connections="0"> 表示該服務使用 JVM 共享長連接。缺省
  • <dubbo:service connections="1"> 或 <dubbo:reference connections="1"> 表示該服務使用獨立長連接。
  • <dubbo:service connections="2"> 或<dubbo:reference connections="2"> 表示該服務使用獨立兩條長連接。

為防止被大量連接撐掛,可在服務提供方限制大接收連接數,以實現服務提供方自我保護。

<dubbo:protocolname="dubbo"accepts="1000" />

dubbo.properties 配置:

dubbo.service.protocol=dubbo


免責聲明!

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



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