javascript
醍醐灌顶——我眼中的Spring Cloud
在上一篇文章中,我談到了自己對于Spring Boot的一些想法,并且根據(jù)觀察到的現(xiàn)象分析了很多開發(fā)者在學(xué)習(xí)和使用Spring Boot時所存在的誤區(qū)以及相應(yīng)的解決方案。那么,在這篇文章中,我將來談?wù)勛约簩τ赟pring Cloud的認識與理解,同時根據(jù)自己過往在學(xué)習(xí)與使用Spring Cloud時的內(nèi)心真實想法和活動來展望學(xué)習(xí)Spring Cloud的正確方式,希望能對大家的學(xué)習(xí)起到一定的幫助作用。
首先要明確的一點是,Spring Cloud是基于Spring Boot構(gòu)建的,因此在學(xué)習(xí)Spring Cloud時要對Spring Boot有相當?shù)睦斫馀c認知,否則將會陷入到無窮無盡的挫折之中而無法自拔。
學(xué)習(xí)Spring Cloud最忌諱的做法就是對Spring Boot還一知半解就開始學(xué)習(xí)Spring Cloud,因為后者完全是基于前者來構(gòu)建的。當你對應(yīng)該具備的一些重要基礎(chǔ)知識與理論還猶未可知時就開始學(xué)習(xí)在其之上所構(gòu)建的更為復(fù)雜的框架時,挫敗感將會一直圍繞著你,這會令你的前進速度大打折扣。另外,在缺少必要的理論基礎(chǔ)時,一旦遇到問題你將很難有解決的思路,只能在網(wǎng)上盲目地搜索,查找答案。然而,令人遺憾的是,由于Spring Cloud的發(fā)展速度非常之快,因此網(wǎng)上所搜尋到的很多資料要么是過時的,要么是語焉不詳?shù)?#xff0c;甚至是完全錯誤的,這會對學(xué)習(xí)者造成非常嚴重的打擊和影響,讓你開始不斷懷疑人生,進而失去了進一步學(xué)習(xí)的動力,從而導(dǎo)致了最終的放棄。
眾所周知,Spring Cloud并非像Spring MVC之類的單一項目,而是多個項目的集合體,這些不勝枚舉的子項目都是為了解決微服務(wù)、分布式開發(fā)與部署、配置管理、網(wǎng)關(guān)路由、熔斷、負載均衡、日志處理、追蹤、數(shù)據(jù)處理、服務(wù)注冊與發(fā)現(xiàn)、安全等每一個重要方面的。因此,Spring Cloud所涉及到的技術(shù)點與功能是極為龐大的。它不僅僅是一項或幾項技術(shù),而是多種重要技術(shù)的集合體;這里面所涉及到的每一項重要技術(shù)都值得學(xué)習(xí)者好好地深入理解與學(xué)習(xí)。當然了,如果你擁有良好的基礎(chǔ),那么學(xué)習(xí)起Spring Cloud將會勢如破竹,而且也會特別扎實。
良好的基礎(chǔ)是徹底地、扎實地掌握Spring Cloud的不二法寶。
學(xué)習(xí)Spring Cloud有兩種人,這兩種人在學(xué)習(xí)和使用Spring Cloud時所擁有的不同態(tài)度與采取的不同方式?jīng)Q定了他們自己未來技術(shù)的提升空間到底有多大,是否能在花費了大量時間進行學(xué)習(xí)后讓自己的綜合技術(shù)能力有一個真正質(zhì)的飛躍,從而讓自己的職業(yè)路線越來越明晰,未來更加可期。
第一種人:為了學(xué)習(xí)本身和項目所需來學(xué)習(xí)Spring Cloud。
這類人會占據(jù)學(xué)習(xí)Spring Cloud的開發(fā)者群體中的大多數(shù)。由于公司的項目要采用Spring Cloud,或是自己覺得Spring Cloud值得一學(xué),或是聽別人說Spring Cloud很重要,于是開始學(xué)習(xí)這項技術(shù)。他們學(xué)習(xí)的重心均放在了Spring Cloud本身上。比如說,為了創(chuàng)建注冊中心,他們了解并學(xué)習(xí)了Eureka,并通過Maven或是Gradle進行了相應(yīng)的配置后,編寫了少量代碼外加幾個注解,于是一個可用的服務(wù)注冊中心就創(chuàng)建出來了;在使用過程中,他們會遇到一些關(guān)于Eureka的問題,通過搜索資料或是咨詢他人,問題也能夠得到解決,這樣他們對于Spring Cloud Eureka的認知就止步于此;再比如說,他們還可能會用到Spring Cloud Config或是Spring Cloud Zookeeper,于是他們在對Git還不太了解的情況下通過參考網(wǎng)上的一些教程就把Spring Cloud Config搭建起來了,并且也能夠正常地從Git倉庫中拉取配置信息;他們也許會使用Spring Cloud Zookeeper來作為服務(wù)發(fā)現(xiàn)與配置管理。于是,他們在對Zookeeper本身還不了解的情況下,通過不斷搜索網(wǎng)上的資料也能成功地將Spring Cloud Zookeeper搭建起來,并投入使用。同樣,在這兩個子項目上,他們依舊止步于此。
第二種人:真正為了提升自己的技術(shù)理解深度與架構(gòu)能力來學(xué)習(xí)Spring Cloud。
這類人在學(xué)習(xí)Spring Cloud的開發(fā)者群體中占比非常少,因為這是一條崎嶇卻艱巨的道路,需要學(xué)習(xí)者付出持續(xù)不斷的努力并且要克服自己的惰性,擁有足夠的耐心。然而,這類人將會在整個學(xué)習(xí)過程中獲得最大的收益,也能夠充分將Spring Cloud背后的架構(gòu)與設(shè)計哲學(xué)真正理解清楚并形成自己的認知理論。
Spring Cloud這樣一個優(yōu)秀的框架,如果你學(xué)習(xí)它的目的僅僅是為了能夠『用它』,那么我覺得這真是對如此優(yōu)良框架的一種浪費。
我們都知道,在使用中學(xué)習(xí)效果是比較好的,特別是一些應(yīng)用層框架更是如此(對于某些底層框架,比如說JVM本身,理論本身就是實踐)。那對于Spring Cloud來說,它提供了絕佳的使用中學(xué)習(xí)的范本。比如說,你在學(xué)習(xí)Git,那么Spring Cloud Config本身就是一個很好地促進你學(xué)習(xí)Git的子項目,通過掌握與深挖Spring Cloud Config是如何通過Git來管理配置的,如果在項目啟動時到Git倉庫拉取相關(guān)的配置,你不僅可以學(xué)習(xí)到Spring Cloud Config本身,還能對Git的各種特性擁有進一步的正確認知。
再比如,你在學(xué)習(xí)Spring Cloud Zookeeper前,難道不應(yīng)該花費足夠的時間來學(xué)習(xí)Zookeeper這樣一個如此之重要的分布式協(xié)調(diào)框架么?Zookeeper這個項目在如此之多的項目中都擔當了最為重要的底層基礎(chǔ)設(shè)施,無論是Hadoop還是Kafka,都將Zookeeper作為重要的底層組件。如果你學(xué)習(xí)了Spring Cloud Zookeeper,然后竟然連Zookeeper的基本原理都不太清楚,對于Zookeeper的命令行操作都知之甚少,而只是掌握了Spring Cloud Zookeeper本身以及相關(guān)的一些API與注解,那這種學(xué)習(xí)意義何在呢?學(xué)習(xí)完了后,你依舊不知道應(yīng)該知道的那些重要理論與操作,別人問你時,你還是支支吾吾回答不上來,這種學(xué)習(xí)難道不是所謂的『低水平努力』么?
Spring Cloud Zookeeper學(xué)習(xí)完了后,你甚至連Master選舉算法都不太了解,那我覺得你真是白學(xué)了。
你使用Spring Cloud Eureka作為服務(wù)注冊中心,項目都投入使用了,你連服務(wù)注冊中心的基本原理都不清楚,只知道啟動一個Eureka Server,然后再啟動幾個Eureka Client注冊到其上,這樣這些Client就可以通過application name來互相調(diào)用了,而不必通過域名或是IP來硬編碼了。如果真的是這樣,那我覺得你的Spring Cloud Eureka也算是白學(xué)了。
我曾經(jīng)見過有人連Kafka的基本概念都不太清楚,就通過Spring Data Kafka項目來操縱Kafka了,真是可怕的要命。
不要天天喊著我要學(xué)習(xí),我要進步了。如此之多的資源就在你的面前擺著,你需要的不是更多的資源,而是徹底改變自己的學(xué)習(xí)方式與方法,否則學(xué)習(xí)再多也不過是過眼云煙罷了。
為何有人能在短短幾年技術(shù)就能做到突飛猛進,而有些人工作了那么多年技術(shù)始終徘徊不前。誠然,公司這個平臺很重要;不過,我認為,更為重要的還是你的學(xué)習(xí)思維模型、認知模型以及方法論這些系統(tǒng)層次,這才是起到最終決定作用的要素。
勿在浮沙筑高臺
歡迎掃碼加我個人微信,交流技術(shù)
總結(jié)
以上是生活随笔為你收集整理的醍醐灌顶——我眼中的Spring Cloud的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《神经科学:探索脑》学习笔记(第7章 神
- 下一篇: 圆心科技再求上市:亏损金额飙升,研发费用