1. 程式人生 > >Spring Cloud_1_介紹與環境搭建

Spring Cloud_1_介紹與環境搭建

Spring Cloud介紹與環境搭建

1、單體應用

2、單體優化(架構演進)

  • 針對單體應用的問題,參考SOA架構將模組劃分獨立的服務模組

    面向服務的架構(SOA)
    是一個元件模式
    將應用程式的不同功能單元(稱為服務)通過這些服務之間定義良好的介面和契約聯絡起來
    介面採用中立方式進行定義,獨立於實現服務的硬體平臺、作業系統和程式語言
    使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行互動

  • 耦合度

    模組及模組之間資訊或引數依賴的程度

  • ESB

    Enterprise Service Bus,企業服務匯流排
    傳統中介軟體技術與XML,Web服務等技術結合的產物
    提供了網路中最基本的連線中樞

3、架構要求

  • 高效能:應用程式基本要求
  • 獨立性:其中一個模組出現Bug或者其他問題,不影響其他模組
  • 易拓展:應用中的每一個節點,都可以根據實際需求進行拓展
  • 易管理:對於各個模組的資源,輕鬆實現管理、升級、減少維護成本
  • 狀態監控與警報:對整個應用程式進行監控,出現問題,及時報警

4、微服務架構

  • 微服務並不是某種特定技術,而是一個架構風格
  • 類似SOA,將單體應用分為小型服務單元,微服務之間使用HTTP的API進行資源訪問與操作
  • SOA架構側重於將每個單體應用的服務整合到ESB,微服務更強調服務的細化
  • 微服務中沒有ESB角色,每一個模組本身就是一個服務(對於ESB而言,是將特定的服務釋出到Web ESB容器中,但對於微服務而言,它本身就是一個服務)

5、Netflix OSS

  • Netflix是一個網際網路影片提供商,Netflix 公司成立了自己的開源中心,名稱為 Netflix Open Source Software Center,簡稱 Netflix OSS
  • 這個開源組織專注於大資料、雲端計算方面的技術,提供了多個開源框架
  • 這些框架包括大資料工具、構建工具、基於雲平臺的服務工具等。
  • Netflix 所提供的這些框架,很好的遵循微服務所推崇的理念,實現了去中心化的服務管理、服務容錯等機制。

6、Spring Cloud與Netflix

  • Spring Cloud並不是一個具體的框架,可以理解為一個工具箱,它提供的各類工具,可以幫助我們快速的搭建分散式系統
  • Spring Cloud的各個專案基於Springboot,將Netflix的多個框架進行封裝,並且通過自動配置的方式將這些框架繫結到Spring的環境中,從而簡化了這些框架的使用
  • Spring Cloud下的“Spring Cloud Netflix”模組,主要封裝了Netflix的以下專案:
    1. Eureka:基於REST服務的分散式中介軟體,主要用於服務管理
    2. Hystrix:容錯框架,通過新增延遲閥值以及容錯的邏輯,來幫助我們控制分散式系統元件的互動
    3. Feign:一個REST客戶端,目的是為了簡化Web Service客戶端的開發
    4. Ribbon:負載均衡框架,在微服務叢集中為各個客戶端的通訊提供支援,它主要實現中間層應用程式的的負載均衡
    5. Zuul:為微服務叢集提供過代理,過濾,路由等功能(閘道器)

7、Spring Cloud的主要模組

  • Spring Cloud Config:為分散式系統提供了配置伺服器和配置客戶端,通過對它們的配置,可以很好的管理叢集中的配置檔案
  • Spring Cloud Sleuth:服務跟蹤框架,可以與 Zipkin、Apache HTrace 和 ELK 等資料分析、服務跟蹤系統進行整合,為服務跟蹤、解決問題提供了便利
  • Spring Cloud Stream:用於構建訊息驅動微服務的框架,該框架在 Spring Boot 的基礎上,整合了“Spring Integration”來連線訊息代理中介軟體。
  • Spring Cloud Bus:連線 RabbitMQ、Kafka 等訊息代理的叢集訊息匯流排

8、環境搭建


  • idea:IntelliJ IDEA 2017.2.5 x64
  • maven:3.2.5

配置阿里的遠端倉庫
%MAVEN_HOME%/apache-maven-3.2.5/setting.xml

在 mirrors 節點下加入以下配置:

<mirrors>

    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror> 

</mirrors>
  • JDK:1.8.0_131