1. 程式人生 > >Spring Cloud學習之-什麼是Spring Cloud?

Spring Cloud學習之-什麼是Spring Cloud?

SpringCloud

什麼是微服務?

要想學習微服務,首先需要知道什麼是微服務?為什麼會有微服務?相信看完架構的發展史讀者就會明白

架構發展史

單體應用架構

如圖所示:將所有的模組,所有內容(頁面、Dao、Service、Controller)全部寫入一個專案中,放在一個Tomcat容器中啟動適用於小型專案

優點:開發速度快,可以利用程式碼生成工具快速的開發一個專案

缺點:不易擴充套件,程式碼耦合度高,且不容錯(當某部分出錯後整個服務就會停止執行)

垂直架構

既然原來單體架構中程式碼耦合度高,不利於維護和執行,人們自然就想到將不同的內容分開。最簡單合理的方式就是將系統按照功能劃分成不同的模組,然後將各模組獨立放入不同的Web容器中,這就形成了垂直架構

優點:程式碼耦合度降低,且不同模組之間可以獨立執行。一旦某個模組壓力過大,可以針對性的搭叢集

缺點:模組之間有可能不是那麼完全獨立,導致實體類或者其他層程式碼不能複用,需要多出貼上,不方便日後維護。如果直接通過HTTP呼叫又不是很合理。

分散式架構/分散式SOA架構

分散式架構顧名思義就是分散部署在不同的機器上的服務,一個服務可能負責幾個功能,是一種面向SOA架構的,服務之間也是通過rpc來互動或者是webservice來互動的架構。從開發的角度看就是Controller層(服務消費者)和Service層(服務提供者)分成不同的專案,部署在不同的伺服器上,通過RPC(遠端方法呼叫)來實現互動。阿里巴巴著名的Dubbo框架就是作為分散式架構的框架。一般推薦使用Zookeeper作為服務的註冊中心,負責註冊和發現服務的提供者,並供服務的消費者消費

微服務

微服務的提出者馬丁·福勒關於微服務的論文中文翻譯版

單體架構和微服務的比較圖示:

微服務的核心就是將傳統的一站式應用,根據業務拆分成一個個原子應用。徹底地去耦合,一個服務只做一件事情,從技術角度講就是一個服務就是一個程序,可以單獨啟動或銷燬,擁有獨立的資料庫。並且通過配置中心可以方便的切換資料庫等。

優點:

  • 每個服務足夠內聚,足夠小,程式碼容易理解,一個服務可能就是專一的只幹一件事。開發簡單、開發效率提高
  • 微服務能夠被小團隊單獨開發,這個小團隊可以是由2到5人的開發人員組成
  • 微服務能使用不同的語言開發。易於和第三方整合,微服務允許容易且靈活的方式整合自動部署,通過持續整合工具,如Jenkins, Hudson, bamboo 。微服務允許你利用融合最新技術。
  • 微服務易於被一個開發人員理解,修改和維護,這樣小團隊能夠更關注自己的工作成果。無需通過合作才能體現價值。

缺點:

  • 開發人員要處理分散式系統的複雜性,會面臨分散式事務、分散式一致性等問題
  • 多服務運維難度,隨著服務的增加,運維的壓力也在增大
  • 服務間通訊成本變高

微服務的技術棧

微服務條目 落地技術 備註
服務開發 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

什麼是Spring Cloud

Spring Cloud 是實現微服務思想落地開發的一整套技術的集合

Spring Cloud和Dubbo的區別圖解

Spring Cloud開發者文件中文版:

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

Spring Cloud中國社群

http://springcloud.cn/

Spring Cloud中文網

https://springcloud.