前言
參考資料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務(wù)原理與實(shí)戰(zhàn)》
《B站 尚硅谷 SpringCloud 框架開(kāi)發(fā)教程 周陽(yáng)》
本篇主要介紹一些通用概念概述、組件對(duì)比與系列筆記的目錄結(jié)構(gòu)說(shuō)明踪少;
1. 分布式相關(guān)理論
1.1 分布式計(jì)算系統(tǒng)的 CAP 理論
https://www.runoob.com/w3cnote/zookeeper-tutorial.html
1.2 BASE 理論
https://www.runoob.com/w3cnote/zookeeper-tutorial.html
2. 微服務(wù)架構(gòu)發(fā)展歷程
2.1 單體架構(gòu)
- 通常來(lái)說(shuō)抓韩,如果一個(gè) war 包或者 jar 包里包含一個(gè)應(yīng)用的所有功能,則稱為單體架構(gòu)唉铜;
- 優(yōu)點(diǎn):架構(gòu)簡(jiǎn)單摊聋、能快速開(kāi)發(fā)與上線锯梁;
- 缺點(diǎn):后端服務(wù)器負(fù)載越來(lái)越高戳稽、業(yè)務(wù)場(chǎng)景復(fù)雜;
2.2 集群與垂直化
- 當(dāng)業(yè)務(wù)量擴(kuò)大時(shí)痹仙,服務(wù)負(fù)載過(guò)高是尔,維護(hù)和部署成本增加,可以從兩個(gè)方面優(yōu)化:
- 橫向增加服務(wù)器开仰,把單臺(tái)機(jī)器變成多機(jī)集群拟枚;
- 按照業(yè)務(wù)的垂直領(lǐng)域進(jìn)行拆分,減少業(yè)務(wù)的耦合度众弓,以及降低單個(gè) war 包帶來(lái)的伸縮性困難問(wèn)題恩溅;
2.3 SOA(面向服務(wù)架構(gòu))
- SOA 核心目標(biāo)是把一些通用的、會(huì)被多個(gè)上層服務(wù)調(diào)用的共享業(yè)務(wù)提取成獨(dú)立的基礎(chǔ)服務(wù)谓娃,這些被提取出來(lái)的共享服務(wù)相對(duì)來(lái)說(shuō)比較獨(dú)立脚乡,并且可以重用;
- SOA 架構(gòu)主要解決了兩個(gè)問(wèn)題:信息孤島滨达、共享業(yè)務(wù)的重用奶稠;
2.4 微服務(wù)架構(gòu)
- 面向服務(wù)(SOA)和微服務(wù)本質(zhì)上都是服務(wù)化思想的一種體現(xiàn);
- 如果 SOA 是面向服務(wù)開(kāi)發(fā)思想的雛形捡遍,那么微服務(wù)就是針對(duì)可重用業(yè)務(wù)服務(wù)的更進(jìn)一步優(yōu)化锌订;
- 可以把 SOA 看成微服務(wù)的超集,也就是多個(gè)微服務(wù)可以組成一個(gè)SOA服務(wù)画株;
- 實(shí)施微服務(wù)的前提是軟件交付鏈路及基礎(chǔ)設(shè)施的成熟化辆飘;
-
因此微服務(wù)本質(zhì)上是服務(wù)化思想的最佳實(shí)踐方向;
2.4.1 SOA 與微服務(wù)架構(gòu)的關(guān)注點(diǎn)
- SOA:服務(wù)的重用性及解決信息孤島問(wèn)題谓传;
- 微服務(wù)架構(gòu):解耦蜈项,降低業(yè)務(wù)之間的耦合度。微服務(wù)會(huì)更多地關(guān)注在 DevOps 的持續(xù)交付上续挟,微服務(wù)與容器化技術(shù)的結(jié)合更加緊密紧卒;
3. 云計(jì)算概述
3.1 云計(jì)算的幾種模式
三種核心基本模式:
- 基礎(chǔ)設(shè)施即服務(wù)(Infrastructure as a Service, IaaS);
- 平臺(tái)即服務(wù)(Platform as a Service, PaaS)庸推;
- 軟件即服務(wù)(Software as a Service, SaaS)常侦;
- Spring Cloud 討論的是基于 IaaS 的微服務(wù);
兩種新興模式:
- 函數(shù)即服務(wù)(Functions as a Service, FaaS)贬媒;
- 容器即服務(wù)(Container as a Service, CaaS)
4. 微服務(wù)架構(gòu)概述
4.1 一個(gè)簡(jiǎn)單的微服務(wù)架構(gòu)圖
4.2 微服務(wù)架構(gòu)的五大特性
- 位置透明聋亡;
- 大小適當(dāng);
- 可伸縮际乘;
- 可重復(fù)坡倔;
- 有彈性;
4.3 微服務(wù)架構(gòu)討論了什么
- 服務(wù)粒度;
- 通信協(xié)議罪塔;
- 接口設(shè)計(jì)投蝉;
- 配置管理;
- 事件處理征堪;
4.4 按模式分的微服務(wù)組件
4.5 微服務(wù)架構(gòu)的優(yōu)點(diǎn)與挑戰(zhàn)
微服務(wù)架構(gòu)的優(yōu)點(diǎn)讓我們選擇微服務(wù)作為企業(yè)級(jí)架構(gòu)方案瘩缆,微服務(wù)的技術(shù)挑戰(zhàn)則要通過(guò)學(xué)習(xí)、設(shè)計(jì)甚至開(kāi)發(fā)一些組件去解決佃蚜;
-
架構(gòu)優(yōu)點(diǎn):
- 復(fù)雜度可控庸娱;
- 技術(shù)選型更靈活;
- 獨(dú)立部署谐算;
- 容錯(cuò)性熟尉;
-
架構(gòu)挑戰(zhàn):
- 故障排查;
- 分布式架構(gòu)的復(fù)雜性洲脂;
- 服務(wù)依賴斤儿;
- 運(yùn)維成本;
-
技術(shù)挑戰(zhàn):
- 分布式配置中心恐锦;
- 服務(wù)路由往果;
- 負(fù)載均衡;
- 熔斷限流一铅;
- 鏈路監(jiān)控棚放;
4.6 本系列筆記將討論什么
本系列筆記將在介紹微服務(wù)架構(gòu)需要什么功能同時(shí)給出市面上常見(jiàn)的幾種解決方案,他們通常被稱為組件馅闽;
五大核心功能及其組件:
- 配置中心;
- 注冊(cè)中心馍迄;
- 服務(wù)調(diào)用福也;
- 服務(wù)容災(zāi)與降級(jí);
- 網(wǎng)關(guān)路由攀圈;
其他特色擴(kuò)展功能及其組件:
- 安全保護(hù)暴凑;
- 事件驅(qū)動(dòng);
- 服務(wù)總線赘来;
- 分布式追蹤现喳;
- 分布式事務(wù);
- RPC 通信犬辰;
- 等...
5. 主流 Spring Cloud 組件
- Spring Cloud 不是一個(gè)框架嗦篱,而是一套規(guī)范。其對(duì) Spring Boot 在次封裝后屏蔽復(fù)雜的配置幌缝,給開(kāi)發(fā)者提供了良好的開(kāi)箱即用的微服務(wù)規(guī)范灸促;
- Spring Cloud Netflix、Spring Cloud Condul、Spring Cloud Alibaba 才是 Spring Cloud 規(guī)范的實(shí)現(xiàn)浴栽;
- 目前主流的 Spring Cloud 治理方案主要由 Spring Cloud Netflix 和 Spring Cloud Alibaba 提供荒叼;
- 相比 Spring Cloud Netflix,Spring Cloud Alibaba 在服務(wù)治理方面更適用于國(guó)內(nèi)技術(shù)場(chǎng)景典鸡;
5.1 組件對(duì)比圖
大致為 Netflix 版與 Alibaba 版的對(duì)比被廓;
5.2 Spring Cloud五大組件:
- 注冊(cè)中心 Netflix Eureka;
- 客服端負(fù)載均衡 Netflix Ribbon萝玷;
- 斷路器 Netflix Hystrix嫁乘;
- 服務(wù)網(wǎng)關(guān) Netflix Zuul;
- 布式配置 Config间护;
5.3 Spring Cloud Alibaba 技術(shù)架構(gòu)圖
5.4 各廠商 Spring Cloud 技術(shù)架構(gòu)圖
6. 一些資源鏈接
- Spring Cloud 官網(wǎng):https://spring.io/projects/spring-cloud亦渗;
- 《微服務(wù)架構(gòu)設(shè)計(jì)模式》系列學(xué)習(xí)筆記:https://blog.csdn.net/dlhjw1412/article/details/119428533;
- Spring Boot 系列學(xué)習(xí)筆記:https://blog.csdn.net/dlhjw1412/article/details/118882230汁尺;
- Spring 系列學(xué)習(xí)筆記:https://blog.csdn.net/dlhjw1412/article/details/117886685法精;
7. 本系列筆記的編寫思想
7.1 目錄結(jié)構(gòu)
- 主要分有一級(jí)標(biāo)題和二級(jí)標(biāo)題,一二級(jí)標(biāo)題都是一篇文章痴突;
- 為方便說(shuō)明搂蜓,下面用 XXX 代表:配置中心、注冊(cè)中心辽装、服務(wù)調(diào)用等功能帮碰;
- 用 YYY 代表:Eureka、Spring Cloud Config拾积、Zuul 等細(xì)分組件殉挽;
- 其中一級(jí)標(biāo)題表示概述,目錄結(jié)構(gòu)如下:
- XXX 基礎(chǔ)知識(shí):對(duì)微服務(wù)(注冊(cè)中心拓巧、配置斯碌、網(wǎng)關(guān)等)做系統(tǒng)的概述;
- YYY 組件分析:里面有個(gè)鏈接肛度,可以跳轉(zhuǎn)至對(duì)應(yīng)細(xì)分文章傻唾;
- 二級(jí)標(biāo)題為組件實(shí)戰(zhàn),目錄結(jié)構(gòu)如下:
- YYY 基礎(chǔ)知識(shí):介紹一些 YYY 組件的理論知識(shí)與面試考點(diǎn)承耿;
- 使用 YYY 組件構(gòu)建服務(wù):實(shí)戰(zhàn)部分冠骄;
- 其中 YYY 組件實(shí)戰(zhàn)部分又可大致總結(jié)為:
- 引入 pom.xml 依賴文件;
- 修改 .yml 配置文件加袋;
- 在主程序類上添加注解凛辣;
- 編寫業(yè)務(wù)類(Config、Service锁荔、Controller 等)蟀给;