??在公司用了1年的SpringCloud了,還是想系統(tǒng)化的深入了解下SpringCloud架構,前段時間看了下SpringBoot,感觸非常深,想趁熱打鐵把SpringCloud的學習心得也寫一寫。
??目前的項目用SpringCloud微服務框架,在開發(fā)之前呢,一般都要先學SpringBoot打好基礎,那么Spring,SpringBootSpringCloud三者之間有什么關系呢,其實Spring作為JAVA EE的開發(fā)基石,一直很火熱。SpringBoot對Spring做了很好的簡化,提高了開發(fā)人員的開發(fā)效率,能夠快速構建Spring應用,而且當時也在公司使用SpringBoot參加了編程比賽。SpringCloud建立在SpringBoot之上,它利用SpringBoot簡化構建分布式應用。
什么是微服務
??2014年James和馬丁兩位大神提出了微服務,微服務是一種架構風格,就像restful一樣,既然是一種架構風格,說明沒有強制性,沒有唯一的答案。
微服務的特性:
??1.一系列微小的服務共同組成
??2.跑在自己的進程里
??3.每個服務為獨立的業(yè)務開發(fā)
??4.獨立部署
??5.分布式的管理
在微服務之前,架構的演變

單體架構
??All in One就是一種單體架構,單體架構不是說他們不能分布式,而是說他的業(yè)務全部在一個項目工程里面,比如一個war包里面,它沒有外部依賴,這個外部依賴不是指的maven的依賴,而是說業(yè)務邏輯的依賴,比如你的系統(tǒng)里面有資金業(yè)務,有商戶業(yè)務,兩種業(yè)務放在一個系統(tǒng)里面,那么就是一種單體架構。
?單體架構優(yōu)點:
??1.容易測試,因為在本地就可以直接啟動,不需要外部依賴
??2.容易部署,因為你可以把它打成一個war包直接放到tomcat容器中運行
?單體架構缺點:
??1.開發(fā)效率低,所有開發(fā)人員在一個項目里面開發(fā)
??2.代碼維護難,等到新人來開發(fā)的時候就呵呵噠了
??3.部署不夠靈活,這里說的部署和上面優(yōu)點中說的部署不是一個概念, 而是說,你的代碼修改一點,那么就要重新構建,還記得以前在阿里實習的時候一個工程改一點要構建15分鐘,嚇死人!為什么這里我還是要用部署這個詞語呢,是想告誡入門者,在開發(fā)中,你總會遇到很多人把同一個詞語用到不同的上下文,以后別人跟你說部署的時候,要分清語境。
??4.穩(wěn)定性不高,因為一個大家族里面誰出了問題,直接團滅。
??5.擴展性不夠,比如資金業(yè)務和商戶業(yè)務其中一個使用多,一個使用少,你很難做到兼顧。
分布式定義:
??旨在支持應用程序和服務的開發(fā),可以利用物理架構由多個自治的處理元素,不共享主內存,但通過網絡發(fā)送消息合作。什么是多個自治的處理元素,就是多節(jié)點的意思。那么什么是分布式,什么是集群呢?舉一個例子,一個廚房里面有兩個廚師,一個炒菜,一個洗菜,這就是分布式,兩個都炒菜,那么就是集群~
??講完這些定義后,我們看看一個圖:
我們聊聊這個圖里面的一些東西:
??1.服務之間要通信,那么就必須要服務注冊發(fā)現(xiàn)。
??2.服務網關:屏蔽后臺細節(jié),路由到具體微服務,限流,監(jiān)控日志,安全,認證,授權,反爬蟲,非常的關鍵!一個公司的系統(tǒng)好不好,只需要看服務網關如何就行了~
??3.后端通用服務:也叫中間層服務。啟動的時候會將服務注冊到注冊表里面去。
??4.前端服務:也叫作邊緣服務。通過查詢注冊表調用后端服務。它的主要作用是對后端的服務做聚合和裁剪后暴露給外端的服務。聚合:對多個API調用進行聚合,減少客戶端對API的調用次數(shù)。什么是裁剪呢,比如說PC端和手機端在對服務進行調用的時候,返回的一些字段數(shù)量是不一樣的。還有就是電腦上返回HTML,手機端返回JSON,這也是一種裁剪。銀聯(lián)的云閃付商戶通APP在做查詢交易的時候PC端和APP端的返回字段數(shù)量就是不一樣的,這一點大家可以下載體驗下。
??從圖中我們可以看到后端通用服務和前端服務是兩個很大的模塊,有沒有辦法幫他們瘦身呢?有的,目前國內有兩大框架可以做到,一個是dubbo,還有一個就是我們接下來幾篇文章要講的核心東西SpringCloud。使用dubbo呢往往是做服務治理,zookeeper做注冊中心。
SpringCloud是什么
??它是一個開發(fā)工具集,包含了多個子項目,注意它不是自己開發(fā)這些子項目!這就是傳說中的拿來主義吧。SpringCloud利用了SpringBoot的開發(fā)便利性,基于對NetFlix開源組件的進一步封裝,簡化了分布式的開發(fā)。NETFLIX這家公司呢,目前來說是公認在這方面做得最好的。
??好了微服務的開端篇就講到這里,未來的時間里我們將重點介紹SpringCloud的以下模塊,有不足之處歡迎大家指正。
