溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring Cloud 中怎么搭建微服務(wù)項目架構(gòu)

發(fā)布時間:2021-08-05 17:42:49 來源:億速云 閱讀:125 作者:Leah 欄目:云計算

Spring Cloud 中怎么搭建微服務(wù)項目架構(gòu),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

1、微服務(wù)的定義

    微服務(wù)的通俗定義就是一個小型的項目服務(wù),但是寫文章則需要有明確的定義才行。文縐縐的描述語言大概如下:

一個能夠獨(dú)立運(yùn)行的、可提供完整服務(wù)的微型服務(wù)。

    這里面是三個條件:獨(dú)立運(yùn)行、可提供完整服務(wù)、微型。

    獨(dú)立運(yùn)行則意味著跟其他服務(wù)完全解耦,如果服務(wù)之間存在業(yè)務(wù)關(guān)聯(lián),要么把他們合并為一個微服務(wù),要么通過接口進(jìn)行交互。這也意味著,不同微服務(wù)之間如果涉及到數(shù)據(jù)庫操作的話,一個微服務(wù)不可以直接操作屬于另一個微服務(wù)的庫表,即使他們的表放在同一個庫。因為這種行為一旦發(fā)生,那么這兩個微服務(wù)又出現(xiàn)了新的耦合維度。

    可提供完整服務(wù)則意味著其他與之無關(guān)的微服務(wù)即使掛掉,它自己通過接口提供的服務(wù)也不受任何影響,除非他們之間存在接口互動上的關(guān)聯(lián),那樣也只影響到有關(guān)聯(lián)的部分。

    微型則表示每個微服務(wù)都不會有太多的接口,否則就變成了傳統(tǒng)的項目了。

    任何滿足以上三個條件的服務(wù),我都認(rèn)為是一個微服務(wù)了——所以,微服務(wù)是一個概念,而不是一種技術(shù)。不管使用何種技術(shù)、何種框架、何種方式進(jìn)行搭建。

2、微服務(wù)的好處

    微服務(wù)的好處主要有:敏捷開發(fā)、選擇性擴(kuò)容等

    使用微服務(wù)架構(gòu)的項目,因為微服務(wù)之間完全解耦,所以可實現(xiàn)敏捷開發(fā)——即某個微服務(wù)fix了某些BUG或者升級了版本,只需要重新部署升級即可,不需要像傳統(tǒng)的項目一樣,fix一個小BUG都要將整個服務(wù)重新部署升級;服務(wù)間的解耦,非常方便敏捷開發(fā)、升級等。

    同時也可以根據(jù)微服務(wù)的并發(fā)量進(jìn)行選擇性擴(kuò)容或集群等,比如某個并發(fā)量極高的微服務(wù),可以單獨(dú)部署項目、數(shù)據(jù)庫(上文提到微服務(wù)不能操作屬于其他微服務(wù)的數(shù)據(jù),即使是查詢也不允許。這樣,當(dāng)某個微服務(wù)需要獨(dú)立部署時,就不存在任何耦合帶來的問題,否則就會導(dǎo)致其他微服務(wù)直接操作本微服務(wù)數(shù)據(jù)庫因為遷移而失效的問題)等。

3、為什么要用 Spring Cloud

    Spring Cloud 推薦了很多微服務(wù)的解決方案,使用 Spring Cloud 可快速搭建微服務(wù)架構(gòu),并且背靠 Spring 社區(qū)的良好生態(tài)。

4、使用 Spring Cloud 搭建微服務(wù)的思路

    首先需要一個注冊服務(wù)的注冊中心,可選擇 zookeeper、eureka。

    其他的微服務(wù)都在自己搭建的注冊中心注冊,通過 resttemplate+ribbon 進(jìn)行通信,這時url不需要使用完整的 ip+port 的方式,而是使用微服務(wù)在注冊中心注冊時提供的名稱即可。只用注冊名而非 ip+port 的方式進(jìn)行通信還有一個好處,就是可以實現(xiàn)集群:同一個微服務(wù)部署多份,不管 ip 和 port 是什么,ribbon 都會調(diào)度微服務(wù)的集群,起到負(fù)載均衡的效果。

    還有使用 feign 可達(dá)到類RPC的接口調(diào)用效果,feign 本身已經(jīng)使用了 ribbon。

    微服務(wù)提供接口給外部訪問時,不能像微服務(wù)間通信一樣使用注冊名通信那么方便,還是需要 ip+port 才能訪問到:這樣對接口使用方來說是非常麻煩的,畢竟微服務(wù)的數(shù)量可能會非常多,外部調(diào)用方就要記住各個微服務(wù)的端口號等,而且這樣就不能讓集群生效了。這時可通過配置統(tǒng)一網(wǎng)關(guān),讓使用方通過網(wǎng)關(guān)再轉(zhuǎn)發(fā)到對應(yīng)的微服務(wù)即可。這樣,多個微服務(wù)及集群的情況,對于調(diào)用方來說都是透明的,用戶的感知就是調(diào)用了服務(wù)的某個接口,而不是特定的某個微服務(wù)下的接口。

看完上述內(nèi)容,你們掌握Spring Cloud 中怎么搭建微服務(wù)項目架構(gòu)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI