1. 程式人生 > >Spring基礎 快速入門spring cloud(1) Spring Cloud介紹

Spring基礎 快速入門spring cloud(1) Spring Cloud介紹

這裡寫圖片描述

分散式系統, 微服務, Java, 當這三個詞放到一起的時候, 很多人自然而然地就會想起Spring Cloud. Spring Cloud是Spring總多的Project中的一個,它提供了一整套的工具幫助系統架構師們在進行分散式設計的時候可以拿來即用, 在建立和釋出微服務時極為便捷和有效.

基本資訊

本系列介紹所使用的spring cloud的Release為Camden SR3。 雖然各個版本可能相差不大。

專案 詳細
Release Camden SR3
Reference http://cloud.spring.io/spring-cloud-static/Camden.SR3/
API http://cloud.spring.io/spring-cloud-static/spring-cloud.html

Spring Cloud

Spring Cloud提供了一整套的工具幫助建立分散式應用,使用Spring Cloud可以用Spring Cloud的方式建立符合12要素的原生雲應用。Spring Cloud與Spring Boot等一起,提供了一整套的微服務架構的原生雲應用的解決方案。
這裡寫圖片描述

分散式應用

分散式應用相比普通應用,因為它的複雜,所以導致很多問題我們在作架構的時候不得不考慮,傳統的方式下是通過總多的軟體/硬體的整合來解決的。比如至少需要考慮如下問題:

專案 詳細
No.1 配置管理
No.2 控制匯流排
No.3 叢集管理
No.4 安全機制
No.5 Session管理
No.6 Failback
No.7 智慧路由
No.8 閘道器管理
No.9 服務管理(服務發現/服務註冊等)

而一旦我們有了Spring Cloud,基本上就是一個All in One的集合。

原生雲應用

原生雲應用Cloud Native Applications是一個被叫的越來越多的概念。Cloud Native到底是什麼?從Spring Cloud的角度去理解,Cloud Native是在持續交付和價值驅動的軟體開發領域為了鼓勵更加方便快捷有效地實施最佳實踐的一種軟體開發方式。可能這個解釋依然不能讓大多數人所理解,那麼我們換一種方式來理解,它在改變什麼?傳統的應用是什麼?

傳統應用

關於傳統應用下應用相關,這裡列出一些我們常見的條目:

專案 詳細
架構 3層架構或者N層架構
耦合 緊耦合,有狀態
負載自動擴充套件 不可,或者非常困難
物理宕機 極力避免(錢+精力)
應用恢復 檢測->確認->手動恢復
DevOps 開發和運維割裂,持續整合和持續部署困難

總結一下,一個詞,很嬌氣,像我們養的寵物。以前有一些關於pets 和 cattle的討論在這方面能給一些啟事,沒有讀過的建議搜尋來讀一下。

原生雲應用

專案 詳細
架構 微服務
耦合 鬆耦合,儘量無狀態
負載自動擴充套件 自動水平擴充套件
物理宕機 自愈
應用恢復 通過設計和Platform結合,能夠自愈
DevOps 開發和運維無縫整合,持續整合和持續部署方便

總結一下,一個詞, 很皮實。像養牛場裡的牛,有問題了隨時換一個,而不是像寵物那樣傲嬌。以前寫過一些文章關於Rancher,Rancher是一個用於部署和管理生產環境的容器的開源平臺,它與Kubernetes/Mesos/Docker Swarm進行整合,但是它自己也有一個,它把這個也命名為Cattle,專案的名稱也是這樣,有興趣地可以研究一下。

Twelve-Factor

URL

專案 詳細
英文URL https://12factor.net/
中文URL https://12factor.net/zh_cn/

摘要

專案 詳細
I. 基準程式碼 一份基準程式碼,多份部署
II. 依賴 顯式宣告依賴關係
III. 配置 在環境中儲存配置
IV. 後端服務 把後端服務當作附加資源
V. 構建,釋出,執行 嚴格分離構建和執行
VI. 程序 以一個或多個無狀態程序執行應用
VII. 埠繫結 通過埠繫結提供服務
VIII. 併發 通過程序模型進行擴充套件
IX. 易處理 快速啟動和優雅終止可最大化健壯性
X. 開發環境與線上環境等價 儘可能的保持開發,預釋出,線上環境相同
XI. 日誌 把日誌當作事件流
XII. 管理程序 後臺管理任務當作一次性程序執行

Pom

使用Maven可以非常簡單地將Spring Cloud匯入工程之中,具體Maven片段如下

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.0.RELEASE</version>
</parent>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Camden.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

子專案

專案 詳細
Spring Cloud Config 統一配置管理,支援本地/Git/SVN.
Spring Cloud Netflix Netflix提供的多種元件包括Eureka, Hystrix, Zuul, Archaius等。
Spring Cloud Bus 使用分散式的訊息機制將服務和服務例項連線起來的事件匯流排,在跨叢集進行狀態通知時非常有效,比如配置變更事件。
Spring Cloud for Cloud Foundry 與CloudFoundry進行整合
Spring Cloud Cloud Foundry Service Broker 提供Service Broker用來管理相關服務
Spring Cloud Cluster 通過對Zookeeper, Redis, Hazelcast, Consul等進行抽象和實現所提供的關於Leadership election以及common stateful patterns的支援
Spring Cloud Consul 使用Hashicorp Consul進行服務發現和配置管理
Spring Cloud Security 為應用程式新增OAuth2的安全控制
Spring Cloud Sleuth 提供與Zipkin/HTrace/ELK等相容的Tracing機制
Spring Cloud Data Flow 簡單易用的DSL與擴拽可用的GUI,加之REST-API一起提供了一種簡化的微服務資料流管道機制。
Spring Cloud Stream 使用Apache Kafka或者RabbitMQ收發訊息,提供了一種輕量級的事件驅動的微服務框架用於和外系統進行連線。
Spring Cloud Stream App Starters 基於spring boot,與外系統進行整合
Spring Cloud Zookeeper 使用Apache Zookeeper進行服務發現和配置管理
Spring Cloud for Amazon Web Services 用於簡化與Amazon Web Service更好的整合
Spring Cloud Connectors 使得Paas應用更容易與後端服務(比如資料庫)進行互動
Spring Cloud Starters 更簡單的進行以來管理(同其他starter類似)
Spring Cloud CLI 用CLI方式建立Spring Cloud的各種元件。

總結:本文走馬觀花地過了一下Spring Cloud相關的知識和概念,從下篇文章開始,我們將使用具體的例子,逐步深入研究是如何使用Spring Cloud的各種元件非常簡單的進行服務發現/負載均衡/配置管理/閘道器管理等。

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net