SpringCloud學習前置知識

SpringCloud

1.從面試題開始

  • 什麼是微服務
  • 微服務之間是如何獨立通信的
  • SpringCloud和Dubbo有哪些區別
  • SpringBoot和SpringCloud,請談談對他們的理解
  • 什麼是服務熔斷?什麼是服務降級
  • 微服務的優缺點分別是什麼?說下你在項目開發中碰到的坑
  • 你所知道的微服務技術棧有哪些?
  • Eureka和zookeeper都可以提供服務註冊與發現的功能,請說說兩個的區別

2.微服務概述

微服務是什麼?

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

微服務和微服務架構?

微服務

​ 強調的是服務的大小,他關注的是某一個業務點,是具體解決某一問題/提供對應服務的一個服務應用,狹義的講,可以看成maven工程中的一個module。

微服務架構

​ 微服務架構是一種架構模式,他提倡將單一的應用程序拆分成一組小的服務,服務之間相互調協調、相互配合、對外提供最終的價值。每一個服務運行獨立的進程中,服務和服務之間通過輕量級的通信進行相互調用(通常使用的是Http協議的RESTful API協議)。每一個服務都圍繞自己具體的業務構建,可以單獨的部署到測試或者類生產環境等當中,另外,避免統一的集中式的服務管理機制、對某一個服務來說、可以根據自己的業務情況選擇合適的語言和工具進行構建。

微服務的優點和缺點

優點

  • 每一個服務都足夠內聚、足夠小、代碼容易理解
  • 開發簡單、開發效率高,一個微服務只做一件事情
  • 微服務能夠讓一個小團隊單獨開發
  • 微服務是鬆耦合的、無論是在開發階段或是部署階段都是獨立的
  • 可以使用不同的語言
  • 易於和第三方集成,持續集成工具
  • 可以良好的集成最新技術
  • 微服務只是邏輯代碼,不會和HTML和CSS或者其他頁面混合
  • 都有自己的存儲能力,可以有自己單獨的數據庫,也可以統一的數據庫

缺點

  • 運維人員要求比較高
  • 數據一致性
  • 開發人員需要處理分佈式程序的複雜性
  • 系統之間依賴性
  • 系統測試
  • 服務器間通信成本

微服務技術棧有哪些?

微服務條目 落地實現 備註
服務開發 Springboot、Spring、SpringMVc
服務配置與管理 Netflix公司的Archaius、阿里的Diamond
服務的註冊和發現 Eureka、Consul、Zookeeper等
服務的調用 Rest、RPC、gRPC
服務熔斷器 Hystrix、Envoy等
負載均衡 Ribbon、Nginx等
服務接口調用(客戶端調用服務端的簡化工具) Feign等
消息隊列 Kafaka、RabbitMQ、ActiveMQ等
服務配置中心管理 SpringCloudConfig、chef等
服務路由(API網關) Zuul等
服務監控 Zabbix、Nagios、Metrics、Spectator等
全鏈路追蹤 Zipkin、Brave、Dapper等
服務部署 Docker、OpenStack、Kubernetes等
數據量操作開發包 SpringCloud Stream(封裝與Rdis、Rabbit、Kafaka等收發消息)
事件消息總線 SpringCloud Bus

爲什麼選用SpringCloud作爲微服務架構?

選型依據

  • 整體解決方案和框架成熟度
  • 社區熱度
  • 可維護性
  • 學習曲線

當前各大互聯網公司的微服務架構有哪些?

  • 阿里的Dubbo/HSF
  • 京東JSF
  • 新浪微博Motan
  • 噹噹網Dubbox

各大微服務框架對比

功能點/服務框架 Netflix/Spring cloud Motan gRPC Thrift Dubbo/Dubbox
功能定位 完整的微服務框架 RPC框架、單整合了ZK或者Consul,實現集羣環境的基本服務註冊/發現 RPC框架 RPC框架 服務框架
支持Rest 是,Ribbon支持多種可插拔的序列化選擇
支持RPC 是(Hession2)
支持多語言 是(Rest)
服務註冊/發現 是(Eureka)Eureka服務註冊表,Karyon服務端框架支持服務自注冊和健康檢查 是(ZK/Consul)
負載均衡 服務端Zuul+客戶端Ribbon;Zuul服務動態路由,雲端負載均衡;Eureka針對中間層服務器 是(客戶端) 是(客戶端)
配置服務 Netflix Archaius SpringCloud Config Server集中配置 是(ZK提供)
服務調用鏈監控 是(Zuul),Zuul提供邊緣服務,API網關
高可用/容錯 是(服務端Hystrix+客戶端Ribbon) 是(客服端) 是(客戶端)
典型應用案例 Netfilx Sina Google Facebook
社區活躍 一般 一般 停止了五年
學習難度 中等 一般
文檔豐富度 一般 一般 一般

3.SpringCloud入門概述

是什麼?

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

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

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

​ SpringCloud=分佈式微服務架構下的一站式解決方案,是各個微服務架構落地技術的集合體,俗稱服務全家桶。

SpringCloud和Springboot是什麼關係?

  • SpringBoot專注於快速方便的開發單個個體微服務。
  • SpringCloud是關注全局的微服務協調治理架構。
  • SpringBoot可以單獨使用開發項目、單SpringCloud離不開SpringBoot。

Dubbo是怎麼到SpringCloud的?那些優缺點?

  • 最大區別SpringCloud拋棄了RPC通信,採用是基於HTTP的REST方式
  • 品牌機和組裝機的區別
  • 社區支持和更新力度

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

見各大微服務框架對比

總結Cloud和Dubbo

  • Dubbo的定位始終是一款RPC框架、而SpringCloud的目標是微服務架構的一站是解決方案
  • Cloud和Dubbo只能二選一

能幹啥?

上邊的特性都有。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章