SSM+Maven+Dubbo+Zookeeper简单项目实战以及易错注意点
最近為了熟悉Dubbo遠程過程調用架構的使用,并結合SSM+Maven整合了簡單的一套項目實戰
直接看項目結構圖
各模塊介紹
dubbo-common:存放項目需要的公眾類,像查詢模型、數據庫實體模型等
dubbo-config:存放項目所需的公眾配置文件,像日志、數據庫連接信息配置文件等
dubbo-customer:Dubbo框架的服務消費方,也是http請求的入手
dubbo-interface:存放連接服務消費方和服務提供方的公共接口
dubbo-parent:存放整個項目所需的依賴,是其他模塊的父類
dubbo-provide:Dubbo框架的服務提供方,負責處理業務邏輯和數據庫請求
一般也有人把數據庫操作單獨整合成一個模塊(dubbo-dao),其實都一樣…
前置工作:安裝注冊中心Zookeeper,我選擇的是在linux系統下安裝,安裝步驟詳情網上有很多教程
注意:安裝配置完之后記得打開該linux系統2181端口的防火墻
具體代碼實現細節這里就不過多介紹了,這算是Dubbo最簡單的入門應用了吧。
講一下我在使用過程中遇到的一些問題:
要將dubbo-common中的實體模型,查詢模型等實現序列化接口(就是在服務消費方和服務提供方之間傳遞或使用的對象)
com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response...
簡單地說就是dubbo服務超時
dubbo默認的時間是500ms,超過這個時間它會重新訪問service層,最多嘗試三次
所以就發生了下面的一個很奇怪的現象:
我第一次在瀏覽器訪問服務消費方的接口,報500這個 com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response...異常(連接服務提供方超時)
但是第二次回車,居然就訪問成功了(訪問服務提供方沒有超時)
設置超時時間:
規則:
1.Consumer端配置優于Provider配置,優于全局配置;
2.方法級配置別優于接口級別優于全局配置;
根據規則1,縱使消費端配置優于服務端配置,但消費端配置超時時間不能隨心所欲,需要根據業 務實際情況來設定。如果超時時間設置得太短,復雜業務本來就需要很長時間完成,服務端無法在設 定的超時時間內完成業務處理;如果超時時間設置太長,會由于服務端或者網絡問題導致客戶端資源大量線程掛起
Dubbo服務消費端,全局超時配置
<dubbo:consumer timeout=“5000” />Dubbo服務消費端指定接口或者接口中方法配置超時
<dubbo:reference interface=“com.fei.CustomerrService” timeout=“3000”><dubbo:method name=“sayHello” timeout=“5000” /> </dubbo:reference>Dubbo服務提供端,全局超時配置
<dubbo:provide timeout=“5000” />Dubbo服務提供端指定接口或者接口中方法配置超時
<dubbo:service interface=“com.fei.CustometService” timeout=“3000”><dubbo:method name=“sayHello” timeout=“5000” /> </dubbo:service>總結
以上是生活随笔為你收集整理的SSM+Maven+Dubbo+Zookeeper简单项目实战以及易错注意点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3精要(17)-迭代器ite
- 下一篇: linux内核杂记(2)-内核的同步与并