19 張圖概覽 Spring Cloud
作者:三分惡
鏈接:cnblogs.com/three-fighter/p/13485459.html
本文用 19 張思維導(dǎo)圖描述微服務(wù)相關(guān)的概念和架構(gòu),建議收藏。包括什么是微服務(wù)、架構(gòu)演進(jìn)、微服務(wù)架構(gòu)、微服務(wù)解決方案、SpringCloud概覽、Eureka、Ribbon、Feign、Hystrix、Zuul、Gateway、Config、Bus、OAuth2、Sleuth、什么是SpringCloud、SpringCloud主要組件。
1、什么是微服務(wù)
1.1、架構(gòu)演進(jìn)
架構(gòu)的發(fā)展歷程是從單體式架構(gòu),到分布式架構(gòu),到SOA架構(gòu),再到微服務(wù)架構(gòu)。
圖1:架構(gòu)演進(jìn)

單體架構(gòu):未做任何拆分的Java Web程序
圖2:?jiǎn)误w架構(gòu)示意圖

分布式架構(gòu):按照業(yè)務(wù)垂直劃分,每個(gè)業(yè)務(wù)都是單體架構(gòu),通過API互相調(diào)用。
圖3:分布式架構(gòu)示意圖

SOA架構(gòu):SOA是一種面向服務(wù)的架構(gòu)。其應(yīng)用程序的不同組件通過網(wǎng)絡(luò)上的通信協(xié)議向其它組件提供服務(wù)或消費(fèi)服務(wù),所以也是分布式架構(gòu)的一種。
圖4:SOA架構(gòu)示意圖

1.2、微服務(wù)架構(gòu)
微服務(wù)架構(gòu)在某種程度上是SOA架構(gòu)的進(jìn)一步的發(fā)展。
微服務(wù)目前并沒有比較官方的定義。微服務(wù) Microservices 之父,馬丁.福勒,對(duì)微服務(wù)大概的概述如下:
就目前而言,對(duì)于微服務(wù)業(yè)界并沒有一個(gè)統(tǒng)一的、標(biāo)準(zhǔn)的定義(While there is no precise definition of this architectural style ) 。
但通常在其而言,微服務(wù)架構(gòu)是一種架構(gòu)模式或者說是一種架構(gòu)風(fēng)格,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),每個(gè)服務(wù)運(yùn)行獨(dú)立的自己的進(jìn)程中,服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價(jià)值。
服務(wù)之間采用輕量級(jí)的通信機(jī)制互相溝通(通常是基于 HTTP 的 RESTful API ) 。每個(gè)服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠被獨(dú)立地部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。
另外,應(yīng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機(jī)制,對(duì)具體的一個(gè)服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語言、工具對(duì)其進(jìn)行構(gòu)建,可以有一個(gè)非常輕量級(jí)的集中式管理來協(xié)調(diào)這些服務(wù)??梢允褂貌煌恼Z言來編寫服務(wù),也可以使用不同的數(shù)據(jù)存儲(chǔ)。
可以關(guān)注微信公眾號(hào)「Java后端」回復(fù)「666」下載一本包含微服務(wù)技術(shù)的技術(shù)棧手冊(cè)。
圖5:微服務(wù)定義思維導(dǎo)圖

圖6:微服務(wù)架構(gòu)示意圖

1.3、微服務(wù)解決方案
目前最流行的兩種微服務(wù)解決方案是Spring Cloud和Dubbo。
2、SpringCloud概覽
2.0、什么是SpringCloud
Spring Cloud 作為 Java 言的微服務(wù)框架,它依賴于 Spring Boot ,有快速開發(fā)、持續(xù)交付和容易部署等特點(diǎn)。Spring Cloud 的組件非常多,涉及微服務(wù)的方方面面,井在開源社區(qū) Spring、Netflix Pivotal 兩大公司的推動(dòng)下越來越完善。
Spring Cloud是一系列組件的有機(jī)集合。
圖7:SpringCloud技術(shù)體系

圖8:SpringCloud技術(shù)體系思維導(dǎo)圖

2.1、SpringCloud主要組件
2.1.1、Eureka
Netflix Eureka 是由 Netflix 開源的一款基于 REST 的服務(wù)發(fā)現(xiàn)組件,包括 Eureka Server 及 Eureka Client。

2.1.2、Ribbon
Ribbon Netflix 公司開源的一個(gè)負(fù)載均衡的組件。

2.1.3、Feign
Feign是是一個(gè)聲明式的Web Service客戶端。

2.1.4、Hystrix
Hystrix是Netstflix 公司開源的一個(gè)項(xiàng)目,它提供了熔斷器功能,能夠阻止分布式系統(tǒng)中出現(xiàn)聯(lián)動(dòng)故障。

2.1.5、Zuul
Zuul 是由 Netflix 孵化的一個(gè)致力于“網(wǎng)關(guān) “解決方案的開源組件。

2.1.6、Gateway
Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0、 Spring Boot 2.0 和 Project Reactor 等技術(shù)開發(fā)的網(wǎng)關(guān), Spring Cloud Gateway 旨在為微服務(wù)架構(gòu)提供簡(jiǎn)單、 有效且統(tǒng)一的 API 路由管理方式。

2.1.7、Config
Spring Cloud 中提供了分布式配置中 Spring Cloud Config ,為外部配置提供了客戶端和服務(wù)器端的支持。

2.1.8、 Bus
使用 Spring Cloud Bus, 可以非常容易地搭建起消息總線。

2.1.9、OAuth2
Sprin Cloud 構(gòu)建的微服務(wù)系統(tǒng)中可以使用 Spring Cloud OAuth2 來保護(hù)微服務(wù)系統(tǒng)。

2.1.10、Sleuth
Spring Cloud Sleuth是Spring Cloud 個(gè)組件,它的主要功能是在分布式系統(tǒng)中提供服務(wù)鏈路追蹤的解決方案。

本文中對(duì)架構(gòu)的演進(jìn)及Spring Cloud 構(gòu)建微服務(wù)的基本組件進(jìn)行了概覽。

參考:
【1】:朱榮鑫、張?zhí)?、黃迪璇編著《Spring Cloud微服務(wù)架構(gòu)進(jìn)階》
【2】:翟永超著 《Spring Cloud 微服務(wù)實(shí)戰(zhàn)》
【3】:許進(jìn)等著《重新定義SpringCloud實(shí)戰(zhàn)》
【4】: 方志朋著 《深入理解SpringCloud微服務(wù)構(gòu)建》
【5】:SOA架構(gòu)設(shè)計(jì)分析
【6】:【12張手繪圖】我搞懂了微服務(wù)架構(gòu)!
【7】:微服務(wù)架構(gòu)深度解析與最佳實(shí)踐
獲取更多優(yōu)質(zhì)文章,點(diǎn)擊關(guān)注
??????

