首頁>技術>

前言

基於 Spring Cloud 的微服務設計和開發,已經越來越多地得到了更多企業的推廣和應用,而 Spring Cloud 社群也在不斷的迅速發展壯大之中,近幾年時間,Spring Cloud 的版本也經歷了快速的迭代和更新。

本篇小編將帶你們以最新的 Spring Cloud 發行版 Greenwich.SR1,帶領大家體驗如何使用 Spring Cloud 從微服務的設計、開發到部署、釋出的全過程,在這一過程中,您將可以學到,怎麼快速構建一個 Spring Cloud 專案工程,怎麼使用最新版本的 Spring Boot 開發框架開發微服務應用,以及如何使用 Consul 進行微服務治理,並以此構建一個高效能的分散式環境,同時體會如何使用 Docker 進行微服務釋出。

1、微服務結構概述

微服務架構是當前軟體開發領域的技術熱點。它在各種部落格、社交媒體和會議演講上的出鏡率非常之高,筆者相信大家也都聽說過微服務這個名詞。然而微服務似乎又是非常虛幻的——我們找不到微服務的完整定義,以至於很多人認為是在炒作概念。

那麼什麼是微服務呢?它解決了哪些問題?它又具有哪些特點?諸多問題,本章都將為你―一解答。同時,微服務理論性的內容,網際網路上已有很多,本書不會過多提及。筆者會盡量把篇幅花在微服務的具體實戰內容上。

單體應用架構存在的問題如何解決單體應用架構存在的問題什麼是微服務微服架構的優點與挑戰微服設計原則如果實現微服務架構2、微服務開發框架-Spring cloudspring cloud 簡介

儘管Spring Cloud帶有“Cloud”的字樣。但它並不是雲計算解決方案,而是在SpringBoot 基礎上構建的,用於快速構建分散式系統的通用模式的工具集。

spring cloud特點約定優於配置。適用於各種環境。開發、部署在 PC Server或各種雲環境(例如阿里雲、AWS 等)均可。隱藏了元件的複雜性,並提供宣告式、無xml的配置方式。。開箱即用,快速啟動。輕量級的元件。Spring Cloud整合的元件大多比較輕量。例如 Eureka、Zuul,等等,都是各自領域輕量級的實現。元件豐富,功能齊全。Spring Cloud為微服務架構提供了非常完整的支援。例如,配置管理、服務發現、斷路器、微服務閘道器等。選型中立、豐富。例如,Spring Cloud支援使用Eureka、Zookecper或Consul實現服務發現。靈活。Spring Cloud的組鹹部分是解耦的,開發人員可按需靈活挑選技術選型。spring cloud版本3、開始使用spring cloud 實戰微服務

本章正式開始使用Spring cloud 進行微服務實踐

spring cloud實戰前提服務提供者與服務消費者編寫服務提供者編寫服務消費者為專案整合spring boot Actuator硬編碼有哪些問題4、微服務註冊與發現服務發現簡介

透過前文的講解,我們知道硬編碼提供者地址的方式有不少問題。要想解決這些問題,服務消費者需要一個強大的服務發現機制,服務消費者使用這種機制獲取服務提供者的網路資訊。不僅如此,即使服務提供者的資訊發生變化,服務消費者也無須修改配置檔案。

服務發現元件提供這種能力。在微服務架構中,服務發現元件是一個非常關鍵的元件。

Eureka簡介Eureka原理編寫Eureka Server將微服務註冊到Eureka的高可用為Eureka Server新增使用者認證Eureka Server的REST端點Eureka的自我保護模式多網絡卡環境下的IP選擇Eureka的健康檢查5、使用Ribbon實現客戶端側負載均衡

經過前文的講解,已經實現了微服務的註冊與發現。啟動各個微服務時,Eureka Clicnt會把自己的網路資訊註冊到Eureka Server 上。世界似乎更美好了一些。

然而,這樣的架構依然有一些問題,比如負載均衡。一般來說,在生產環境中,各個微服務都會部署多個例項。那麼服務消費者要如何將請求分攤到多個服務提供者例項上呢?

Ribbon簡介

Ribbon是 Netflix釋出的負載均衡器,它有助於控制HTTP 和TCP客戶端的行為。為Ribbon配置服務提供者地址列表後,Ribbon 就可基於某種負載均衡演算法,自動地幫助服務消費者去請求。Ribbon預設為我們提供了很多的負載均衡演算法,例如輪詢、隨機等。當然,我們也可為Ribbon實現自定義的負載均衡演算法。

微服務消費者整合Ribbon使用Java程式碼自定義Ribbo使用屬性自定義Ribbon配置脫離Eureka使用Ribbon6、使用Feign實現宣告式REAT呼叫Feign簡介

Feign是Netflix開發的宣告式、模板化的HTTP客戶端,其靈感來自Retrofit、JAXRS-2.0以及 WebSocket。Feign可幫助我們更加便捷、優雅地呼叫HTTPAPI。

在 Spring Cloud中,使用Feign非常簡單——建立一個介面,並在介面上新增一些註解,程式碼就完成了。Feign支援多種註解,例如 Feign自帶的註解或者JAX-RS註解等。Spring Cloud對Feign進行了增強,使 Feign支援了Spring MVC註解,並整合了Ribbon和Eureka,從而讓Feign的使用更加方便。

微服務下方在整合Feign手動建立FeignFeign對繼承的支援Feign對壓縮的支援Feign的日誌使用Feign構造多引數請求7、使用Hystrix實現微服務的容錯處理

至此,已用Eureka實現了微服務的註冊與發現,Ribbon實現了客戶端側的負載均衡,Feign實現了宣告式的API呼叫

實現容錯的手段使用Hystrix實現容錯Hystrix的監控使用Hystrix Dashboard視覺化監控資料使用Turbine聚合監控資料8、使用Zuul構建微服務閘道器為什麼要使用微服務閘道器

經過前文的講解。微服務架構已經初具雛形,但還有一些問題-—不同的微服務一般會有不同的網路地址,而外部客戶端(例如手機APP)可能需要呼叫多個服務的接口才能完成一個業務需求。例如一個電影購票的手機APP,可能會呼叫多個微服務的介面,才能完成一次購票的業務流程。如下圖所示:

為什麼要使用微服務閘道器Zuul簡介編寫Zuul微服務閘道器Zuul的路由端點路由配置詳解Zuul的安全與Header使用Zuul上傳檔案Zuul的過濾器Zuul的容錯與回退Zuul的高可用使用Sidecar整合非JVM微服務使用Zuul聚合微服務9、使用Spring Cloud Config統一管理微服務配置為什麼要統一管理微服務配置

對於傳統的單體應用,常使用配置檔案管理所有配置。例如一個Spring Boot開發的單體應用,可將配置內容放在application.yml 檔案中。如果需要切換環境,可設定多個Profile,並在啟動應用時指定 spring.profiles.active=fprofile}。在本書4.6節中使用的也是這種方式。當然也可藉助Maven的 Profile實現環境切換。

然而,在微服務架構中,微服務的配置管理一般有以下需求:

集中管理配置。一個使用微服務架構的應用系統可能會包含成百上千個微服務,因此集中管理配置是非常有必要的。不同環境不同配置。例如,資料來源配置在不同的環境(開發、測試、預釋出、生產等〉中是不同的。執行期間可動態調整。例如,可根據各個徼服務的負載情況,動態調整資料來源連線池大小或熔斷閾值,並且在調整配置時不停止微服務。spring cloud Config簡介編寫Config Serber編寫Config ClientConfig Server的Git倉庫配置詳解Config Server的健康狀況指示器配置內容的加解密使用/refresh端點手動重新整理配置使用Spring Cloud Bus自動重新整理配置Spring Cloud Config與Eureka配合使用Spring Cloud Config的使用者認證Config Server的高可用10、使用Spring Cloud Sleuth實現微服務跟蹤

前文已經講過幾種監控微服務的方式了,例如使用Spring Boot Actuator監控微服務例項,使用Hystrix Command等

為什麼要實現微服務跟蹤Spring Cloud Sleuth簡介整合Spring Cloud SleuthSpring Cloud Sleuth 與 ELK配合使用Spring Cloud Sleuth 與 Zipkin配合使用11、Spring Cloud常見問題與總結

在使用Spring Cloud的過程中,可能會遇到一些問題。事實上,不少問題已在前面的章節中以WARNING的形式標出。

本章來對Spring Cloud 的常見問題做一些總結。

Eureka常見問題Hystrix / Feugn整合 Hystrix 後首次請求失敗Turbine聚合的資料不完整Spring Cloud 各元件配置屬性Spring Cloud定位問題思路總結12、Docker入門Docker簡介

Docker是一個開源的容器引擎,它有助於更快地交付應用。Docker可將應用程式和基礎設施層隔離,並且能將基礎設施當作程式一樣進行管理。使用Docker,可更快地打包、測試以及部署應用程式,並可以縮短從編寫到部署執行程式碼的週期。

Docker的架構安裝Docker配置映象加速器Docker常用命令13、將微服務運用在Docker上

本節將討論如何使用Dockerfile構建Docker映象。Dockerfile是一個文字檔案,其中包含了若干條指令,指令描述了構建映象的細節。

先來編寫-一個最簡單的Dockerfile。以前文下載的Nginx映象為例〔詳見12.5節),來編寫一個Dockerfile修改該映象的首頁。

使用Docker構建Docker映象使用Docker Registry管理Docker映象使用Maven外掛構建Docker映象常見問題與總結14、使用Docker Compose編排微服務

經過前文講解,可使用Dockerfile (或 Maven)構建映象,然後使用docker命令操作容器,例如docker run、docker kill等。然而,使用微服務架構的應用系統一般包含若干個徵服務。每個微服務一般都會部署多個例項。如果每個微服務都要手動啟停,那麼效率之低、維護量之大可想而知。

Docker Compose簡介安裝Docker ComposeDocker Compose快速入門docker-compose.yml常用命令docker-compose常用命令docker-compose網路配置總和實戰:使用Docker Compose 編排 Spring Cloud微服務

文章到這裡就結束了!

程式設計師這個職業需要我們不斷進步,需要我們不斷學習新的知識。

以上 Spring Cloud與Docker微服務架構實戰資料 小編已經整理成200多頁的文件,這邊還總結了一套Java核心技術面試真題,以及一些JVM虛擬機器、SSM、 Redis、等技術資料。資料獲取方式:關注小編+轉發文章+私信【微服務】獲取上述資料~ 重要的事情說三遍,轉發+轉發+轉發,一定要記得轉發哦!!!

11
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • centOS7安裝nginx及nginx配置