柚子快報(bào)激活碼778899分享:一文聊透 Dubbo 優(yōu)雅上線
柚子快報(bào)激活碼778899分享:一文聊透 Dubbo 優(yōu)雅上線
以 SpingBoot 下使用 Dubbo 為例,被 Dubbo 的 @Service 注解修飾的服務(wù),會(huì)按照 Spring 中初始化 Bean 的順序,串行執(zhí)行發(fā)布邏輯。Dubbo 框架會(huì)完成一系列的操作:
創(chuàng)建遠(yuǎn)程調(diào)用的 Proxy 把代理對(duì)象注冊(cè)到 ProviderConsumerRegTable,方便遠(yuǎn)程調(diào)用到來時(shí)尋找到對(duì)應(yīng)的服務(wù) 向注冊(cè)中心注冊(cè)
一旦服務(wù)信息注冊(cè)到注冊(cè)中心,在消費(fèi)者看來該服務(wù)就是可以被調(diào)用的。然而,此時(shí)可能出現(xiàn)一些數(shù)據(jù)庫、緩存資源尚未加載完畢的場景,這取決于你的系統(tǒng)有沒有對(duì)應(yīng)的組件,它們何時(shí)加載完畢,也完全取決于你的業(yè)務(wù)。如果你擔(dān)心你的系統(tǒng)存在這種隱患,可以嘗試多次重啟集群中的任意一臺(tái)機(jī)器,查看調(diào)用方是否存在報(bào)錯(cuò),如果有報(bào)錯(cuò),一種可能性是沒有實(shí)現(xiàn)優(yōu)雅停機(jī),一種可能性是沒有實(shí)現(xiàn)優(yōu)雅上線。
Dubbo 服務(wù)暴露的起點(diǎn)一般是以 Spring 容器啟動(dòng)完畢后發(fā)出的 ContextRefreshedEvent 事件為準(zhǔn),Dubbo 的 ServiceBean 實(shí)現(xiàn)了 ApplicationListener 接口,用以接收這一容器刷新事件。
public void onApplicationEvent(ContextRefreshedEvent event) {
// 是否有延遲導(dǎo)出 && 是否已導(dǎo)出 && 是不是已被取消導(dǎo)出
if (isDelay() && !isExported() && !isUnexported()) {
// 導(dǎo)出服務(wù)
export();
}
}
Dubbo 為服務(wù)提供了 delay 配置:
如上配置后,Dubbo 服務(wù)將會(huì)在 Spring 容器啟動(dòng)后 5s,再執(zhí)行暴露邏輯。這里 delay 的時(shí)長,取決于你系統(tǒng)資源初始化的耗時(shí),沒有一個(gè)經(jīng)驗(yàn)值。如果不配置改值,Dubbo 將會(huì)在收到 ContextRefreshedEvent 事件后,立即執(zhí)行發(fā)布邏輯。
Dubbo 2.6.5 版本對(duì)服務(wù)延遲發(fā)布邏輯進(jìn)行了細(xì)微的調(diào)整,將需要延遲暴露(delay > 0)服務(wù)的倒計(jì)時(shí)動(dòng)作推遲到了 Spring 初始化完成后進(jìn)行。在此之前的版本的邏輯不太合理,如果想要讓 2.6.5 之前的版本延遲到Spring 初始化完成后,再暴露服務(wù),可以這樣配置:
本節(jié)參考 Dubbo 官方文檔
延遲暴露:http://dubbo.apache.org/zh-cn/docs/user/demos/delay-publish.html
方案二:QOS 命令上線
Dubbo 還為服務(wù)提供了另一個(gè)配置項(xiàng):
該配置項(xiàng)配置后,服務(wù)將不會(huì)發(fā)布到注冊(cè)中心,可能很多 Dubbo 用戶不會(huì)注意到這個(gè)配置,它的作用恰恰是 QOS 指令使用的。
Dubbo 2.5.8 及以上的版本,還提供了一些在線運(yùn)維命令。為了演示該命令,我們準(zhǔn)備一個(gè) GreetingService 的 demo:
public class DubboProvider {
public static void main(String[] args) throws Exception {
ServiceConfig service = new ServiceConfig<>();
service.setApplication(new ApplicationConfig(“dubbo-provider”));
service.setRegistry(new RegistryConfig(“nacos://127.0.0.1:8848”));
service.setInterface(GreetingsService.class);
service.setRef(new GreetingsServiceImpl());
service.setRegister(false);
service.export();
System.out.println(“dubbo service started”);
new CountDownLatch(1).await();
}
}
注意我們配置了不發(fā)布:service.setRegister(false),由于 QOS 配置是默認(rèn)打開的,在本地的 22222 端口,可以進(jìn)入 QOS 控制臺(tái)。
krito git:(master) ? telnet localhost 22222
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
/ _ \ / / / // _ ) / _ ) / __ \
/ // // // // _ |/ _ |/ // /
// _///// ___/
dubbo>ls
As Provider side:
±------------------------------------±–+
先自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)初中級(jí)Java工程師,想要提升技能,往往是自己摸索成長或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則近萬的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《Java開發(fā)全套學(xué)習(xí)資料》送給大家,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
由于文件比較大,這里只是將部分目錄截圖出來,每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻
如果你覺得這些內(nèi)容對(duì)你有幫助,可以掃碼領(lǐng)??!
最后的內(nèi)容
在開頭跟大家分享的時(shí)候我就說,面試我是沒有做好準(zhǔn)備的,全靠平時(shí)的積累,確實(shí)有點(diǎn)臨時(shí)抱佛腳了,以至于我自己還是挺懊惱的。(準(zhǔn)備好了或許可以拿個(gè)40k,沒做準(zhǔn)備只有30k+,你們懂那種感覺嗎)
如何準(zhǔn)備面試?
1、前期鋪墊(技術(shù)沉積)
程序員面試其實(shí)是對(duì)于技術(shù)的一次摸底考試,你的技術(shù)牛逼,那你就是大爺。大廠對(duì)于技術(shù)的要求主要體現(xiàn)在:基礎(chǔ),原理,深入研究源碼,廣度,實(shí)戰(zhàn)五個(gè)方面,也只有將原理理論結(jié)合實(shí)戰(zhàn)才能把技術(shù)點(diǎn)吃透。
下面是我會(huì)看的一些資料筆記,希望能幫助大家由淺入深,由點(diǎn)到面的學(xué)習(xí)Java,應(yīng)對(duì)大廠面試官的靈魂追問
這部分內(nèi)容過多,小編只貼出部分內(nèi)容展示給大家了,見諒見諒!
Java程序員必看《Java開發(fā)核心筆記(華山版)》
Redis學(xué)習(xí)筆記
Java并發(fā)編程學(xué)習(xí)筆記
四部分,詳細(xì)拆分并發(fā)編程——并發(fā)編程+模式篇+應(yīng)用篇+原理篇
Java程序員必看書籍《深入理解 ava虛擬機(jī)第3版》(pdf版)
大廠面試必問——數(shù)據(jù)結(jié)構(gòu)與算法匯集筆記
其他像Spring,SpringBoot,SpringCloud,SpringCloudAlibaba,Dubbo,Zookeeper,Kafka,RocketMQ,RabbitMQ,Netty,MySQL,Docker,K8s等等我都整理好,這里就不一一展示了。
2、狂刷面試題
技術(shù)主要是體現(xiàn)在平時(shí)的積累實(shí)用,面試前準(zhǔn)備兩個(gè)月的時(shí)間再好好復(fù)習(xí)一遍,緊接著就可以刷面試題了,下面這些面試題都是小編精心整理的,貼給大家看看。
①大廠高頻45道筆試題(智商題)
②BAT大廠面試總結(jié)(部分內(nèi)容截圖)
③面試總結(jié)
3、結(jié)合實(shí)際,修改簡歷
程序員的簡歷一定要多下一些功夫,尤其是對(duì)一些字眼要再三斟酌,如“精通、熟悉、了解”這三者的區(qū)別一定要區(qū)分清楚,否則就是在給自己挖坑了。當(dāng)然不會(huì)包裝,我可以將我的簡歷給你參考參考,如果還不夠,那下面這些簡歷模板任你挑選:
以上分享,希望大家可以在金三銀四跳槽季找到一份好工作,但千萬也記住,技術(shù)一定是平時(shí)工作種累計(jì)或者自學(xué)(或報(bào)班跟著老師學(xué))通過實(shí)戰(zhàn)累計(jì)的,千萬不要臨時(shí)抱佛腳。
另外,面試中遇到不會(huì)的問題不妨嘗試講講自己的思路,因?yàn)橛行﹩栴}不是考察我們的編程能力,而是邏輯思維表達(dá)能力;最后平時(shí)要進(jìn)行自我分析與評(píng)價(jià),做好職業(yè)規(guī)劃,不斷摸索,提高自己的編程能力和抽象思維能力。 那下面這些簡歷模板任你挑選:
[外鏈圖片轉(zhuǎn)存中…(img-ABf3oRyf-1711483047606)]
以上分享,希望大家可以在金三銀四跳槽季找到一份好工作,但千萬也記住,技術(shù)一定是平時(shí)工作種累計(jì)或者自學(xué)(或報(bào)班跟著老師學(xué))通過實(shí)戰(zhàn)累計(jì)的,千萬不要臨時(shí)抱佛腳。
另外,面試中遇到不會(huì)的問題不妨嘗試講講自己的思路,因?yàn)橛行﹩栴}不是考察我們的編程能力,而是邏輯思維表達(dá)能力;最后平時(shí)要進(jìn)行自我分析與評(píng)價(jià),做好職業(yè)規(guī)劃,不斷摸索,提高自己的編程能力和抽象思維能力。 需要更多Java資料的小伙伴可以幫忙點(diǎn)贊+關(guān)注,點(diǎn)擊傳送門,即可免費(fèi)領(lǐng)??!
柚子快報(bào)激活碼778899分享:一文聊透 Dubbo 優(yōu)雅上線
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。