關于SpringCloud、SpringBoot 希望這是說得最詳細的

幾年前,沒幾個jar沖突一下都不叫搭框架 —— java面試必修

什么是Spring Boot

用我的話來理解,Spring Boot就是整合了框架的框架,它讓一切依賴都變得有序簡單,你不用操心A.jar是什么版本,又依賴哪些版本的jar,它默認配置了很多框架的使用方式,就像 maven整合了所有的jar包,Spring Boot整合了所有的框架,第三方庫的功能你拿著就能用。
Spring Boot的核心思想就是約定大于配置,一切由內定的約束來自動完成。采用 Spring Boot可以大大的簡化你的開發模式,節省大部分照搬照抄的成本,通過少量的代碼就能創建一個獨立的,它都有對應的組件支持。

它是由 Pivotal團隊提供的全新框架,其設計目的是用來簡化新 Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。

什么是Spring Cloud

Spring Cloud是一套分布式服務治理的框架,既然它是一套服務治理的框架,那么它本身不會提供具體功能性的操作,更專注于服務之間的通訊、熔斷、監控等。因此就需要很多的組件來支持一套功能。
微服務是可以獨立部署、水平擴展、獨立訪問(或者有獨立的數據庫)的服務單元, Spring Cloud就是這些微服務的大管家,采用了微服務這種架構之后,項目的數量會非常多, Spring Cloud做為大管家就需要提供各種方案來維護整個生態。

SpringColoud的小弟們

小弟們可是非常多,就像梁山108好漢那樣

默默無聞服務

融合在每個微服務中、依賴其它組件并為其提供服務。

  • Ribbon,客戶端負載均衡,特性有區域親和、重試機制。

  • Hystrix,客戶端容錯保護,特性有服務降級、服務熔斷、請求緩存、請求合并、依賴隔離。

  • Feign,聲明式服務調用,本質上就是Ribbon+Hystrix

  • Stream,消息驅動,有Sink、Source、Processor三種通道,特性有訂閱發布、消費組、消息分區。

  • Bus,消息總線,配合Config倉庫修改的一種Stream實現,

  • Sleuth,分布式服務追蹤,需要搞清楚TraceID和SpanID以及抽樣,如何與ELK整合。
利刃獨挑大梁

獨自啟動不需要依賴其它組件,單槍匹馬都能干。

  • Eureka,服務注冊中心,特性有失效剔除、服務保護。

  • Dashboard,Hystrix儀表盤,監控集群模式和單點模式,其中集群模式需要收集器Turbine配合。

  • Zuul,API服務網關,功能有路由分發和過濾。

  • Config,分布式配置中心,支持本地倉庫、SVN、Git、Jar包內配置等模式,
各司其職

每個組件都不是平白無故的產生的,是為了解決某一特定的問題而存在。

  • Eureka和Ribbon,是最基礎的組件,一個注冊服務,一個消費服務。

  • Hystrix為了優化Ribbon、防止整個微服務架構因為某個服務節點的問題導致崩潰,是個保險絲的作用。

  • Dashboard給Hystrix統計和展示用的,而且監控服務節點的整體壓力和健康情況。

  • Turbine是集群收集器,服務于Dashboard的。

  • Feign是方便我們程序員些更優美的代碼的。

  • Zuul是加在整個微服務最前沿的防火墻和代理器,隱藏微服務結點IP端口信息,加強安全保護的。

  • Config是為了解決所有微服務各自維護各自的配置,設置一個同意的配置中心,方便修改配置的。

  • Bus是因為config修改完配置后各個結點都要refresh才能生效實在太麻煩,所以交給bus來通知服務節點刷新配置的。

  • Stream是為了簡化研發人員對MQ使用的復雜度,弱化MQ的差異性,達到程序和MQ松耦合。

  • Sleuth是因為單次請求在微服務節點中跳轉無法追溯,解決任務鏈日志追蹤問題的。

特殊成員Zipkin,之所以特殊是因為從jar包和包名來看它不屬于Spring Cloud的一員,但是它與Spring Cloud Sleuth的抽樣日志結合的天衣無縫。乍一看它與Hystrix的Dashboard作用有重疊的部分,但是他們的側重點完全不同。Dashboard側重的是單個服務的統計和是否可用,Zipkin側重的監控環節時長。簡言之,Dashboard側重故障診斷,Ziokin側重性能優化。

與SpringCloud區別

通俗的說,SpringBoot是構建單個服務的快速架構,比如它是全家桶中的1個漢堡,SpringCloud是關注全局的微服務協調整理治理框架,類似于組成多個服務的全家桶,桶里面不光有漢堡,還有薯條,還有番茄醬,那現在我要給漢堡加點番茄醬,它就更好吃了,意思就是SpringBoot可以配合全家桶中的這些工具組成一個強大的微服務體系,有點類似于Collection和Collections。

  1. Spring boot是Spring的一套快速配置腳手架,可以基于Spring Boot快速開發單個微服務;Spring Cloud是一個基于Spring Boot實現的云應用開發工具
  2. Spring Boot專注于快速、方便集成的單個個體,Spring Cloud是關注全局的服務治理框架;
  3. Spring boot使用了默認大于配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot來實現。
  4. Spring Boot可以離開Spring Cloud獨立使用開發項目,但是Spring Cloud離不開Spring Boot,屬于依賴的關系。

作者有話說:喜歡的話就請移步Java面試必修網,請自備水,更多干、干、干貨等著你

轉載于:https://blog.51cto.com/14010905/2296354

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253357.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253357.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

weui-switch開關控件,表單提交后如何取值

最近在學習weui這個框架,做了一些小的試驗,發現weui-switch控件直接提交不能獲取到表單信息,在segmentfault上發現也有人提了這個問題,有人說可以設置一個隱含標簽來捕獲開關的狀態,試了一下,確實可以&…

麥克風設計指導與選型參考

隨著語音識別技術的成熟,智能音箱類產品的火爆,越來越多的產品可以升級為語音交互產品; 下面簡單介紹下此類產品的語音前端--麥克風陣列設計相關注意事項: 線性四麥陣列構型:如上圖所示,麥克風直線等距擺…

[BZOJ1419] Red is good(期望DP)

傳送門 逆推 只不過順序還是順著的,思想是逆著的 f[i][j]表示還剩下i張紅牌,j張黑牌的期望值 那么邊界是 f[i][0]i,因為只剩i張紅牌 f[0][j]0,只剩黑牌,顯然直接停止最優 f[i][j] max(0,i/(ij)*f[i-1][j]j/(ij)*f[i][…

Linux下高性能網絡編程中的幾個TCP/IP選項_SO_REUSEADDR、SO_RECVBUF、SO_SNDBUF、SO_KEEPALIVE、SO_LINGER、TCP_CORK、TCP_NODE

最近在新的平臺上測試程序,以前一些沒有注意到的問題都成為了性能瓶頸,通過設置一些TCP/IP選項能夠解決一部分問題,當然根本的解決方法是重構代碼,重新設計服務器框架。先列出幾個TCP/IP選項: 選項 man 7 socket: SO_R…

云計算在未來一定是不可或缺的

2019獨角獸企業重金招聘Python工程師標準>>> 在2018京東云合作伙伴大會上,京東云總裁申元慶表示,技術發展的大趨勢是“分久必合,合久必分”循環往復的波動,近十年來云計算的發展將算力、存儲、帶寬全部集中在中央部分&…

智能音箱 之 音頻通路質量--測試與參數

一、概述 當將語音識別算法接入到設備時,務必要保證設備的音頻通路具有足夠的質量。因此對設備進行音頻測試,以評估能夠影響語音識別性能的音頻前端的音頻參數。如下要點對語音識別至關重要: 自然聲音合適的增益良好的信噪比一致的響應&…

關于Linux路由表的route命令

轉自:http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html 查看 Linux 內核路由表 使用下面的 route 命令可以查看 Linux 內核路由表。 # route Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * …

Python學習 - 常用模塊(二)

目錄 一. 常用模塊 - hashlib 二. 常用模塊 - hmac 三. 常用模塊 - logging 四. 常用模塊 - re 五. 常用模塊 - requests 六. 常用模塊 - paramiko 一. 常用模塊 - hashlib hash: 一種算法, 3.x里代替了md5模塊和sha模塊, 主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 …

select函數分析

Select在Socket編程中還是比較重要的,可是對于初學Socket的人來說都不太愛用Select寫程序,他們只是習慣寫諸如connect、accept、recv或recvfrom這樣的阻塞程序(所謂阻塞方式block,顧名思義,就是進程或是線程執行到這些…

UART介紹

1. 概述 UART, Universal Asynchronous Receiver-Transmitter, 通用異步收發器; 串口:在嵌入式里指的是UART口,常用TTL電平即3.3V或者5.0V; COM口:在臺式機上常用的口,DB9那種接口,接口協議只…

mongodb環境安裝

1、mongodb安裝 我采用的是離線安裝, (1)在mongodb的官方網址下載所需要的版本。我下載的是 mongodb-linux-x86_64-ubuntu1604-3.4.5.tgz 。 (2)下載后解壓縮到待安裝目錄,我這里下載在了Downloads目錄…

rabbitmq隊列的exclusive,durability,auto-delete屬性以及消息可靠傳輸設計

非集群下,簡單的說:- 如果是excl,則設置durability沒有意義,因為不管服務器掛了還是客戶端主動/被動斷開了,隊列都會自動刪除。- auto-delete,其實可簡單的認為是同理,即使非excl,則…

IIC 總線接口詳細介紹

1. 概述 IIC Inter Integrated-Circuit 總線是PHLIPS公司推出的一種串行總線,是具備多主機系統所需的包括總線裁決和高低速器件同步功能的高性能串行總線,它支持多主控(multimastering),其中任何能夠進行發送和接收的設備都可以成為主總線。…

DMA數據傳輸過程

DMA方式具有如下特點:1、 外部設備的輸入輸出請求直接發給主儲存器。主存儲器既可以被CPU訪問,也可以被外圍設備訪問。因此,在主存儲器中通常要有一個存儲管理部件來為各種訪問主存儲器的申請排隊,一般計算機系統把外圍設備的訪問…

Android JNI開發系列(二)HelloWorld

2019獨角獸企業重金招聘Python工程師標準>>> 入門HelloWorld 新建項目 Configure your new project部分選中 Include C Support 復選框 Next 正常填寫所有其他字段并完成向導接下來幾個部分 在向導的Customize C Support 部分,您可以使用謝列選項自定…

sublime text3安裝js提示的插件

今天安裝Sublime Text3的js插件,在網上查了很多資料,為了方便以后看,寫一個安裝插件的總結和方法。 要安裝js相關的插件,就要先安裝一個Package Control(插件管理器)的插件,通過這個插件再去安裝…

SPI接口詳細介紹

1. 概述 SPI Serial Peripheral Interface,是串行外圍設備接口,是一種高速,全雙工,同步的通信總線。常規只占用四根線,節約了芯片管腳,PCB的布局省空間。現在越來越多的芯片集成了這種通信協議&#xff0…

駐扎博客園

今天把之前hexo里的一些文章全部轉移到博客園了,之后就在博客園寫點東西,記錄一些生活的瑣事。為什么要移至博客園呢?其實很簡單,這邊可以和一些同意從事前端的小伙伴一起互動。技術還是需要多討論的,希望之后能多更新…

H.264 Profile、Level、Encoder三張簡圖

H.264有四種畫質級別,分別是BP、EP、MP、HP: 1、BP-Baseline Profile:基本畫質。支持I/P 幀,只支持無交錯(Progressive)和CAVLC;   2、EP-Extended profile:進階畫質。支持I/P/B/SP/SI 幀&…

require.js學習記錄

1、簡介 官方對requirejs的描述:RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will impro…