一、微服務與微服務架構
簡單概括一下微服務與微服務架構。微服務強調的是服務的大小,它關注的是某乙個點,是具體解決某乙個問題/提供落地對應服務的乙個服務應用,狹意的看,可以看作eclipse裡面的乙個個微服務工程/或者module。微服務架構是⼀種架構模式,它提倡將單⼀應⽤程式劃分成⼀組⼩的服務,服務之間互相協調、互相配合,為⽤戶提供最終價值。每個服務運⾏在其獨⽴的程序中,服務與服務間採⽤輕量級的通訊機制互相協作(通常是基於http協議的restful api)。每個服務都圍繞著具體業務進⾏構建,並且能夠被獨⽴的部署到⽣產環境、類⽣產環境等。另外,應當盡量避免統⼀的、集中式的服務管理機制,對具體的⼀個服務⽽⾔,應根據業務上下⽂,選擇合適的語⾔、⼯具對其進⾏構建。
二、微服務技術棧有哪些
服務開發:springboot、spring、springmvc
服務配置與管理:netflix公司的archaius、阿里的diamond等
服務註冊與發現:eureka、consul、zookeeper等
服務呼叫:rest、rpc、grpc
服務熔斷器:hystrix、envoy等
負載均衡:ribbon、nginx等
服務介面呼叫(客戶端呼叫服務的簡化工具) :feign等
訊息佇列:kafka、rabbitmq、activemq等
服務配置中心管理:springcloudconfig、chef等
服務路由(api閘道器):zuul等
服務監控:zabbix、nagios、metrics、spectator等
服務部署:docker、openstack、kubernetes等
資料流操作開發包:springcloud stream(封裝與redis,rabbit、kafka等傳送接收訊息)
事件訊息匯流排:spring cloud bus
三、springcloud是什麼
1、官方說明
springcloud,基於springboot提供了一套微服務解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務閘道器,負載均衡,熔斷器等元件,除了基於netflix的開源元件做高度抽象封裝之外,還有一些選型中立的開源元件。
springcloud利用springboot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,springcloud為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微**、事件匯流排、全域性鎖、決策競選、分布式會話等,它們都可以用springboot的開發風格做到一鍵啟動和部署。
springboot並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過springboot風格進行再封裝遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。
2、通俗理解
springcloud=分布式微服務架構下的一站式解決方案,是各個微服務架構落地技術的集合體,俗稱微服務全家桶。
3、springcloud和springboot是什麼關係
(1)
springboot專注於快速方便的開發單個個體微服務。
(2)springcloud是關注全域性的微服務協調整理治理框架,它將springboot開發的乙個個單體微服務整合並管理起來,為各個微服務之間提供,配置管理、服務發現、斷路器、路由、微**、事件匯流排、全域性鎖、決策競選、分布式會話等等整合服務。
(3)springboot可以離開springcloud獨立使用開發專案,但是springcloud離不開springboot,屬於依賴的關係。
(4)springboot專注於快速、方便的開發單個微服務個體,springcloud關注全域性的服務治理框架。
4、dubbo與springcloud的對比
(1)最大區別:服務呼叫方式的區別
springcloud拋棄了dubbo的rpc通訊,採用的是基於http的rest方式。嚴格來說,這兩種方式各有優劣。雖然從一定程度上來說,後者犧牲了服務呼叫的效能,但也避免了上面提到的原生rpc帶來的問題。而且rest相比rpc更為靈活,服務提供方和呼叫方的依賴只依靠一紙契約,不存在**級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。
(2)品牌機與組裝機的區別
很明顯,spring cloud的功能比dubbo更加強大,涵蓋面更廣,而且作為spring的拳頭專案,它也能夠與spring framework、spring boot、spring data、spring batch等其他spring專案完美融合,這些對於微服務而言是至關重要的。使用dubbo構建的微服務架構就像組裝電腦,各環節我們的選擇自由度很高,但是最終結果很有可能因為一條記憶體質量不行就點不亮了,總是讓人不怎麼放心,但是如果你是一名高手,那這些都不是問題;而spring cloud就像品牌機,在spring source的整合下,做了大量的相容性測試,保證了機器擁有更高的穩定性,但是如果要在使用非原裝元件外的東西,就需要對其基礎有足夠的了解。dubbo定位是rpc框架,spring cloud目標是微服務架構下的一站式解決方案。
(3)社群支援與更新力度
最為重要的是,dubbo停止了5年左右的更新,雖然2017.7重啟了。對於技術發展的新需求,需要由開發者自行拓展公升級(比如當當網弄出了dubbox),這對於很多想要採用微服務架構的中小軟體組織,顯然是不太合適的,中小公司沒有這麼強大的技術能力去修改dubbo原始碼+周邊的一整套解決方案,並不是每乙個公司都有阿里的大牛+真實的線上生產環境測試過。
四、參考資料
官網:springcloud中國社群:
springcloud中文網:
一些常用的:
/spring-cloud-netflix.html
/spring-cloud-dalston.html
微服務 01初識
傳統的soa架構已經是面向服務的應用架構了,整個架構中其實已經包含了各式各樣不同的服務,服務之間通過相互依賴最終對外提供一系列功能 esb企業級訊息匯流排通常被引入進傳統soa架構,從而實現規整 可治理的星型結構。與此同時微服務架構其實是也是soa思想,但是更進一步的是它更強調的是子系統的元件化和單...
Dubbox以及微服務
現在整體架構是如下圖 假設服務消費者為訂單服務,服務提供者為使用者服務 這樣會有什麼問題呢?當服務提供者增加節點時,需要修改配置檔案 當其中乙個服務提供者宕機時,服務消費者不能及時感知到,還會往宕機的服務傳送請求 這個時候就得引入註冊中心了 註冊中心 dubbo目前支援4種註冊中心,multicas...
微服務專題學習01
springboot結合前端有很多種方法,比如在static裡面直接加入css或js,又或者引入webjars,以jar包的形式加入專案 webjars形式 pom 檔案 引用bootstrap org.webjars groupid bootstrap artifactid 3.3.7 1 ver...