? ? ? ? 在如今的互聯(lián)網(wǎng)環(huán)境中沾谜,微服務(wù)已經(jīng)不是什么新鮮的東西涛碑,如果你對(duì)這些東西沒有什么了解的話,反而就顯得自己更加傻了凸克。就算自己的工作環(huán)境用不到议蟆,用不用不是我們能決定的事,但是看不看就是我們自己的事了萎战,趕緊撿起來看看咐容,萬一你下一次面試會(huì)被問到呢?現(xiàn)在用的比較多的就是Dubbo和SpringCloud了蚂维,這里我們先去看看Dubbo戳粒。
? ? ? ? 什么是Dubbo?Dubbo是阿里巴巴開源的基于 Java 的高性能 RPC 分布式服務(wù)框架虫啥。那什么又是RPC蔚约?其實(shí)就是RPC是遠(yuǎn)程過程調(diào)用,它是一種通過網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù)涂籽,而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議苹祟。別人天天RPC聊得一片火熱,你卻聽得是一臉懵逼评雌,雖然大概知道是個(gè)什么東西树枫,但是讓你說,你也說不明白柳骄,毫不羞恥的說团赏,我其實(shí)就是這樣。
? ? ? ? 為什么要用Dubbo呢耐薯?官網(wǎng)是這么說的:
? ? ? ? 1舔清、單一應(yīng)用架構(gòu):當(dāng)網(wǎng)站流量很小時(shí),只需一個(gè)應(yīng)用曲初,將所有功能都部署在一起体谒,以減少部署節(jié)點(diǎn)和成本。此時(shí)臼婆,用于簡化增刪改查工作量的數(shù)據(jù)訪問框架(ORM)是關(guān)鍵抒痒。
? ? ? ? 2、垂直應(yīng)用架構(gòu):當(dāng)訪問量逐漸增大颁褂,單一應(yīng)用增加機(jī)器帶來的加速度越來越小故响,將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用,以提升效率颁独。此時(shí)彩届,用于加速前端頁面開發(fā)的Web框架(MVC)是關(guān)鍵。
? ? ? ? 3誓酒、分布式服務(wù)架構(gòu):當(dāng)垂直應(yīng)用越來越多樟蠕,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來,作為獨(dú)立的服務(wù)寨辩,逐漸形成穩(wěn)定的服務(wù)中心吓懈,使前端應(yīng)用能更快速的響應(yīng)多變的市場需求。此時(shí)靡狞,用于提高業(yè)務(wù)復(fù)用及整合的分布式服務(wù)框架(RPC)是關(guān)鍵耻警。
? ? ? ? 4:、流動(dòng)計(jì)算架構(gòu):當(dāng)服務(wù)越來越多耍攘,容量的評(píng)估榕栏,小服務(wù)資源的浪費(fèi)等問題逐漸顯現(xiàn),此時(shí)需增加一個(gè)調(diào)度中心基于訪問壓力實(shí)時(shí)管理集群容量蕾各,提高集群利用率扒磁。此時(shí),用于提高機(jī)器利用率的資源調(diào)度和治理中心(SOA)是關(guān)鍵式曲。
? ? ? ? 說了這么多妨托,別人問起來,你要是都能說明白吝羞,那是你的本事济丘。其實(shí)?Dubbo 它將核心業(yè)務(wù)抽取出來弟疆,作為獨(dú)立的服務(wù)蛾娶,逐漸形成穩(wěn)定的服務(wù)中心前计,用于提高業(yè)務(wù)復(fù)用靈活擴(kuò)展,更快速的響應(yīng)多變的市場需求恨溜。
? ? ? ? 要學(xué)明白Dubbo符衔,我們先得明白它的組成角色和執(zhí)行流程:
? ? ? ? 從圖中我們可以看到,首先就是服務(wù)提供者(Provider)在容器中啟動(dòng)糟袁,啟動(dòng)之后將我們所提供的服務(wù)注冊(cè)到注冊(cè)中心(Registry)判族,然后服務(wù)消費(fèi)者(Consumer)從服務(wù)注冊(cè)中心訂閱服務(wù),訂閱之后项戴,服務(wù)注冊(cè)中心會(huì)返回提供者在服務(wù)注冊(cè)中心注冊(cè)的接口形帮;服務(wù)消費(fèi)者從接口列表中,基于軟負(fù)載均衡算法周叮,選一臺(tái)提供者進(jìn)行調(diào)用辩撑,如果調(diào)用失敗,再選另一臺(tái)調(diào)用(這里說的是集群仿耽,單個(gè)zookeeper它沒得選)槐臀。服務(wù)提供者和消費(fèi)者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間氓仲,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心。
? ? ? ? 理論就說這么多,下邊我們直接開始動(dòng)手敬扛,先去搞定注冊(cè)中心晰洒,我們這里注冊(cè)中心選擇是的zookeeper,其實(shí)Dubbo也支持其他注冊(cè)中心啥箭,大家有興趣的可以去了解一下谍珊,這些東西官網(wǎng)都有。
? ? ? ? 提到zookeeper這里得提一下急侥,我們服務(wù)器安裝的zookeeper版本一定要和我們項(xiàng)目中的版本要一致砌滞,不然真的是會(huì)有什么亂七八糟的問題發(fā)生,簡直是在浪費(fèi)時(shí)間坏怪,我這里使用的是3.4.8版本贝润,匹配項(xiàng)目中客戶端中zookeeper的版本,大家可以去zookeeper官方下載铝宵。
? ? ? ? 其實(shí)服務(wù)器安裝拋開集群和版本這些問題還是很簡單的打掘,裝一遍看看~
? ? ? ? 其中有些地方需要注意:
? ? ? ? 1、將配置文件zoo_sample.cfg復(fù)制一份鹏秋,命名為zoo.cfg尊蚁,并編輯:
? ? ? ? 2、環(huán)境變量的配置侣夷,執(zhí)行vim /etc/profile命令横朋,在文件文本最后配置完環(huán)境變量后,保存并退出百拓,之后執(zhí)行 source /etc/profile進(jìn)行:
? ? ? ? 注冊(cè)中心就基本上完了琴锭,之后我們看一看項(xiàng)目中怎么玩吧,我自己寫了個(gè)demo耐版,看一下項(xiàng)目的結(jié)構(gòu):
? ? ? ? 定義接口那個(gè)模塊沒什么說的祠够,就是寫一些接口說明你要干什么,我們先去看一下服務(wù)提供者模塊粪牲,先從pom文件開始:
? ? ? ? 再看一下配置文件:
? ? ? ? 啟動(dòng)類就不截圖了古瓤,要加一個(gè)@EnableDubbo注解,來啟動(dòng)dubbo腺阳,開一下實(shí)現(xiàn)類:
? ? ? ? 這個(gè)其實(shí)很簡單落君,但是注意的地方還是挺多的,首先就是@Service注解亭引,這個(gè)注解是Dubbo的注解绎速,不是我們常用的那個(gè),可別找錯(cuò)了焙蚓。至于這個(gè)接口我們通過pom文件引進(jìn)的定義接口的那個(gè)模塊纹冤。下邊我們看一下Dubbo的@Serivce都是干什么的洒宝,我直接從官網(wǎng)拿了,不過好像沒有這個(gè)版本的屬性多萌京,了解一下哈雁歌。在這里提醒一下各位,這里有的屬性聲明了知残,你也得在消費(fèi)者哪里@Reference也得聲明靠瞎,比如version這樣的屬性,你不聲明它找不見:
? ? ? ? 下邊就是求妹,其實(shí)倆邊大同小異乏盐,pom文件是一樣的,看一下配置文件:
? ? ? ? 看一下啟動(dòng)類:
? ? ? ? 最后就是我們具體的注入和業(yè)務(wù)交互了:
????????我們?cè)賹?duì)@Reference介紹一下制恍,這個(gè)也千萬別找錯(cuò)了父能,也是dubbo的:
? ? ? ? 到這里關(guān)于Dubbo的一些基礎(chǔ)的東西就沒有,其實(shí)Dubbo也提供了服務(wù)的管理工具Dubbo-admin吧趣,大家可以這個(gè)項(xiàng)目down下來部署一下法竞,這里我就不搞了。其實(shí)在你向zookeeper注冊(cè)了服務(wù)和訂閱了服務(wù)之后强挫,我們也可以從服務(wù)器中體現(xiàn)出來岔霸,再看一下這個(gè)吧:
? ? ? ? 到這里這次的分享就沒了,先對(duì)Dubbo的一些概念和基礎(chǔ)有一些了解俯渤,不管以后怎樣呆细,自己先要準(zhǔn)備好。想要更進(jìn)一步的話八匠,還是主動(dòng)點(diǎn)好絮爷,自己不積累,再換個(gè)工作環(huán)境也還是被淘汰梨树。自己主動(dòng)學(xué)習(xí)是比較費(fèi)勁坑夯,從一個(gè)坑出來又跳進(jìn)了另一個(gè)坑,埋怨解決不了問題抡四,只有自己經(jīng)歷過了才會(huì)更深刻柜蜈,以前身旁有人的時(shí)候總覺得問個(gè)比較低級(jí)的問題都會(huì)感到難堪,現(xiàn)在想想我連難堪的機(jī)會(huì)都沒有了指巡。只要自己認(rèn)真學(xué)淑履,總會(huì)柳暗花明,加油吧藻雪!