Spring Cloud微服務云應用教程

  本套課程是基于spring cloud最Finchely版微服務基礎框架整合教程,主要以架構思想為核心,兼顧詳細代碼演示。

  本使用Spring Cloud能夠讓我們的應用分布式部署,過去傳統上,我們的應用總是將前端和后端打包成一個war包部署到Tomcat等服務器上,這種情況下,服務器這個概念成了我們應用的一個邊界容器,每臺服務器一般部署一個應用系統,這是一種傳統的SOA架構,在這種情況下,WAR包、Tomcat服務器成了我們的服務的容器,而我們在編程時主要是面向一個個服務進行設計編碼,怎么到了運行階段反而多出了服務器概念?如何破?有了服務器概念,我們的服務的地位就下降了,而在微服務架構中,微服務才是第一等公民,服務器等概念應該隱藏在服務后面。

  下面一個問題是如何破解一個WAR包?WAR包中一般有SpringMVC前端和我們服務后端代碼,這兩端代碼是直接通過服務接口調用的:

前端SpringMVC + 后端服務 = war包

  很顯然,這是違背以服務為第一等公民和核心的宗旨的,前端耦合到后端服務,后端服務可能為前端定制一套代碼,再通過暴露REST/web服務暴露另外一種接口服務給其他系統調用,我們把前端調用和其他系統調用分開處理,有了兩套服務代碼,無疑這加重了后端開發負擔,那么只有將前端從后端分離出去,后端獨立以后才能使用一套服務代碼為不同的客戶端服務。

前端(SpringMVC、ReactJS/VueJS或其他系統) ---->后端服務 = 分離部署

  通過這種分離,我們的微服務才能被打包進Docker容器,被K8s這樣的容器管理平臺調度,哪里不夠打哪里,哪里不夠用直接調用擴展容器數量即可,做到性能調整精確制導,當我們的后端微服務加上Docker+K8s的底座以后,真正的云平臺就誕生了。

  SpringBoot框架配合SpringCloud幫助我們實現了這樣目標,SpringBoot主要是實現了前后端分離,而SpringCloud則為后端服務建立了一套分布式系統架構,兩者結合一起,使得開發人員不但開發業務,而且也介入云的基礎底層設施,干涉到了業務系統運營管理,這就是DevOps的來歷,Dev是業務開發,而Ops是運營,云應用包括這兩部分概念,過去我們以服務器為第一公民的SOA架構中,服務器以下的基本屬于運營部門管理,而業務人員只管開發即可,現在這種分離思維被打破了,這也是云計算平臺化PaaS普及以后給我們帶來的改變。

  當我們使用SpringBoot和Rest+JSON方式分離了前后端,那么后端可以組成一種服務網格式,前后端之間可以引入API網關等代理機制,通過代理這種門戶模式屏蔽了后端服務對前端的暴露,同時也能對前后端路由以及運營情況進行監控。

Spring Cloud結構

  Spring Cloud是主要涉及分布式系統的開發,分布式系統主要有哪些概念呢?負載均衡、服務注冊是必不可少的。

  負載均衡這個我們應該熟悉,在服務器為王時代也是需要負載均衡的,幾臺機器可以平均處理大量請求。

  服務注冊則是延續SOA概念,因為在SOA過去是使用RPC方式進行服務調用,服務之間接口耦合,也就是調用者需要被調用者的代碼,現在都采取 REST/JSON以后,因為JSON是一種字符串,調用雙方就完全解耦了,因為對象的傳輸需要序列化和反序列化,這些當然不需要我們編碼完成,因此雙方實際是一種值數據額耦合,雖然降低一些性能,但是松耦合更高。

  因此,整個后端微服務架構其實分四個部分:

1. API網關,用于前后端交互,如果沒有前端就無法調用后端

2. 服務注冊與發現,如果沒有服務之間就無法調用。

3. 服務之間在分布式環境中找到對方以后,如果對方很忙怎么辦?負載均衡策略需要引入,同時需要運營監控。

根據這三個主要部分,我們看看下面Spring Cloud微服務圖:

  我們發現Spring Cloud中主要有四個部分(中文紅字),其中微服務容器里面提供了負載均衡Ribbon、REST客戶端Feign和斷路器Hystrix三個部分,也就是說,在我們每次編寫微服務業務代碼時,這三個基礎設施的配置我們也需要完成的,表面上好像帶來工作量,實際上這就是DevOps精華,能讓我們細粒度控制我們業務的運行行為,當然也可以統一配置和修改,這就少不了配置服務器。

   通過以上簡單介紹,我們已經大概了解我們需要學習和掌握的基本單元:

?1. 微服務容器: 業務服務、負載均衡Ribbon、REST客戶端Feign和斷路器Hystrix
?2. 服務注冊發現:Eureka
?3. 運營監控:能夠對流量和斷路器運營進行可視化監控
?4. API網關:單一入口點來管理所有API調用,通過規則將請求路由到微服務,Zuul/Spring Cloud Gateway
?5. 配置服務: 相當于源碼編程階段的網關,統一配置運行時的各種參數

引用網上的一幅圖,可以完整了解一下這些部件如何運作:

很顯然,SpringCloud的核心是服務注冊發現和調用,把這個核心學會了,基本掌握其原理,這也是業務程序員每天編碼需要經常碰到的問題,讓我們從這個核心開始學習:SpringCloud中有三個獨立服務器性質的服務,分別是:注冊服務器、API網關服務器和配置服務器,其他都是業務服務。這是切入Springcloud的基本概念區分。

再引用網絡上一張SpringCloud圖:

第一篇: SpringCloud服務發現注冊Eureka +Ribbon + Feign教程

第二篇:使用Netflix Hystrix的Spring Cloud斷路器

第三篇:使用Jenkins、Artifactory和Spring Cloud Contract持續集成測試REST/JSON

第四篇:Spring Cloud Zuul作為API網關實現請求路由轉發教程

第五篇:使用Spring Cloud Zuul實現過濾器或攔截器功能案例

第六篇:使用Spring Cloud Config基于本地文件實現微服務配置管理

第七篇:Spring Cloud Config使用Oracle數據庫作為后端配置存儲

第八篇:Spring Cloud Config Server和Spring Cloud Bus以及Kafka和數據庫動態刷新配置

以上教程源碼github

 

服務注冊與發現

Eureka心跳健康檢查機制

Eurake的自我保護機制

服務通訊

Spring Boot, Spring Cloud Stream 和 Kafka案例教程

使用Spring Cloud Ribbon重試請求

使用Spring Cloud Sleuth跟蹤微服務

綜合實戰

Spring Cloud微服務abixen實戰案例簡介

SpringBoot過濾器

Spring Cloud Stream實戰

相關文章

SpringCloud微服務架構介紹

使用Spring Cloud和Reactor在微服務中實現Event Sourcing

Netflix架構

使用Activiti和Spring集成完成BPEL和BPM

Istio是一個服務網格

其他專題

#SpringCloud #Spring Boot #Spring Batch

#分布式計算 #云計算 #服務網格??#微服務?

 

一级黄色录像影片 夫妻性生活影片 免费在线观看 一级a做爰片