微服務概述與SpringCloud

個人專題目錄


1.1 微服務與微服務架構

業界大牛馬丁.福勒(Martin Fowler) 這樣描述微服務:

論文網址: https://martinfowler.com/articles/microservices.html

_ 微服務

強調的是服務的大小,它關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應用,

狹意的看,可以看作Eclipse里面的一個個微服務工程/或者Module

_ 微服務架構

clip_image004.jpg

)

微服務架構是?種架構模式,它提倡將單?應?程序劃分成?組?的服務,服務之間互相協調、互相配合,為?戶提供最終價值。每個服務運?在其獨?的進程中,服務與服務間采?輕量級的通信機制互相協作(通常是基于HTTP協議的RESTful API)。每個服務都圍繞著具體業務進?構建,并且能夠被獨?的部署到?產環境、類?產環境等。另外,應當盡量避免統?的、集中式的服務管理機制,對具體的?個服務??,應根據業務上下?,選擇合適的語?、?具對其進?構建。

1.1.1 技術維度理解

微服務化的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底 地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事, 從技術角度看就是一種小而獨立的處理過程,類似進程概念,能夠自行單獨啟動 或銷毀,擁有自己獨立的數據庫。

1.2 微服務技術棧有哪些

微服務條目 落地技術 備注
服務開發 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等
全鏈路追蹤 Zipkin,Brave、Dapper等
服務部署 Docker、OpenStack、Kubernetes等
數據流操作開發包 SpringCloud Stream(封裝與Redis,Rabbit、Kafka等發送接收消息)
事件消息總線 Spring Cloud Bus
......

1.3 SpringCloud是什么

1.3.1 官網說明

clip_image006.jpg

SpringCloud,基于SpringBoot提供了一套微服務解決方案,包括服務注冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基于NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件。

SpringCloud利用SpringBoot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,SpringCloud為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等,它們都可以用SpringBoot的開發風格做到一鍵啟動和部署。

SpringBoot并沒有重復制造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過SpringBoot風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包

1.3.2 SpringCloud=分布式微服務架構下的一站式解決方案

是各個微服務架構落地技術的集合體,俗稱微服務全家桶

1.3.3 SpringCloud和SpringBoot是什么關系

SpringBoot專注于快速方便的開發單個個體微服務。

SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合并管理起來,

為各個微服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等集成服務

SpringBoot可以離開SpringCloud獨立使用開發項目,但是SpringCloud離不開SpringBoot,屬于依賴的關系.

SpringBoot專注于快速、方便的開發單個微服務個體,SpringCloud關注全局的服務治理框架

1.3.4 Dubbo是怎么到SpringCloud的? 哪些優缺點讓你去技術選型

目前成熟的互聯網架構(分布式+服務治理Dubbo)

clip_image010.jpg

我們把SpringCloud VS DUBBO進行一番對比

clip_image012.jpg

最大區別:SpringCloud拋棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式

嚴格來說,這兩種方式各有優劣。雖然從一定程度上來說,后者犧牲了服務調用的性能,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。

品牌機與組裝機的區別

很明顯,Spring Cloud的功能比DUBBO更加強大,涵蓋面更廣,而且作為Spring的拳頭項目,它也能夠與Spring Framework、Spring Boot、Spring Data、Spring Batch等其他Spring項目完美融合,這些對于微服務而言是至關重要的。使用Dubbo構建的微服務架構就像組裝電腦,各環節我們的選擇自由度很高,但是最終結果很有可能因為一條內存質量不行就點不亮了,總是讓人不怎么放心,但是如果你是一名高手,那這些都不是問題;而Spring Cloud就像品牌機,在Spring Source的整合下,做了大量的兼容性測試,保證了機器擁有更高的穩定性,但是如果要在使用非原裝組件外的東西,就需要對其基礎有足夠的了解。

社區支持與更新力度

最為重要的是,DUBBO停止了5年左右的更新,雖然2017.7重啟了。對于技術發展的新需求,需要由開發者自行拓展升級(比如當當網弄出了DubboX),這對于很多想要采用微服務架構的中小軟件組織,顯然是不太合適的,中小公司沒有這么強大的技術能力去修改Dubbo源碼+周邊的一整套解決方案,并不是每一個公司都有阿里的大牛+真實的線上生產環境測試過。

總結Cloud與Dubbo

問題:

曾風靡國內的開源 RPC 服務框架 Dubbo 在重啟維護后,令許多用戶為之雀躍,但同時,也迎來了一些質疑的聲音。互聯網技術發展迅速,Dubbo 是否還能跟上時代?Dubbo 與 Spring Cloud 相比又有何優勢和差異?是否會有相關舉措保證 Dubbo 的后續更新頻率?

人物:Dubbo重啟維護開發的劉軍,主要負責人之一

劉軍,阿里巴巴中間件高級研發工程師,主導了 Dubbo 重啟維護以后的幾個發版計劃,專注于高性能 RPC 框架和微服務相關領域。曾負責網易考拉 RPC 框架的研發及指導在內部使用,參與了服務治理平臺、分布式跟蹤系統、分布式一致性框架等從無到有的設計與開發過程

1.4 參考資料

官網

http://projects.spring.io/spring-cloud/

參考書

https://springcloud.cc/spring-cloud-netflix.html

springcloud中國社區

http://springcloud.cn/

springcloud中文網

https://springcloud.cc/

1.5 SpringCloud國內使用情況

1.5.1 國內公司

clip_image018.jpg

1.5.2 阿里云

clip_image020.jpg

)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容