1. 程式人生 > >關於SpringCloud、SpringBoot 希望這是說得最詳細的

關於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://www.itmsbx.com ,請自備水,更多幹、幹、幹貨等著你

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