1. 程式人生 > >使用dubbo過程中遇到的問題

使用dubbo過程中遇到的問題

1.同時配置了XML和properties檔案,則properties中的配置無效

只有XML沒有配置時,properties才生效。

2.dubbo預設會在啟動時檢查依賴是否可用,不可用就丟擲異常,阻止spring初始化完成,check屬性預設為true。測試時有些服務不關心或者出現了迴圈依賴,將check設定為false

3.為了方便開發測試,線下有一個所有服務可用的註冊中心,這時,如果有一個正在開發中的服務提供者註冊,可能會影響消費者不能正常執行。解決:讓服務提供者開發方,只訂閱服務,而不註冊正在開發的服務,通過直連測試正在開發的服務。設定dubbo:registry標籤的register屬性為false。

4.spring 2.x初始化死鎖問題。在spring解析到dubbo:service時,就已經向外暴露了服務,而spring還在接著初始化其他bean,如果這時有請求進來,並且服務的實現類裡有呼叫applicationContext.getBean()的用法。getBean執行緒和spring初始化執行緒的鎖的順序不一樣,導致了執行緒死鎖,不能提供服務,啟動不了。

解決:不要在服務的實現類中使用applicationContext.getBean();如果不想依賴配置順序,可以將dubbo:provider的deplay屬性設定為-1,使dubbo在容器初始化完成後再暴露服務。

5.服務註冊不上

檢查dubbo的jar包有沒有在classpath中,以及有沒有重複的jar包

檢查暴露服務的spring配置有沒有載入

在服務提供者機器上測試與註冊中心的網路是否通

6.出現RpcException: No provider available for remote service異常怎麼辦?

表示沒有可用的服務提供者,

1). 檢查連線的註冊中心是否正確

2). 到註冊中心檢視相應的服務提供者是否存在

3). 檢查服務提供者是否正常執行

7.出現"訊息傳送失敗"異常怎麼辦?

通常是介面方法的傳入傳出引數未實現Serializable介面。

8.SpringCloud和Dubbo的比較

相同點:都能提供服務註冊,呼叫,監控

spring cloud提供了一整套企業級分散式雲應用的完美解決方案,能夠結合spring boot,docker實現快速開發的目的,核心要素在於服務的發現,註冊,路由,熔斷降級,分散式配置,dubbo只有spring cloud的一部分rpc的功能服務治理

spring cloud的服務呼叫方式是rest api,可以跨平臺,dubbo的服務呼叫方式是RPC,預設不能跨平臺,需要實現一層代理,以rest方式提供對外服務。

spring cloud的常用服務註冊中心是zookeeper,spring cloud常用服務註冊中心是spring cloud netflix eureka

spring cloud的服務監控是spring boot admin, dubbo的服務監控是dubbo-monitor

9.為什麼選擇dubbo

提供了遠端通訊,對多種基於單一長連線的NIO框架抽象封裝,適用於小資料量,大併發的服務呼叫,如果資料量較大,可以使用多個連線。

提供了負載均衡和容錯機制

服務自動註冊與發現

與spring整合配置簡單

支援多種協議,預設TCP協議

10.為什麼消費者比提供者個數多?

dubbo採用單一長連線,根據測算經驗資料,每條連線最多隻能壓滿7M,理論上1個服務提供者需要20個消費者才能壓滿網絡卡。

11.為什麼採用單一長連線

服務大多數服務提供者少,服務的消費者多,單一連線保證單一消費者不會壓死提供者,長連線減少連線握手頻率,節省資源。

12.為防止大量連線撐掛,可在服務提供方限制大接收連線數,以實現服務提供方自我保護,即設定dubbo:protocol中accept屬性

13. 測試和生產公用一套zookeeper,怎麼保證消費不衝突

可以通過自定義filter實現filter介面來實現dubbo介面的ip白名單,限制訪問許可權。

14.如果註冊中心叢集都掛掉,釋出者和訂閱者之間還能通訊麼?

可以通訊,啟動dubbo時,消費者會從zk拉去註冊的生產者的地址介面作為資料,快取在本地,每次呼叫安裝本地的快取地址進行呼叫。

15.服務提供者全部宕機,服務消費者會無法使用,並無限次重連等待服務提供者恢復。

16.註冊中心和監控中心全部宕機,不影響已執行的提供者和消費者,消費者在本地快取了服務提供者列表,服務消費者可以直連提供者。

17.dubbo在安全機制方面如何解決的?

dubbo通過token令牌防止使用者繞過註冊中心直連,然後在註冊中心管理授權,dubbo提供了黑白名單,控制服務所允許的呼叫方。

18.hession序列化失敗hessionruntimeexception

檢查服務方法傳入傳出引數是否實現serializable介面

19.rejectedExecutionexception異常

執行緒池到達最大值,在dubbo.properties中增加執行緒池最大值和最小值大小

20 .RpcLocalExceptionIoTargetIsNotConnected

檢查註冊中心是否開啟白名單功能,如果開啟了,當ip不在白名單列表中,註冊中心拒絕連線。

檢查埠是否正確,註冊中心有2個埠,一個為控制檯http埠,用於管理員檢視資料,一個為程式註冊服務用的tcp埠。

21.dubbo服務釋出過程做了哪些事

暴露本地服務,暴露遠端服務,啟動netty,連線zookeeper,到zookeeper註冊,監聽zookeeper

22.dubbo有哪些協議,他們之間有什麼特點

dubbo允許配置多協議,不同服務不同協議,大資料用短連線協議,小資料大併發用長連線協議。

23.什麼是本地暴露和遠端暴露,他們的區別

本地暴露:一個服務可能既是provider,又是consumer,自己呼叫自己的服務,暴露在jvm中,不需要網路通訊。url是以injvm開頭

遠端暴露:將ip,埠等資訊暴露給遠端客戶端,呼叫時需要網路通訊。

dubbo處理服務暴露的關鍵在於Invoker轉換到Exporter的過程。

相關推薦

使用dubbo過程遇到的問題

1.同時配置了XML和properties檔案,則properties中的配置無效 只有XML沒有配置時,properties才生效。 2.dubbo預設會在啟動時檢查依賴是否可用,不可用就丟擲異常,阻止spring初始化完成,check屬性預設為true。測試時有些服務

Selenium TestNG Java環境搭建過程問題匯總

fin method 搭建過程 onf 9.png 未在 can ann ogr 【問題一】運行時報Unalbe to connect to host 127.0.0.1 on port 7855 【問題分析】Selenium版本與火狐版本不一致,需要下載對應的版本 【

整合WebSocket+SpringMVC+dubbo過程遇到的問題

整合WebSocket的過程中遇到的問題 專案中使用到了dubbo和SpringMVC,並且使用SpringSession管理session,但在整合WebSocket時遇到了一些問題: 1、無法獲取到登入使用者 2、無法獲取到dubbo的提供者 下面是解決這兩個問題的思路,並在文章最後

開發過程dubbo 實體序列化問題

首先想到的是java為什麼要序列化?網上看到的一篇文章如下。 http://blog.csdn.net/wangloveall/article/details/7992448/ 開發過程中的問題

【小菜鳥】本人部落格,沒有任何侵權的想法,僅僅是總結了一些前輩們的經驗,做了一些小筆記發表。 在以往學習過程中,遇到太多太多的小問題,網上都有答案,只不過太多太雜,解決問題的答案也是可不可求, 總是事倍功半。特此總結出一些自己的小經驗,希望能夠幫助大家。

小菜鳥 本人部落格,沒有任何侵權的想法,僅僅是總結了一些前輩們的經驗,做了一些小筆記發表。 在以往學習過程中,遇到太多太多的小問題,網上都有答案,只不過太多太雜,解決問題的答案也是可遇不可求, 總是事倍功半。特...

分散式框架dubbo使用過程常見錯誤及解決

轉載自:http://www.cnblogs.com/digdeep/p/5268779.html 1. Caused by: java.lang.reflect.MalformedParameterizedTypeException 啟動時報錯,原因是dubbo 依

關於sublime-text外掛的安裝以及安裝過程遇到的相關問題

一:下載安裝版本sublime-text 地址:https://pan.baidu.com/s/1kWXxLEv(內含註冊碼,我用得是3142便攜版的)二:安裝package control1:開啟控制檯 (快捷鍵:ctrl+`) (不用快捷鍵view->show Co

關於Linux系統安裝oracle資料庫的準備工作及安裝過程問題

        新年過後第一天比較輕鬆,就試著在linux系統上安裝oracle,發現坑還挺多,所以記錄一下供人蔘考。以下是基於我本人安裝的centos6.6系統安裝的oracle,也有參考網上一些資料,可能不適用於一部分人員,請諒解。安裝前請提前下載好oracle資料庫的安

開啟mysql遠程訪問過程常見問題的解決辦法

col fir all 用戶 onf 改密 databases sof https 今天在測試MySQL的連接時候,發現連接不通過,並報錯ERROR 2003 (HY000): Can‘t connect to mysql server on ‘192.168.10.2

AFNetworking2.x 使用過程遇到的問題

sport 存在 headers htm out 數據請求 下標 devices 一個 1.//以下寫一下關於AFNetworking2.0的GET數據請求問題。剛開始的時候沒有寫以下標紅的代碼,所以導致有一個問題。錯誤顯演示樣例如以下: Error: Error D

【原創】Python 對象創建過程元類, __new__, __call__, __init__ 的處理

diff regular luci 自定義 weight ica 一般來說 att ray 原始type: type是最原始的元類,其__call__方法是在你使用" t_class = type(classname_string, base_classes_tuple,

zabbix   監控平臺搭建過程的報錯與解決方法總結

監控 zabbix 運維自動化1.php option post_max_size 2.php option max_execution_time 3.php option max_input_time 4.php time zone 5.php bcm

使用phxpaxos開發過程遇到的坑

例如 exec 永遠 傳輸 snap 如果 poi 沒有 github 1. 開啟BatchPropose後,狀態機使用ExecuteForCheckpoint生成快照要註意: ExecuteForCheckpoint中的InstanceID不能立即持久化。 例如:

ReactJS 開發過程的一些使用心得

有著 dom操作 作者 -s arc 有用 第一個 sets tao ReactJS作為目前最火的構建用戶界面的前端框架,為什麽有那麽多的前端工程師去追逐它,不僅因為它簡單,而且它提供了一系列強大的API讓我們擺脫以前繁瑣的DOM操作,使我們的邏輯更加清晰,代碼更加簡單。

包裹系統編寫以及過程發現的錯誤

img 進程虛擬地址 com 排序 pri 集中 價值 oid efault 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 type

網站建設的過程什麽最重要?

時間段 優化 來講 包含 網站 有著 奇跡 影響 推廣   互聯網是個創造奇跡的地方,目前“互聯網”的熱潮正在席卷著各個行業,AI技術的不斷革新推動著各行各業的發展,網站建設做為互聯網行業中必要的“起步”同樣也受到這股風潮的影響。以目前的情況來分析:一個網站怎麽樣建設才算的

Nginx 安裝過程遇到的一些問題及解決方法

requires nbsp margin req 命令 裝包 ... check sbin 一、安裝 獲取安裝包: wget http://nginx.org/download/nginx-1.11.5.tar.gz 解壓安裝包: tar -zxvf nginx-1.11

SpringMVC配置過程出現的問題!

編碼格式 efault 來源 app 代碼 spring 配置 沒有 過程 <c:set var="ctx" value="${pageContext.request.contextPath}" />不起作用,原因是web.xml沒有定義了XML的版本,編碼格

在混合app開發過程使用百度地圖api的出現坐標偏差的解決

百度 api call cordova overlay forum gpo ext ddr 在項目中使用ngCordova的$cordovaGeolocation模塊獲取當前位置經緯度,當展示在百度地圖中時發現有誤差(我的測試誤差為1.7公裏左右),查資料發現百度地圖經緯度

架構的坑系列:重構過程的過度設計

一件事 都是 。。 上層 實現 軟件 太行 事件 -m 架構的坑系列:重構過程中的過度設計 軟件架構 2016-06-03 08:47:02 發布 您的評價: 5.0 收藏 2收藏 這個系列是 坑 系列,