文章目錄
- 一、微服務介紹
-
- 1、什麼是微服務?
- 2、微服務優勢
- 3、使用 Spring Cloud 的優勢
- 二、Spring Cloud 介紹
-
- 1、什麼是 Spring Cloud
- 2、核心特性
- 3、版本名稱
- 三、Spring Cloud 體系
-
- 1、Spring Cloud 包含的元件
- 2、Spring Cloud 和 Spring Boot 版本關系
一、微服務介紹
微服務架構越來越流行,這個沒有異議。
2009 年,Netflix 重新定義了它的應用程式員的開發模型,這個算是微服務的首次探索。
20014 年,《Microservices》,這篇文章以一個更加通俗易懂的方式,為大家定義了微服務。
為什麼要用微服務?
網際網路應用産品的兩大特點:
- 需求變化快
-
使用者群體龐大
在這樣的情況下,我們需要建構一個能夠靈活擴充,同時能夠快速應對外部環境變化的一個應用,使用
傳統的開發方式,顯然無法滿足需求。這個時候,微服務就登場了。
1、什麼是微服務?
簡單來說,微服務就是一種将一個單一應用程式拆分為一組小型服務的方法,拆分完成後,每一個服務都運作在獨立的程序中,服務于服務之間采用輕量級的通信機制來進行溝通(Spring Cloud 中采用基于HTTP 的 RESTful API)。
每一個服務,都是圍繞具體的業務進行建構,例如一個電商系統,訂單服務、支付服務、物流服務、會員服務等等,這些拆分後的應用都是獨立的應用,都可以獨立的部署到生産環境中。就是在采用微服務之後,我們的項目不再拘泥于一種語言,可以 Java、Go、Python、PHP 等等,混合使用,這在傳統的應用開發中,是無法想象的。而使用了微服務之後,我們可以根據業務上下文來選擇合适的語言和建構工具進行建構。
微服務可以了解為是 SOA 的一個傳承,一個本質的差別是微服務是一個真正分布式、去中心化的,微服務的拆分比 SOA 更加徹底。
2、微服務優勢
- 複雜度可控
- 獨立部署
- 技術選型靈活
- 較好的容錯性
- 較強的可擴充性
3、使用 Spring Cloud 的優勢
Spring Cloud 可以了解為微服務這種思想在 Java 領域的一個具體落地。Spring Cloud 在發展之初,就借鑒了微服務的思想,同時結合 Spring Boot,Spring Cloud 提供了元件的一鍵式啟動和部署的能力,極大的簡化了微服務架構的落地。
Spring Cloud 這種架構,從設計之初,就充分考慮了分布式架構演化所需要的功能,例如服務注冊、配置中心、消息總線以及負載均衡等。這些功能都是以可插拔的形式提供出來的,這樣,在分布式系統不斷演化的過程中,我們的 Spring Cloud 也可以非常友善的進化。
二、Spring Cloud 介紹
官網:https://spring.io/projects/spring-cloud
1、什麼是 Spring Cloud
Spring Cloud 是一系列架構的集合,Spring Cloud 内部包含了許多架構,這些架構互相協作,共同來建構分布式系統。利用這些元件,可以非常友善的建構一個分布式系統。
2、核心特性
- 服務注冊與發現
- 負載均衡
- 服務之間調用
- 容錯、服務降級、斷路器
- 消息總線
- 分布式配置中心
- 鍊路器
3、版本名稱
不同于其他的架構,Spring Cloud 版本名稱是通過 A(Angel)、B(Brixton)、C(Camden)、D(Dalston)、E(Edgware)、F(Finchley)。。 這樣來明明的,這些名字使用了倫敦地鐵站的名
字,目前最新版是 H (Hoxton)版。
Spring Cloud 中,除了大的版本之外,還有一些小版本,小版本命名方式如下:
- M ,M 版是 milestone 的縮寫,是以我們會看到一些版本叫 M1、M2
- RC,RC 是 Release Candidate,表示該項目處于候選狀态,這是正式發版之前的一個狀态,是以我們會看到 RC1、RC2
- SR,SR 是 Service Release ,表示項目正式釋出的穩定版,其實相當于 GA(GenerallyAvailable) 版。是以,我們會看到 SR1、SR2
- SNAPSHOT,這個表示快照版
三、Spring Cloud 體系
1、Spring Cloud 包含的元件
- Spring Cloud Netflix,這個元件,在 Spring Cloud 成立之初,立下了汗馬功勞。但是, 2018 年的斷更,也是 Netflix 掉鍊子了。
- Spring Cloud Config,分布式配置中心,利用 Git/Svn 來集中管理項目的配置檔案
- Spring Cloud Bus,消息總線,可以建構消息驅動的微服務,也可以用來做一些狀态管理等
- Spring Cloud Consul,服務注冊發現
- Spring Cloud Stream,基于 Redis、RabbitMQ、Kafka 實作的消息微服務
- Spring Cloud OpenFeign,提供 OpenFeign 內建到 Spring Boot 應用中的方式,主要解決微服務之間的調用問題
- Spring Cloud Gateway,Spring Cloud 官方推出的網關服務
- Spring Cloud Cloudfoundry,利用 Cloudfoundry 內建我們的應用程式
- Spring Cloud Security,在 Zuul 代理中,為 OAuth2 用戶端認證提供支援
- Spring Cloud AWS ,快速內建亞馬遜雲服務
- Spring Cloud Contract,一個消費者驅動的、面向 Java 的契約架構
- Spring Cloud Zookeeper,基于 Apache Zookeeper 的服務注冊和發現
- Spring Cloud Data Flow,在一個結構化的平台上,組成資料微服務
- Spring Cloud Kubernetes,Spring Cloud 提供的針對 Kubernetes 的支援
- Spring Cloud Function
- Spring Cloud Task,短生命周期的微服務
2、Spring Cloud 和 Spring Boot 版本關系
點我前往《SpringCloud專欄》