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