Dubbo線程模型

 

鏈接個數:單鏈接

鏈接方式:長鏈接

傳輸協議:TCP

傳輸方式:NIO異步傳輸

序列化:Hessian二進制序列化

適用範圍:傳入傳出參數數據包較小(建議小於100K),消費者比提供者個數多,單一消費者沒法壓滿提供者,儘可能不要用dubbo協議傳輸大文件或超大字符串。 適用場景:常規遠程服務方法調用

Dubbo缺省協議採用單一長鏈接和NIO異步通信,適合於小數據量大併發的服務調用,以及服務消費者機器數遠大於服務提供者機器數的狀況。

缺點:

Dubbo缺省協議不適合傳送大數據量的服務,好比傳文件,傳視頻等,除非請求量很低。

事件處理線程說明
若是事件處理的邏輯能迅速完成,而且不會發起新的IO請求,好比只是在內存中記個標識,則直接在IO線程上處理更快,由於減小了線程池調度。
但若是事件處理邏輯較慢,或者須要發起新的IO請求,好比須要查詢數據庫,則必須派發到線程池,不然IO線程阻塞,將致使不能接收其它請求。
若是用IO線程處理事件,又在事件處理過程當中發起新的IO請求,好比在鏈接事件中發起登陸請求,會報「可能引起死鎖」異常,但不會真死鎖。java


Dispatcher
all 全部消息都派發到線程池,包括請求,響應,鏈接事件,斷開事件,心跳等。
direct 全部消息都不派發到線程池,所有在IO線程上直接執行。
message 只有請求響應消息派發到線程池,其它鏈接斷開事件,心跳等消息,直接在IO線程上執行。
execution 只請求消息派發到線程池,不含響應,響應和其它鏈接斷開事件,心跳等消息,直接在IO線程上執行。
connection 在IO線程上,將鏈接、斷開事件放入隊列,有序逐個執行,其它消息派發到線程池。數據庫


ThreadPool
fixed 固定大小線程池,啓動時創建線程,不關閉,一直持有。(缺省)
cached 緩存線程池,空閒一分鐘自動刪除,須要時重建。
limited 可伸縮線程池,但池中的線程數只會增加不會收縮。(爲避免收縮時忽然來了大流量引發的性能問題)。json

配置如:緩存

<dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100"/>

 

屬性                                                                    對應URL參數                                                類型 是否必填 缺省值 做用 描述 兼容性
id   string 可選 dubbo 配置關聯 協議BeanId,能夠在<dubbo:service protocol="">中引用此ID,若是ID不填,缺省和name屬性值同樣,重複則在name後加序號。 2.0.5以上版本
name <protocol> string 必填 dubbo 性能調優 協議名稱 2.0.5以上版本
port <port> int 可選

dubbo協議缺省端口爲20880,rmi協議缺省端口爲1099,服務器

http和hessian協議缺省端口爲80 
若是配置爲-1 或者 沒有配置port,則會分配一個沒有被佔用的端口。網絡

Dubbo 2.4.0+,分配的端口在協議缺省端口的基礎上增加,確保端口段可控。併發

服務發現 服務端口 2.0.5以上版本
host <host> string 可選 自動查找本機IP 服務發現 -服務主機名,多網卡選擇或指定VIP及域名時使用,爲空則自動查找本機IP,-建議不要配置,讓Dubbo自動獲取本機IP 2.0.5以上版本
threadpool threadpool string 可選 fixed 性能調優 線程池類型,可選:fixed/cached 2.0.5以上版本
threads threads int 可選 100 性能調優 服務線程池大小(固定大小) 2.0.5以上版本
iothreads threads int 可選 cpu個數+1 性能調優 io線程池大小(固定大小) 2.0.5以上版本
accepts accepts int 可選 0 性能調優 服務提供方最大可接受鏈接數 2.0.5以上版本
payload payload int 可選 88388608(=8M) 性能調優 請求及響應數據包大小限制,單位:字節 2.0.5以上版本
codec codec string 可選 dubbo 性能調優 協議編碼方式 2.0.5以上版本
serialization serialization string 可選 dubbo協議缺省爲hessian2,rmi協議缺省爲java,http協議缺省爲json 性能調優 協議序列化方式,當協議支持多種序列化方式時使用,好比:dubbo協議的dubbo,hessian2,java,compactedjava,以及http協議的json等 2.0.5以上版本
accesslog accesslog string/boolean 可選   服務治理 設爲true,將向logger中輸出訪問日誌,也可填寫訪問日誌文件路徑,直接把訪問日誌輸出到指定文件 2.0.5以上版本
path <path> string 可選   服務發現 提供者上下文路徑,爲服務path的前綴 2.0.5以上版本
transporter transporter string 可選 dubbo協議缺省爲netty 性能調優 協議的服務端和客戶端實現類型,好比:dubbo協議的mina,netty等,能夠分拆爲server和client配置 2.0.5以上版本
server server string 可選 dubbo協議缺省爲netty,http協議缺省爲servlet 性能調優 協議的服務器端實現類型,好比:dubbo協議的mina,netty等,http協議的jetty,servlet等 2.0.5以上版本
client client string 可選 dubbo協議缺省爲netty 性能調優 協議的客戶端實現類型,好比:dubbo協議的mina,netty等 2.0.5以上版本
dispatcher dispatcher string 可選 dubbo協議缺省爲all 性能調優 協議的消息派發方式,用於指定線程模型,好比:dubbo協議的all, direct, message, execution, connection等 2.1.0以上版本
queues queues int 可選 0 性能調優 線程池隊列大小,當線程池滿時,排隊等待執行的隊列大小,建議不要設置,當線程程池時應當即失敗,重試其它服務提供機器,而不是排隊,除非有特殊需求。 2.0.5以上版本
charset charset string 可選 UTF-8 性能調優 序列化編碼 2.0.5以上版本
buffer buffer int 可選 8192 性能調優 網絡讀寫緩衝區大小 2.0.5以上版本
heartbeat heartbeat int 可選 0 性能調優 心跳間隔,對於長鏈接,當物理層斷開時,好比拔網線,TCP的FIN消息來不及發送,對方收不到斷開事件,此時須要心跳來幫助檢查鏈接是否已斷開 2.0.10以上版本
telnet telnet string 可選   服務治理 所支持的telnet命令,多個命令用逗號分隔 2.0.5以上版本
register register boolean 可選 true 服務治理 該協議的服務是否註冊到註冊中心 2.0.8以上版本
contextpath contextpath String 可選 缺省爲空串 服務治理   2.0.6以上版本
相關文章
相關標籤/搜索