醍醐灌頂——我眼中的Spring Cloud

在上一篇文章中,我談到了自己對(duì)于Spring Boot的一些想法,并且根據(jù)觀察到的現(xiàn)象分析了很多開發(fā)者在學(xué)習(xí)和使用Spring Boot時(shí)所存在的誤區(qū)以及相應(yīng)的解決方案。那么,在這篇文章中,我將來(lái)談?wù)勛约簩?duì)于Spring Cloud的認(rèn)識(shí)與理解,同時(shí)根據(jù)自己過(guò)往在學(xué)習(xí)與使用Spring Cloud時(shí)的內(nèi)心真實(shí)想法和活動(dòng)來(lái)展望學(xué)習(xí)Spring Cloud的正確方式,希望能對(duì)大家的學(xué)習(xí)起到一定的幫助作用。

首先要明確的一點(diǎn)是,Spring Cloud是基于Spring Boot構(gòu)建的,因此在學(xué)習(xí)Spring Cloud時(shí)要對(duì)Spring Boot有相當(dāng)?shù)睦斫馀c認(rèn)知,否則將會(huì)陷入到無(wú)窮無(wú)盡的挫折之中而無(wú)法自拔。

學(xué)習(xí)Spring Cloud最忌諱的做法就是對(duì)Spring Boot還一知半解就開始學(xué)習(xí)Spring Cloud,因?yàn)楹笳咄耆腔谇罢邅?lái)構(gòu)建的。當(dāng)你對(duì)應(yīng)該具備的一些重要基礎(chǔ)知識(shí)與理論還猶未可知時(shí)就開始學(xué)習(xí)在其之上所構(gòu)建的更為復(fù)雜的框架時(shí),挫敗感將會(huì)一直圍繞著你,這會(huì)令你的前進(jìn)速度大打折扣。另外,在缺少必要的理論基礎(chǔ)時(shí),一旦遇到問(wèn)題你將很難有解決的思路,只能在網(wǎng)上盲目地搜索,查找答案。然而,令人遺憾的是,由于Spring Cloud的發(fā)展速度非常之快,因此網(wǎng)上所搜尋到的很多資料要么是過(guò)時(shí)的,要么是語(yǔ)焉不詳?shù)?,甚至是完全錯(cuò)誤的,這會(huì)對(duì)學(xué)習(xí)者造成非常嚴(yán)重的打擊和影響,讓你開始不斷懷疑人生,進(jìn)而失去了進(jìn)一步學(xué)習(xí)的動(dòng)力,從而導(dǎo)致了最終的放棄。

眾所周知,Spring Cloud并非像Spring MVC之類的單一項(xiàng)目,而是多個(gè)項(xiàng)目的集合體,這些不勝枚舉的子項(xiàng)目都是為了解決微服務(wù)、分布式開發(fā)與部署、配置管理、網(wǎng)關(guān)路由、熔斷、負(fù)載均衡、日志處理、追蹤、數(shù)據(jù)處理、服務(wù)注冊(cè)與發(fā)現(xiàn)、安全等每一個(gè)重要方面的。因此,Spring Cloud所涉及到的技術(shù)點(diǎn)與功能是極為龐大的。它不僅僅是一項(xiàng)或幾項(xiàng)技術(shù),而是多種重要技術(shù)的集合體;這里面所涉及到的每一項(xiàng)重要技術(shù)都值得學(xué)習(xí)者好好地深入理解與學(xué)習(xí)。當(dāng)然了,如果你擁有良好的基礎(chǔ),那么學(xué)習(xí)起Spring Cloud將會(huì)勢(shì)如破竹,而且也會(huì)特別扎實(shí)。

良好的基礎(chǔ)是徹底地、扎實(shí)地掌握Spring Cloud的不二法寶。

學(xué)習(xí)Spring Cloud有兩種人,這兩種人在學(xué)習(xí)和使用Spring Cloud時(shí)所擁有的不同態(tài)度與采取的不同方式?jīng)Q定了他們自己未來(lái)技術(shù)的提升空間到底有多大,是否能在花費(fèi)了大量時(shí)間進(jìn)行學(xué)習(xí)后讓自己的綜合技術(shù)能力有一個(gè)真正質(zhì)的飛躍,從而讓自己的職業(yè)路線越來(lái)越明晰,未來(lái)更加可期。

第一種人:為了學(xué)習(xí)本身和項(xiàng)目所需來(lái)學(xué)習(xí)Spring Cloud。

這類人會(huì)占據(jù)學(xué)習(xí)Spring Cloud的開發(fā)者群體中的大多數(shù)。由于公司的項(xiàng)目要采用Spring Cloud,或是自己覺(jué)得Spring Cloud值得一學(xué),或是聽(tīng)別人說(shuō)Spring Cloud很重要,于是開始學(xué)習(xí)這項(xiàng)技術(shù)。他們學(xué)習(xí)的重心均放在了Spring Cloud本身上。比如說(shuō),為了創(chuàng)建注冊(cè)中心,他們了解并學(xué)習(xí)了Eureka,并通過(guò)Maven或是Gradle進(jìn)行了相應(yīng)的配置后,編寫了少量代碼外加幾個(gè)注解,于是一個(gè)可用的服務(wù)注冊(cè)中心就創(chuàng)建出來(lái)了;在使用過(guò)程中,他們會(huì)遇到一些關(guān)于Eureka的問(wèn)題,通過(guò)搜索資料或是咨詢他人,問(wèn)題也能夠得到解決,這樣他們對(duì)于Spring Cloud Eureka的認(rèn)知就止步于此;再比如說(shuō),他們還可能會(huì)用到Spring Cloud Config或是Spring Cloud Zookeeper,于是他們?cè)趯?duì)Git還不太了解的情況下通過(guò)參考網(wǎng)上的一些教程就把Spring Cloud Config搭建起來(lái)了,并且也能夠正常地從Git倉(cāng)庫(kù)中拉取配置信息;他們也許會(huì)使用Spring Cloud Zookeeper來(lái)作為服務(wù)發(fā)現(xiàn)與配置管理。于是,他們?cè)趯?duì)Zookeeper本身還不了解的情況下,通過(guò)不斷搜索網(wǎng)上的資料也能成功地將Spring Cloud Zookeeper搭建起來(lái),并投入使用。同樣,在這兩個(gè)子項(xiàng)目上,他們依舊止步于此。

第二種人:真正為了提升自己的技術(shù)理解深度與架構(gòu)能力來(lái)學(xué)習(xí)Spring Cloud。

這類人在學(xué)習(xí)Spring Cloud的開發(fā)者群體中占比非常少,因?yàn)檫@是一條崎嶇卻艱巨的道路,需要學(xué)習(xí)者付出持續(xù)不斷的努力并且要克服自己的惰性,擁有足夠的耐心。然而,這類人將會(huì)在整個(gè)學(xué)習(xí)過(guò)程中獲得最大的收益,也能夠充分將Spring Cloud背后的架構(gòu)與設(shè)計(jì)哲學(xué)真正理解清楚并形成自己的認(rèn)知理論。

Spring Cloud這樣一個(gè)優(yōu)秀的框架,如果你學(xué)習(xí)它的目的僅僅是為了能夠『用它』,那么我覺(jué)得這真是對(duì)如此優(yōu)良框架的一種浪費(fèi)。

我們都知道,在使用中學(xué)習(xí)效果是比較好的,特別是一些應(yīng)用層框架更是如此(對(duì)于某些底層框架,比如說(shuō)JVM本身,理論本身就是實(shí)踐)。那對(duì)于Spring Cloud來(lái)說(shuō),它提供了絕佳的使用中學(xué)習(xí)的范本。比如說(shuō),你在學(xué)習(xí)Git,那么Spring Cloud Config本身就是一個(gè)很好地促進(jìn)你學(xué)習(xí)Git的子項(xiàng)目,通過(guò)掌握與深挖Spring Cloud Config是如何通過(guò)Git來(lái)管理配置的,如果在項(xiàng)目啟動(dòng)時(shí)到Git倉(cāng)庫(kù)拉取相關(guān)的配置,你不僅可以學(xué)習(xí)到Spring Cloud Config本身,還能對(duì)Git的各種特性擁有進(jìn)一步的正確認(rèn)知。

再比如,你在學(xué)習(xí)Spring Cloud Zookeeper前,難道不應(yīng)該花費(fèi)足夠的時(shí)間來(lái)學(xué)習(xí)Zookeeper這樣一個(gè)如此之重要的分布式協(xié)調(diào)框架么?Zookeeper這個(gè)項(xiàng)目在如此之多的項(xiàng)目中都擔(dān)當(dāng)了最為重要的底層基礎(chǔ)設(shè)施,無(wú)論是Hadoop還是Kafka,都將Zookeeper作為重要的底層組件。如果你學(xué)習(xí)了Spring Cloud Zookeeper,然后竟然連Zookeeper的基本原理都不太清楚,對(duì)于Zookeeper的命令行操作都知之甚少,而只是掌握了Spring Cloud Zookeeper本身以及相關(guān)的一些API與注解,那這種學(xué)習(xí)意義何在呢?學(xué)習(xí)完了后,你依舊不知道應(yīng)該知道的那些重要理論與操作,別人問(wèn)你時(shí),你還是支支吾吾回答不上來(lái),這種學(xué)習(xí)難道不是所謂的『低水平努力』么?

Spring Cloud Zookeeper學(xué)習(xí)完了后,你甚至連Master選舉算法都不太了解,那我覺(jué)得你真是白學(xué)了。

你使用Spring Cloud Eureka作為服務(wù)注冊(cè)中心,項(xiàng)目都投入使用了,你連服務(wù)注冊(cè)中心的基本原理都不清楚,只知道啟動(dòng)一個(gè)Eureka Server,然后再啟動(dòng)幾個(gè)Eureka Client注冊(cè)到其上,這樣這些Client就可以通過(guò)application name來(lái)互相調(diào)用了,而不必通過(guò)域名或是IP來(lái)硬編碼了。如果真的是這樣,那我覺(jué)得你的Spring Cloud Eureka也算是白學(xué)了。

我曾經(jīng)見(jiàn)過(guò)有人連Kafka的基本概念都不太清楚,就通過(guò)Spring Data Kafka項(xiàng)目來(lái)操縱Kafka了,真是可怕的要命。

不要天天喊著我要學(xué)習(xí),我要進(jìn)步了。如此之多的資源就在你的面前擺著,你需要的不是更多的資源,而是徹底改變自己的學(xué)習(xí)方式與方法,否則學(xué)習(xí)再多也不過(guò)是過(guò)眼云煙罷了。

為何有人能在短短幾年技術(shù)就能做到突飛猛進(jìn),而有些人工作了那么多年技術(shù)始終徘徊不前。誠(chéng)然,公司這個(gè)平臺(tái)很重要;不過(guò),我認(rèn)為,更為重要的還是你的學(xué)習(xí)思維模型、認(rèn)知模型以及方法論這些系統(tǒng)層次,這才是起到最終決定作用的要素。

勿在浮沙筑高臺(tái)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容