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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Linux下啟動(dòng)Dubbo報(bào)錯(cuò)解決方案(linuxdubbo啟動(dòng)報(bào)錯(cuò))

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

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

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

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

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

2. Could not find or load mn class

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

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

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

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

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

4. No provider avlable for the service

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

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

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

6. Fled to connect to server

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

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

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

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

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

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

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

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

5、RegistryDirector返回Invokers

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

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

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

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

10、執(zhí)行doSelect方法

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

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

13、返回invokers.get()方法

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

均繼承自抽象類(lèi)AbstractDirectory

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

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

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

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

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)者就可以專(zhuān)心處理遠(yuǎn)程調(diào)用相關(guān)事宜。比如發(fā)請(qǐng)求,接受服務(wù)提供者返回的數(shù)據(jù)等。這就是Dubbo Cluster集群的作用。

通過(guò)cluster來(lái)指定集群容錯(cuò)方式

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

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

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

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

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

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

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

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

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

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

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

1、spring啟動(dòng),解析配置文件

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、開(kāi)啟服務(wù)器 openServer()如nettyServer

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

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

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

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

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

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

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

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

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

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

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

6、更新緩存文件

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

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

MockClusterInvoker

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

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

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


網(wǎng)站名稱(chēng):Linux下啟動(dòng)Dubbo報(bào)錯(cuò)解決方案(linuxdubbo啟動(dòng)報(bào)錯(cuò))
URL分享:http://www.5511xx.com/article/cdpedph.html