日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux下啟動Dubbo報錯解決方案(linuxdubbo啟動報錯)

Dubbo是一個高性能的開源RPC框架,它的出現(xiàn)極大地簡化了服務(wù)之間的調(diào)用。而在使用Dubbo時,我們有時會遇到啟動報錯的問題,這篇文章將為大家介紹在Linux下啟動Dubbo時遇到的一些常見的報錯及解決方案。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供科爾沁左翼網(wǎng)站建設(shè)、科爾沁左翼做網(wǎng)站、科爾沁左翼網(wǎng)站設(shè)計、科爾沁左翼網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、科爾沁左翼企業(yè)網(wǎng)站模板建站服務(wù),10多年科爾沁左翼做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

1. java.lang.IllegalArgumentException: Property ‘zookeeper’ is required

這個錯誤意味著Dubbo找不到zookeeper的配置文件,解決方法是在dubbo.properties配置文件中添加zookeeper的地址,例如:

dubbo.registry.address=zookeeper://127.0.0.1:2181

2. Could not find or load mn class

這個錯誤通常是因?yàn)镃LASSPATH變量未被正確設(shè)置,解決方法是在啟動時手動設(shè)置CLASSPATH,例如:

java -Djava.ext.dirs=./lib com.alibaba.dubbo.contner.Mn

其中-Djava.ext.dirs=./lib表示設(shè)置類路徑為當(dāng)前目錄下的lib子目錄。

3. java.net.BindException: Address already in use: bind

這個錯誤意味著Dubbo中指定的端口已被占用,解決方法是更換端口號或者找到占用端口的進(jìn)程并結(jié)束該進(jìn)程。

4. No provider avlable for the service

這個錯誤意味著Dubbo找不到可用的服務(wù)提供者,解決方法是確保服務(wù)提供者已經(jīng)正確部署,并且消費(fèi)者的配置文件中指定了正確的服務(wù)提供者地址。

5. java.lang.NoClassDefFoundError: org/freemarker/template/TemplateException

這個錯誤通常是由缺少必要的jar包導(dǎo)致的,解決方法是在CLASSPATH中添加缺失的jar包。

6. Fled to connect to server

這個錯誤意味著Dubbo無法連接到zookeeper服務(wù)器,解決方法是檢查zookeeper的地址是否正確,并確保zookeeper服務(wù)器已經(jīng)正確部署。

7. java.lang.IllegalStateException: Fled to check the status of the service

這個錯誤通常是由服務(wù)提供者未正常啟動或已經(jīng)關(guān)閉導(dǎo)致的,解決方法是確保服務(wù)提供者已經(jīng)正確啟動并運(yùn)行。

在使用Dubbo框架時,我們可能會遇到各種不同的啟動報錯,這時候我們需要具備一定的調(diào)試能力,有效地排除問題,并采取相應(yīng)的解決方案。在Linux下啟動Dubbo時,我們需要注意設(shè)置環(huán)境變量和CLASSPATH等路徑相關(guān)的變量,并且需要檢查zookeeper的地址是否正確,服務(wù)提供者是否已經(jīng)正確部署。當(dāng)然,最重要的是我們需要不斷地學(xué)習(xí)和實(shí)踐,掌握更多的技能和經(jīng)驗(yàn),提升自己的開發(fā)水平。

相關(guān)問題拓展閱讀:

  • Dubbo——服務(wù)調(diào)用、服務(wù)暴露、服務(wù)引用過程

Dubbo——服務(wù)調(diào)用、服務(wù)暴露、服務(wù)引用過程

1、InvokerInvocationHandler jdk動態(tài)代理

5、RegistryDirector返回Invokers

Router分為:Script 腳本路由、Condition 條件路由

6、通過MockInvokersSelector的route方法(getNormalInvokers)拿到能正常執(zhí)行的invokers

8、當(dāng)回到AbstractClusterInvoker后,執(zhí)行首納(默認(rèn)FailoverClusterInvoker,根據(jù)配置的是,F(xiàn)ailfast Cluster(快速失敗) , Failsafe Cluster(失敗安全) , Failback Cluster(失敗自動恢復(fù)) , Forking Cluster(并行調(diào)用多個服務(wù)器,只要一個成功即返回) , Broadcast Cluster(廣播調(diào)用所有提供者,逐個調(diào)用,任意一臺報錯則報錯))doInvoker方法

9、FailoverClusterInvoker調(diào)用AbstractClusterInvoker的select方法

10、執(zhí)行doSelect方法

11、調(diào)用AbstractLoadbalance的select方法

12、根據(jù)配置的負(fù)載均衡策略調(diào)用對應(yīng)的(如RoundRobinLoadBalance)類的doSelect方法

13、返回invokers.get()方法

14、調(diào)用FailoverClusterInvoker的invoke方法

均繼承自抽象類AbstractDirectory

Directory 獲取 invoker 是從 methodInvokerMap 中獲取的,主要都是讀操作,那它的寫操作是在什么時候?qū)懙哪?就是在回調(diào)方法 notify 的時候操作的,也就是注冊中心有變化,則更新 methodInvokerMap 和 urlInvokerMap 的值

根據(jù)dubbo-admin配置的路由規(guī)則來過濾相關(guān)的invoker,當(dāng)我們對路由規(guī)則點(diǎn)擊啟用,就會觸發(fā) RegistryDirectory 類的 notify 方法。

notify方法調(diào)用refreshInvoker方法。

route方法的實(shí)現(xiàn)類為ConditionRoute 根據(jù)條件進(jìn)行過濾

1、調(diào)用mathThen方法

2、調(diào)用matchCondition方法

3、調(diào)用isMatch判斷

4、調(diào)用isMatchGlobPattern方法

?

集群模塊是服務(wù)提供者和服務(wù)消費(fèi)者的中間層,為服務(wù)消費(fèi)者屏蔽了服務(wù)提供者的情況,這樣服務(wù)消費(fèi)者就可以專心處理遠(yuǎn)程調(diào)用相關(guān)事宜。比如發(fā)請求,接受服務(wù)提供者返回的數(shù)據(jù)等。這就是Dubbo Cluster集群的作用。

通過cluster來指定集群容錯方式

其實(shí)就是應(yīng)對出錯情況采取的策略

用于芹磨有狀態(tài)服務(wù),盡可能讓客戶端總是向同一提供者發(fā)起調(diào)用,除非提供者掛了,再連另一臺,自動開啟延遲鏈接,以減少長接數(shù)

?啟動時服務(wù)提供者將當(dāng)前進(jìn)程啟動時間注冊到ZK;服務(wù)消費(fèi)者發(fā)現(xiàn)該節(jié)點(diǎn)后計算服務(wù)啟動時間(相對當(dāng)前時間),在默認(rèn)預(yù)熱時間的前20%時間內(nèi),該節(jié)點(diǎn)權(quán)重始終固定為2,這樣客戶端的負(fù)載均衡器只會分發(fā)極少的請求至節(jié)點(diǎn)。

?在預(yù)熱時間之后的80%時間內(nèi),該節(jié)點(diǎn)權(quán)重將隨著時間的推移而線性增長;待預(yù)熱時間到期后,權(quán)重自動恢復(fù)為默認(rèn)值100;負(fù)載均衡器的內(nèi)核是一個標(biāo)準(zhǔn)的WLC算法模塊,即加權(quán)最少連接算法;

?如果某個節(jié)點(diǎn)Hang住或宕機(jī),其權(quán)重會迅速自動調(diào)節(jié)降低,避免持續(xù)性影響;當(dāng)節(jié)點(diǎn)下線時,服務(wù)端提前觸發(fā)權(quán)重調(diào)節(jié),重載默認(rèn)權(quán)重至1并發(fā)布到注冊中心,服務(wù)消費(fèi)者將迅速感知到該事件;

服務(wù)提供者優(yōu)雅下線步驟(注意這套邏輯僅在服務(wù)端執(zhí)行)在ok.htm?down=true對應(yīng)的controller中加入下列邏輯,注意嫌芹斗要判斷down是否為true,因?yàn)檎碚ffalse表示啟動驗(yàn)證而不是關(guān)機(jī)

服務(wù)者消費(fèi)者配置

dubbo服務(wù)支持參數(shù)動態(tài)調(diào)整,例如動態(tài)調(diào)整權(quán)重,但dubbo實(shí)現(xiàn)方式較為特殊,并不是常規(guī)思路。

?ServiceConfig類拿到對外提供服務(wù)的實(shí)際類ref,然后通過ProxyFactory類的getInvoker方法使用ref生成一個AbstractProxyInvoker實(shí)例,到這一步就完成具體服務(wù)到Invoker的轉(zhuǎn)換(javassistProxyFacory、JdkProxyFactory),接著要做Invoker轉(zhuǎn)換到Export的過程

?服務(wù)發(fā)布:本地暴露、遠(yuǎn)程暴露

?為什么會有 本地暴露 和 遠(yuǎn)程暴露 呢?不從場景考慮討論技術(shù)的沒有意義是.在dubbo中我們一個服務(wù)可能既是 Provider ,又是 Consumer ,因此就存在他自己調(diào)用自己服務(wù)的情況,如果再通過網(wǎng)絡(luò)去訪問,那自然是舍近求遠(yuǎn),因此他是有 本地暴露 服務(wù)的這個設(shè)計.從這里我們就知道這個兩者的區(qū)別

1、spring啟動,解析配置文件

2、創(chuàng)建dubbo標(biāo)簽解析器

3、解析dubbo標(biāo)簽

4、ServiceBean解析

5、容器創(chuàng)建完成,觸發(fā)ContextRefrestEvent

6、export暴露服務(wù)

7、duExportUrls

8、doExportUrlsFor1Protocol

9、getInvoker

10、protocol.export

11、開啟服務(wù)器 openServer()如nettyServer

12、注冊服務(wù)到注冊中心 registerProvider

Filter 在服務(wù)暴露前,做攔截器初始化,在加載所有攔截器時會過濾支隊provider生效的數(shù)據(jù)。

可以。zookeeper的信息會緩存到本地作為一個緩存文件,并且轉(zhuǎn)換成 properties 對象方便使用。建立線程池,定時檢測并連接注冊中心,失敗了就重連。

注冊服務(wù)到zk其實(shí)就是在zk上創(chuàng)建臨時節(jié)點(diǎn),當(dāng)節(jié)點(diǎn)下線或者down掉時,即會刪除臨時節(jié)點(diǎn),從而使服務(wù)從可用列表中剔除。

持久節(jié)點(diǎn)

臨時節(jié)點(diǎn)

1、export的時候進(jìn)行zk訂閱

2、設(shè)置監(jiān)聽回調(diào)的地址,回調(diào)給FailbackRegistry的notify

3、創(chuàng)建持久節(jié)點(diǎn)

4、設(shè)置對該節(jié)點(diǎn)的監(jiān)聽

5、更新新的服務(wù)信息,服務(wù)啟動和節(jié)點(diǎn)更新回調(diào),都會調(diào)用到這里

6、更新緩存文件

7、對比新舊信息是否有變化,有則重新暴露服務(wù)

高并發(fā)大業(yè)務(wù)量情況下,暫時屏蔽邊緣業(yè)務(wù)

MockClusterInvoker

?SPI 全稱為 Service Provider Interface,是一種服務(wù)發(fā)現(xiàn)機(jī)制。SPI 的本質(zhì)是將接口實(shí)現(xiàn)類的全限定名配置在文件中,并由服務(wù)加載器讀取配置文件,加載實(shí)現(xiàn)類。這樣可以在運(yùn)行時,動態(tài)為接口替換實(shí)現(xiàn)類。正因此特性,我們可以很容易的通過 SPI 機(jī)制為我們的程序提供拓展功能。SPI 機(jī)制在第三方框架中也有所應(yīng)用,比如 Dubbo 就是通過 SPI 機(jī)制加載所有的組件。不過,Dubbo 并未使用 Java 原生的 SPI 機(jī)制,而是對其進(jìn)行了增強(qiáng),使其能夠更好的滿足需求。在 Dubbo 中,SPI 是一個非常重要的模塊?;?SPI,我們可以很容易的對 Dubbo 進(jìn)行拓展。如果大家想要學(xué)習(xí) Dubbo 的源碼,SPI 機(jī)制務(wù)必弄懂。接下來,我們先來了解一下 Java SPI 與 Dubbo SPI 的用法,然后再來分析 Dubbo SPI 的源碼。

關(guān)于linux dubbo啟動報錯的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動、聯(lián)通等。


當(dāng)前文章:Linux下啟動Dubbo報錯解決方案(linuxdubbo啟動報錯)
轉(zhuǎn)載源于:http://m.5511xx.com/article/cdpedph.html