那些年,踩過dubbo的坑。僅此記錄

2020-09-09 咖啡coffee

構建源碼第一步:
必備開發環境:Java 1.5 以上的版本;Maven 2.2.1 或者以上的版本;
官網下載原始碼
官網構建文檔學習一下;

注意:需要相關資料可以關注私信

構建

上面part介紹了dubbo源碼環境,下面將一步步踩坑構建源碼。雖然上面附屬了官方文檔連結,此處再重複說一下下載步驟:

  • git下載
    命令git clone https://github.com/apache/dubbo.git;
  • maven 構建
    到這裡開始踩坑了,噩夢的開始~
    官網文檔裡可以使用兩種方式構建:是否跳過單元測試
    畢竟是第一次構建源碼,選擇了第一種方式:
  1. 構建時間長,需要構建單元測試;
  2. 可能會存在單測錯誤現象(構建過程可以直接忽略);
    直奔主題,毫不意外構建失敗,直接步入今天的主題:踩坑
    遇到這種依賴衝突情況,提供一種暴力解決方法:將本地倉庫刪除相關jar包文件,重新下載依賴文件;
    由於不跳過單側,構建過程略長,採用了第二種構建方式,如圖
    靜靜地等待構建。。。心裡默默祈求成功吧(哈哈~)
  • idea編譯
    命令:mvn idea:idea
    繼續等待編譯完成,毫不意外又被摧殘了一下,BUILD FAILURE構建失敗;
    心裡想著再堅持一下,快要成功了~,繼續想辦法解決,看到關於本地倉庫的問題,於是乎在本地倉庫中查找沒有對應的Jar包依賴;
    第一反應就是下載對應的Jar資源文件,在哪裡下載呢???面向度娘嗎??不不,對於這種資源包缺失問題,網上很少回答的。大家可以動腦思考一下,項目依賴文件來源於中央倉庫,於是乎~阿里雲倉庫嘛;
    分享一下阿里雲倉庫資源文件下載地址:源地址,網絡原因,有可能訪問緩慢;
    將jar包下載完成以後,在本地倉庫建立相應的文件夾;

引出一個拓展點:
平時日常開發配置maven時,需要在setting.xml引入阿里雲倉庫,一般我們百度時配置提供的基本是一種老版地址

<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>123456

在解決上面依賴問題時,發現阿里雲倉庫已經進行了地址更新:阿里雲maven

注意:需要相關資料可以關注私信


官方配置指南參考:

注意:需要相關資料可以關注私信

於是,將本地maven配置setting.xml改成新的倉庫地址:

<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public/</url> <mirrorOf>central</mirrorOf> </mirror>123456

以上踩坑似乎跟本地倉庫有關,在這裡分享出來,希望能夠帶給夥伴一種解決思路,遇到類似問題,不要著急,看錯誤日誌,尋找解決方案。

解決完資源依賴問題,再次輸入mvn idea:idea命令,終於迎來勝利的曙光,構建成功啦!

快速啟動

經歷一番折騰後,終於解決了問題,終於要準備開啟dubbo的大門啦,一探究竟~
事實告訴高興的太早了,坑啊~,繼續踩坑。

idea打開dubbo源碼,進入dubbo-demo項目

注意:需要相關資料可以關注私信


按照正常步驟,將配置文件中zookeeper註冊中心IP位址改成自己阿里雲公網地址(根據自己情況修改);
滿心歡喜啟動項目~結果:

[11/08/20 08:36:35:376 CST] main INFO imps.CuratorFrameworkImpl: Default schemaException in thread &34; java.lang.IllegalStateException: zookeeper not connected at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java:83) at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter.createZookeeperClient(CuratorZookeeperTransporter.java:26) at org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperTransporter.connect(AbstractZookeeperTransporter.java:70) at org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter$Adaptive.connect(ZookeeperTransporter$Adaptive.java) at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.<init>(ZookeeperDynamicConfiguration.java:56) at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory.createDynamicConfiguration(ZookeeperDynamicConfigurationFactory.java:37) at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.lambda$getDynamicConfiguration$0(AbstractDynamicConfigurationFactory.java:39) at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.getDynamicConfiguration(AbstractDynamicConfigurationFactory.java:39) at org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration(DynamicConfiguration.java:224) at org.apache.dubbo.config.bootstrap.DubboBootstrap.prepareEnvironment(DubboBootstrap.java:1034) at org.apache.dubbo.config.bootstrap.DubboBootstrap.startConfigCenter(DubboBootstrap.java:623)1234567891011121314

心裡怒罵一聲「此處省略三個字」!!!最終屈服於它,說服自己遇到問題不要慌,分析一波吧;面對第一次處理dubbo源碼,心裡也沒有底啊。但是按照往常遇到問題的處理方式,就是看到上面的日誌,找到第一個報錯的類(為什麼呢?跟過源碼或者經驗比較豐富的夥伴應該清楚,我們開發代碼一般類似洋蔥,一層套一層,故第一個報錯的類,肯定是出問題的地方);於是乎,選中CuratorZookeeperClient.java:83此類作為突破目標;

注意:需要相關資料可以關注私信


看到了日誌報錯的地方,開始吧~擼起袖子就是幹啊;

注意:需要相關資料可以關注私信

跟進源碼我們發現了時間超時問題,我們距離成功解決問題又進了一步;故我們在配置文件中修改其連接時間:
官方文檔:dubbo:registry
接下來就是修改dubbo源碼中的配置文件:
將dubbo-provider.xml\dubbo-consumer.xml中均添加超時時間:

<dubbo:registry address=&34; timeout=&34;/>1

解決完這些問題,心裡已經不敢期望成功運行原始碼了,心裡擔憂~
小心嘗試分別運行provider、consumer主啟動類;


心裡一顆大石頭終於放下來了,踩了一路的坑,終於成功運行demo了。

相關焦點

  • 技術分享——一路踩坑構建Dubbo源碼
    源碼環境,下面將一步步踩坑構建源碼。到這裡開始踩坑了,噩夢的開始~官網文檔裡可以使用兩種方式構建:是否跳過單元測試;可能會存在單測錯誤現象(構建過程可以直接忽略);直奔主題,毫不意外構建失敗,直接步入今天的主題:踩坑
  • 這些年你踩過那些坑?
    剛剛和一個朋友聊天,他說我非常想在網際網路上做個副業,但又害怕自己被坑了,所以遲遲沒有開始去操作。當時我只回復了他一句話,我說你是不是特別想在網際網路上賺錢?有沒有確定要在網際網路上賺到錢?如果說有確定的話,可能踩坑也是一條必經的路。網際網路創業7年我的的確確踩過了太多的坑。
  • 動漫新坑:動漫那些年,我踩過的坑,動漫作品推薦
    動漫新坑:動漫那些年,我踩過的坑,動漫作品推薦有漫長的歷史中,總有一些作品,因為其他原因,導致作品沒有後續,讓人唏噓,讓人痛苦,精彩的故事怎麼就沒了呢?這是非常遺憾的,我來統計一些沒能順利完結的動漫,讓跳坑出不來的人少一些吧。
  • 盤點那些年踩過的母嬰用品的坑!踩坑率高達80%,寶媽含淚分享!
    功課做了無數,坑也踩了無數...說得就是我吧!!!今天決定說說我那些年翻車的母嬰用品,姐妹們記得避雷!別再步我的後塵了!真要說完那真是三天三夜講不完了,但其實雖然踩坑無數,但我買到的好東西也不少呢!(畢竟踩雷也得講究個概率...)1.德國嫩芙葉酸孕紋霜生娃擱置2天,產後趕緊又塗了起來。
  • MyBatis使用需謹慎,看看這裡有沒有你曾踩到過的坑
    框架的意義就在於此,將繁瑣的程式化行為進行封裝,以便讓開發人員將精力投入到業務代碼當中去。然而,凡事有利就有弊。框架在提供了便利的同時,也會讓開發人員忽略一些信息。本文就來一起盤點一下,MyBatis在使用過程中需要注意的那些「坑」。
  • 那些年,我們一起練「軟開度」所踩過的那些坑!
    下面讓我們一起來分析一下練習「軟開度」的五大誤區,我們一起練"軟開度"所踩過的坑! 坑一:壓腿壓的是韌帶! 坑二:軟開度只有一種方法! 我們很多人認為的柔韌性訓練就是壓腿和搬腿了,其實不是這樣的。
  • 那些年我們一起踩過的坑:跨境電商避坑總結貼
    大部分跨境電商賣家都是經歷了無數個坑、不斷的試錯,才從一個跨境電商新手小白,一步一步的成為現在的跨境電商老鳥。今天,我就來給大家分享一下,我在做跨境電商初期,踩過的一些坑。 第一坑,帳號關聯防不住在我做跨境電商幾個月後,決定在美國站再多開一家店。
  • 明天「雙12」,12315發布提醒:那些別人踩過的「坑」,千萬要小心
    「雙11」剛過,「雙12」又接踵而至。12月11日,記者從柳州市市場監管局12315指揮中心獲悉,10月1日-12月7日近兩個月,該中心共接到涉及網絡購物方面的諮詢、投訴、舉報信息391件,與2019年同比增長255.46%,消費者反映的問題主要集中在,網購商品質量問題、商家拒絕履行售後責任、利用預付款形式侵害消費者合法權益、虛假宣傳等。
  • 字節跳動+京東+360+網易,那些年我們一起踩過算法與數據結構的坑
    (故事就下次說吧)今天主要的內容是給大家說一下,那些年我面試的時候在數據結構與算法上踩過的坑!最近有很多朋友在我群裡留言說,馬上就要秋招以及接下來還有金九銀十。數據結構與算法不管在哪裡都會問幾乎是面試必備知識點,希望我能寫一篇文章好好講講。最近靠著晚上1個小時,楞是給你們整理了2個禮拜!我太難了。
  • Echarts在Taro微信小程序開發中的踩坑記錄
    本文轉載自【微信公眾號:前端人,ID:FrontendPeople】經微信公眾號授權轉載,如需轉載與原文作者聯繫背景近期筆者在使用Taro進行微信小程序開發,當引入Echarts圖表庫時,微信檢測單包超限2M的一系列優化措施的踩坑記錄,期望能指導讀者少走一些彎路。
  • dubbo學習之源碼創建屬於自己的dubbo-demo
    -- <dubbo:metadata-report address=&34;/>--> <!--定義包掃描路徑--> <context:component-scan base-package=&34;/> <dubbo:registry address=&34; timeout=&34;/> <dubbo:protocol name=&34;/> <!
  • 旅行中,你踩過哪些坑?貴州黃果樹瀑布自由行第一天,踩了3個坑
    踩坑了!通過自由行客服A小姐聯繫的貴州黃果樹瀑布等旅行第一天,就踩了3個坑!兒子放暑假了,正好我也有幾天空閒時間,就想著帶他出來玩幾天。因為他們有個作業,利用暑假出版一本書,需要大量的素材。誰知道,今天才旅行第一天,就踩了3個坑!(後面幾天,還會踩多少坑,我翹首以待!給大家探路。呵呵)第一個坑——關於保險費的事A小姐說費用裡面包含了保險費,旅行保險費佳+意外保險費。
  • Django測試工具平臺(二)之請求dubbo接口
    (self, dubbo_service): node = self.zk.get_children('/dubbo/' + dubbo_service + '/providers') from urllib import parse if node: server = parse.unquote(node
  • 微信小程序踩坑記錄
    然後通過官方的回答找到了問題的原因測試僅對指定的測試連結和測試範圍內的微信用戶生效在二維碼規則發布後,開發者仍然可以選擇在指定版本(開發版/體驗版/線上版本)下測試,請注意掃碼用戶要打開開發版必須提交過代碼。總結一下就是,配置為開發版本或者體驗版,不要發布。
  • dubbo實戰之四:管理控制臺dubbo-admin
    因此官方不推薦這樣的配置;官方推薦的做法:在配置文件中只有admin.config-center,此配置的值是/config/dubbo/dubbo.properties,以便dubbo-admin使用,請登錄zookeeper所在伺服器,進入zookeeper的bin目錄;由於前面的文章已經使用過zookeeper作為註冊中心,因此"/dubbo/config/"目錄已經存在,下面的命令直接創建
  • 沈向洋博士:三十年科研路,我踩過的那些坑
    但事實上回過頭來看,我過去這二三十年的整個過程發展,更加像是一條彎彎曲曲的道路。今天我想給大家分享七個自己的經驗和教訓,我大概兩年前在 Linkedin 上寫了一篇文章,也做了一個總結。我自己非常榮幸,2004 年開始擔任微軟亞洲研究院院長,當時我們定下來的目標,就是說一定要成為世界上最了不起的研究院,後來我們也基本上達到這樣一個目標。我記得 MIT Technology Review 曾經寫過一篇封面報導叫《The World’s Hottest Computer Lab》。那篇文章出來時,我正好在美國出差。
  • springboot整合dubbo+zookeeper(三)
    -- dubbo --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.7</version>
  • 零基礎,自學編程踩過的坑,不踩坑不行嗎?
    這篇文章來談談作為零基礎的小白在自學過程中容易踩的坑,希望能對大家的自學學習有所幫助。掉坑不可怕,可怕的是總是掉進同一個坑初學者,總是會抱著一種幻想,我要學就學一門最牛的語言,而且最好什麼都能做的我也曾經放棄過,而且放棄了很長的時間,所以我可能沒有資格教大家不要放棄。不過根據我第二次的學習經歷,其實是有以下方法的,可以幫助度過困然期。首先分析遇到困然的原因,是因為自己學的太快了,前面的基礎知識沒有掌握好,還是因為就是某一個高級的知識點不好理解。如果是因為學習的進度快了,不是很紮實,建議返回去,多溫習,多理解透徹。
  • SPC實戰中踩過的那些坑
    那得讓我們先來了解下SPC實施過程中經常碰到的一些「坑」;才能更好避免掉進坑裡的窘境,讓SPC控制圖真正為企業所用、創造價值。第一坑:不清楚SPC導入的目的。我們為什麼要導入SPC?很多企業在導入SPC時候,根本沒有仔細思考過這個問題。最常見的理由是有三:「客戶要求、體系要求、別人在用」。
  • 我終於知道什麼是Dubbo了
    職場打拼那些事?作為程式設計師,當然是不斷學習,才能使自己慢慢變強大!在無數個「撐不下去」的時候,我的「治癒系」當然也是學習了!之前有人問我,你用過dubbo嗎?嗯,額,我說,沒了解過。那你知道SpringCloud嗎?