在上一篇文章中,我談到了自己對于Spring Boot的一些想法楣颠,并且根據(jù)觀察到的現(xiàn)象分析了很多開發(fā)者在學習和使用Spring Boot時所存在的誤區(qū)以及相應的解決方案。那么,在這篇文章中榛了,我將來談談自己對于Spring Cloud的認識與理解矿咕,同時根據(jù)自己過往在學習與使用Spring Cloud時的內心真實想法和活動來展望學習Spring Cloud的正確方式抢肛,希望能對大家的學習起到一定的幫助作用求类。
首先要明確的一點是缅刽,Spring Cloud是基于Spring Boot構建的禀倔,因此在學習Spring Cloud時要對Spring Boot有相當?shù)睦斫馀c認知战坤,否則將會陷入到無窮無盡的挫折之中而無法自拔。
學習Spring Cloud最忌諱的做法就是對Spring Boot還一知半解就開始學習Spring Cloud福稳,因為后者完全是基于前者來構建的涎拉。當你對應該具備的一些重要基礎知識與理論還猶未可知時就開始學習在其之上所構建的更為復雜的框架時,挫敗感將會一直圍繞著你灵寺,這會令你的前進速度大打折扣曼库。另外,在缺少必要的理論基礎時略板,一旦遇到問題你將很難有解決的思路毁枯,只能在網上盲目地搜索,查找答案叮称。然而种玛,令人遺憾的是,由于Spring Cloud的發(fā)展速度非常之快瓤檐,因此網上所搜尋到的很多資料要么是過時的赂韵,要么是語焉不詳?shù)模踔潦峭耆e誤的挠蛉,這會對學習者造成非常嚴重的打擊和影響祭示,讓你開始不斷懷疑人生,進而失去了進一步學習的動力谴古,從而導致了最終的放棄质涛。
眾所周知,Spring Cloud并非像Spring MVC之類的單一項目掰担,而是多個項目的集合體汇陆,這些不勝枚舉的子項目都是為了解決微服務、分布式開發(fā)與部署带饱、配置管理毡代、網關路由、熔斷勺疼、負載均衡教寂、日志處理、追蹤执庐、數(shù)據(jù)處理酪耕、服務注冊與發(fā)現(xiàn)、安全等每一個重要方面的耕肩。因此因妇,Spring Cloud所涉及到的技術點與功能是極為龐大的。它不僅僅是一項或幾項技術猿诸,而是多種重要技術的集合體婚被;這里面所涉及到的每一項重要技術都值得學習者好好地深入理解與學習。當然了梳虽,如果你擁有良好的基礎址芯,那么學習起Spring Cloud將會勢如破竹,而且也會特別扎實窜觉。
良好的基礎是徹底地谷炸、扎實地掌握Spring Cloud的不二法寶。
學習Spring Cloud有兩種人禀挫,這兩種人在學習和使用Spring Cloud時所擁有的不同態(tài)度與采取的不同方式決定了他們自己未來技術的提升空間到底有多大旬陡,是否能在花費了大量時間進行學習后讓自己的綜合技術能力有一個真正質的飛躍,從而讓自己的職業(yè)路線越來越明晰语婴,未來更加可期描孟。
第一種人:為了學習本身和項目所需來學習Spring Cloud。
這類人會占據(jù)學習Spring Cloud的開發(fā)者群體中的大多數(shù)砰左。由于公司的項目要采用Spring Cloud匿醒,或是自己覺得Spring Cloud值得一學,或是聽別人說Spring Cloud很重要缠导,于是開始學習這項技術廉羔。他們學習的重心均放在了Spring Cloud本身上。比如說僻造,為了創(chuàng)建注冊中心憋他,他們了解并學習了Eureka,并通過Maven或是Gradle進行了相應的配置后嫡意,編寫了少量代碼外加幾個注解举瑰,于是一個可用的服務注冊中心就創(chuàng)建出來了;在使用過程中蔬螟,他們會遇到一些關于Eureka的問題此迅,通過搜索資料或是咨詢他人,問題也能夠得到解決旧巾,這樣他們對于Spring Cloud Eureka的認知就止步于此耸序;再比如說,他們還可能會用到Spring Cloud Config或是Spring Cloud Zookeeper鲁猩,于是他們在對Git還不太了解的情況下通過參考網上的一些教程就把Spring Cloud Config搭建起來了坎怪,并且也能夠正常地從Git倉庫中拉取配置信息;他們也許會使用Spring Cloud Zookeeper來作為服務發(fā)現(xiàn)與配置管理廓握。于是搅窿,他們在對Zookeeper本身還不了解的情況下嘁酿,通過不斷搜索網上的資料也能成功地將Spring Cloud Zookeeper搭建起來,并投入使用男应。同樣闹司,在這兩個子項目上,他們依舊止步于此沐飘。
第二種人:真正為了提升自己的技術理解深度與架構能力來學習Spring Cloud游桩。
這類人在學習Spring Cloud的開發(fā)者群體中占比非常少,因為這是一條崎嶇卻艱巨的道路耐朴,需要學習者付出持續(xù)不斷的努力并且要克服自己的惰性借卧,擁有足夠的耐心。然而筛峭,這類人將會在整個學習過程中獲得最大的收益铐刘,也能夠充分將Spring Cloud背后的架構與設計哲學真正理解清楚并形成自己的認知理論。
Spring Cloud這樣一個優(yōu)秀的框架蜒滩,如果你學習它的目的僅僅是為了能夠『用它』滨达,那么我覺得這真是對如此優(yōu)良框架的一種浪費。
我們都知道俯艰,在使用中學習效果是比較好的捡遍,特別是一些應用層框架更是如此(對于某些底層框架,比如說JVM本身竹握,理論本身就是實踐)画株。那對于Spring Cloud來說,它提供了絕佳的使用中學習的范本啦辐。比如說谓传,你在學習Git,那么Spring Cloud Config本身就是一個很好地促進你學習Git的子項目芹关,通過掌握與深挖Spring Cloud Config是如何通過Git來管理配置的续挟,如果在項目啟動時到Git倉庫拉取相關的配置,你不僅可以學習到Spring Cloud Config本身侥衬,還能對Git的各種特性擁有進一步的正確認知诗祸。
再比如,你在學習Spring Cloud Zookeeper前轴总,難道不應該花費足夠的時間來學習Zookeeper這樣一個如此之重要的分布式協(xié)調框架么直颅?Zookeeper這個項目在如此之多的項目中都擔當了最為重要的底層基礎設施,無論是Hadoop還是Kafka怀樟,都將Zookeeper作為重要的底層組件功偿。如果你學習了Spring Cloud Zookeeper,然后竟然連Zookeeper的基本原理都不太清楚往堡,對于Zookeeper的命令行操作都知之甚少械荷,而只是掌握了Spring Cloud Zookeeper本身以及相關的一些API與注解共耍,那這種學習意義何在呢?學習完了后吨瞎,你依舊不知道應該知道的那些重要理論與操作征堪,別人問你時,你還是支支吾吾回答不上來关拒,這種學習難道不是所謂的『低水平努力』么?
Spring Cloud Zookeeper學習完了后庸娱,你甚至連Master選舉算法都不太了解着绊,那我覺得你真是白學了。
你使用Spring Cloud Eureka作為服務注冊中心熟尉,項目都投入使用了归露,你連服務注冊中心的基本原理都不清楚,只知道啟動一個Eureka Server斤儿,然后再啟動幾個Eureka Client注冊到其上剧包,這樣這些Client就可以通過application name來互相調用了,而不必通過域名或是IP來硬編碼了往果。如果真的是這樣疆液,那我覺得你的Spring Cloud Eureka也算是白學了。
我曾經見過有人連Kafka的基本概念都不太清楚陕贮,就通過Spring Data Kafka項目來操縱Kafka了堕油,真是可怕的要命。
不要天天喊著我要學習肮之,我要進步了掉缺。如此之多的資源就在你的面前擺著,你需要的不是更多的資源戈擒,而是徹底改變自己的學習方式與方法眶明,否則學習再多也不過是過眼云煙罷了。
為何有人能在短短幾年技術就能做到突飛猛進筐高,而有些人工作了那么多年技術始終徘徊不前搜囱。誠然,公司這個平臺很重要凯傲;不過犬辰,我認為,更為重要的還是你的學習思維模型冰单、認知模型以及方法論這些系統(tǒng)層次幌缝,這才是起到最終決定作用的要素。
勿在浮沙筑高臺诫欠。