溫馨提示×

溫馨提示×

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

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

Java中Spring Cloud框架選型的示例分析

發(fā)布時(shí)間:2022-01-19 09:47:06 來源:億速云 閱讀:251 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹Java中Spring Cloud框架選型的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

1. 項(xiàng)目結(jié)構(gòu)

項(xiàng)目采用maven作為軟件包管理工具,Spring boot+Spring Cloud作為項(xiàng)目基礎(chǔ)架構(gòu),設(shè)有配置中心、服務(wù)發(fā)現(xiàn)中心、網(wǎng)關(guān)中心和鏈路追蹤中心以及服務(wù)集群,其中服務(wù)集群之間添加鏈路熔斷和負(fù)載均衡機(jī)制。

當(dāng)然,目前參照了幾個(gè)系統(tǒng)都按照這種邏輯搭建的框架,所以我們大致上也參考了這個(gè)模型。具體如下圖:

Java中Spring Cloud框架選型的示例分析

2. 主要技術(shù)組件使用

這里大概介紹一下,我在實(shí)踐中選用的技術(shù)組件,選用這些技術(shù)沒多少原因,很大程度上考慮到團(tuán)隊(duì)喜好以及后續(xù)維護(hù)的方便,還有就是官方團(tuán)隊(duì)的維護(hù)上考慮。

2.1 Maven

Maven 翻譯為"專家"、"內(nèi)行",是 Apache 下的一個(gè)純 Java 開發(fā)的開源項(xiàng)目,我主要用來進(jìn)行包管理。老開發(fā)大多都知道如果一個(gè)項(xiàng)目使用了大量的三方包,如果沒有統(tǒng)一的三方包管理就會出現(xiàn)三個(gè)人可能會引用四個(gè)版本的同一個(gè)包,這對于項(xiàng)目協(xié)同來說簡直就是噩夢。所以Maven誕生了,從此Javaer有了一個(gè)進(jìn)行包管理的神器。再次聲明一下哈,maven不只是用來做包管理的,只是我使用的基本想法。當(dāng)然還有編譯、批量測試等功能。

2.2 Spring Boot

Spring Boot被譽(yù)為是Spring的一個(gè)跨時(shí)代發(fā)明,一度被認(rèn)為是“不能更好了”的技術(shù)。Spring Boot解決了開發(fā)一個(gè)Web網(wǎng)站必須啟動一個(gè)Tomcat或者其他的服務(wù)器才能進(jìn)行調(diào)試的問題;又解決了Spring之前需要大量xml文件配置;Spring Boot集成了很多常見的Bean組件,在開發(fā)過程中只需要設(shè)置對應(yīng)的參數(shù)值就可以了。

Spring Boot創(chuàng)建了Spring Boot maven的pom文件,這個(gè)文件里設(shè)置了大量java三方庫的版本,依賴于一個(gè)Spring Boot的pom文件就可以統(tǒng)一的使用對應(yīng)版本的java三方庫。

2.3 Spring Cloud

Spring Cloud,嗯,怎么說呢。Spring Cloud可以說是一系列框架的有序集合,利用Spring Boot簡化了基礎(chǔ)設(shè)施的開發(fā)。Spring Cloud是實(shí)現(xiàn)微服務(wù)的一個(gè)有力的武器,我們利用Spring Cloud搭建服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負(fù)載均衡、斷路器和數(shù)據(jù)監(jiān)控等。

總而言之,這是一個(gè)很神奇的項(xiàng)目。

2.4 Nacos

Nacos,阿里巴巴又一個(gè)“KPI”產(chǎn)品。最開始的時(shí)候,很多人都說又是阿里的一個(gè)KPI產(chǎn)品。但實(shí)際上Nacos現(xiàn)在成長為業(yè)內(nèi)一個(gè)很強(qiáng)的技術(shù)框架,它集成了服務(wù)發(fā)現(xiàn)、配置管理等功能。

以下是我從nacos官方扒的圖,有興趣的小伙伴可以看看。

Java中Spring Cloud框架選型的示例分析

2.5 Feign 服務(wù)接口化

Feign的英文是“偽裝、變形”等意思,是一種HTTP調(diào)用框架。它使Http調(diào)用變成了一種接口式的調(diào)用,而不用寫一堆Http請求的代碼。在Spring Cloud中,對Feign進(jìn)行了加強(qiáng),使得在各個(gè)服務(wù)之間可以通過定義Interface來調(diào)用其他服務(wù)的代碼。與此同時(shí),Spring Cloud Feign 集成了Ribbon作為負(fù)載均衡組件,Hystrix 作為鏈路熔斷組件。

具體為什么要使用負(fù)載均衡和鏈路熔斷可以參考該系列的Feign配置篇。

2.6 Zipkin

之所以使用鏈路追蹤系統(tǒng),主要是為了跟蹤各服務(wù)之間的調(diào)用信息。跟蹤之后,可以通過鏈路信息確認(rèn)各服務(wù)之間的調(diào)用關(guān)系;可以在發(fā)生錯(cuò)誤的時(shí)候,通過鏈路追蹤定位具體的錯(cuò)誤;可以根據(jù)鏈路信息確認(rèn)服務(wù)之間的負(fù)載是否均衡,是否滿負(fù)荷是否超負(fù)荷等。

而Zipkin正是鏈路追蹤系統(tǒng)中的佼佼者,項(xiàng)目中選型選中了Zipkin,讓我們歡呼吧。

2.7 ElasticSearch

在使用了鏈路追蹤之后,每次都會啟動大量的鏈路數(shù)據(jù),所以就需要一個(gè)數(shù)據(jù)庫,為了方便查找然后選中了ElasticSearch。那么什么是ElasticSearch呢?

Java中Spring Cloud框架選型的示例分析

暫且拋開官網(wǎng)中的Elastic Stack,因?yàn)槲乙膊恢浪f的是啥。簡單來講,ElasticSearch是一種文檔型的數(shù)據(jù)引擎或者數(shù)據(jù)庫。我們可以通過ElasticSearch實(shí)現(xiàn)全文檢索功能。

2.8 其他

項(xiàng)目還集成了Spring Boot Admin,計(jì)劃集成ELK、jwt這些框架。不過業(yè)務(wù)暫時(shí)沒有其他方面的需求,所以暫時(shí)沒有加入其他組件。后續(xù)如有變更會更新到該系列中。

以上是“Java中Spring Cloud框架選型的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(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)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI