詳細的Dubbo配置也可以參考:https://blog.csdn.net/abcde474524573/article/details/53026110
(1)<dubbo:service/> 用於服務提供方暴露服務位置
例子:
1.interface: 服務實現的接口名稱
2.ref : 指向真正的服務實現類,已經在spring中定義了
3.version: 服務的版本
4.delay: 表示延遲注冊時間,也就是什么時候暴露服務,-1表示spring容器初始化完成時暴露服務(所以通常為-1)
5.timeout: 遠程服務調用超時時間(毫秒),默認為1000
6.connections: 對每個提供者的最大連接數,rmi\http\hessian等短連接協議表示限制連接數,dubbo等長連接協議表示建立的長連接個數
7.loadbalance : 負載均衡策略,也就是說同一個服務有多個提供者時,客戶端如何選擇提供者
1)random: 隨機分配,並且可以給提供者設置權重
2)roundrobin: 輪詢,也就是一個個輪流來調用.但是存在慢的提供者累積請求問題,比如:第二台機器很慢,但是沒掛,當請求調到第二台時就卡在那,久而久之,所有請求都卡在調到第二台上
3)leastactive: 最少活躍調用,也就是越慢的提供者獲得更少請求
4)consistenthash: 一致性hash,也就是如果參數相同就會發送到同一台機器上, 如果某一台掛掉了,原本發往該提供者的請求會平攤到其他提供者,不會引起劇烈變動
缺省只對第一個參數hash,如果要修改,可以配置
8.retries: 服務調用重試次數,不包括第一次,所以不需要重試設置為0,默認為2
9.cluster 集群方式
1)failover: 調用失敗會重試其他服務器,所以通常用於讀操作,但重試會帶來更長延遲
2)failfast: 快速失敗,只發起一次調用,如果失敗就立即報錯,通常用在新增\更新操作
3)failback: 失敗自動恢復,后台記錄失敗請求,定時重發,通常用於消息通知操作
4)failsafe: 也就是出現異常也沒事,比如寫入審計日志等操作
5)broadcast: 廣播所有服務提供者,挨個調用,只要有一台報錯就報錯,通常用來通知所有提供者更新緩存或日志等本地資源信息
6)forking: 並行調用多個服務器,只要一個成功就返回,通常用於實時性要求較高的讀操作,但會浪費更多服務資源
10.executes: 服務提供者每個方法最大可並行執行請求數
(2)<dubbo:reference/> 用於消費者引用服務的配置
例子:
1.id: 服務飲用beanId
2.interface : 服務接口名
3.version: 服務版本,需要與服務提供者的版本一致
4.protocol: 只調用指定協議的服務提供方
5.url : 點對點直連服務提供者地址,將繞過注冊中心
(3)<dubbo:protocol/> 服務提供者的協議配置.
如果需要支持多種協議,可以聲明多個<dubbo:rpotocol>標簽,並在<dubbo:service>中protocol屬性指定使用的協議
1.id : 協議的beanId,可以在<dubbo:service protocol="">中引用此ID,如果ID不填,缺省和name屬性值一樣,重復則在name后加序號
2.name: 協議名稱
3.port: 服務端口,dubbo協議默認為20800,http、hessian默認為80,rmi默認為1099. 如果配置為-1或沒配,則會自動分配一個沒被占用的端口
4.server: 協議的服務器實現類型,dubbo協議有mina、netty,默認為netty,http有jetty、servlet,默認為servlet
5.accesslog: 設置為true則會向logger中輸出訪問日志;也可以填寫日志文件路徑,直接把訪問日志輸出到指定文件
6.threadpool : 線程池類型,可選fixed/cached
7.threads: 服務線程池大小
8.dispatcher: 協議的消息派發方式,用於指定線程模型,如dubbo協議的all,direct等
(4)<dubbo:registry/> 注冊中心配置,服務的提供者、消費者都有此配置
如果有多個不同的注冊中心,可以聲明多個<dubbo:registry>標簽,並在<dubbo:service>或<dubbo:reference>的registry屬性指定使用的注冊中心。
1.address
注冊中心服務器地址,如果地址沒有端口缺省為9090,同一集群內的多個地址用逗號分隔,如ip:port,ip:port,不同集群的注冊中心則配置多個<dubbo:registry>
(5)<dubbo:provider/> 服務提供者缺省值配置。
為<dubbo:service>和<dubbo:protocol>標簽的缺省值設置
也就是說provider中有些設置是各個service公用的,又與默認值不一樣,就可以使用這個標簽
那么標簽中屬性也就和<dubbo:service>和<dubbo:protocol>完全一樣
如:
也就是說所有service默認的timeout=180000