Lison
<dreamlison@163.com>
, v1.0.0
, 2023.05.07
Spring Cloud Alibaba-01-微服務(wù)介紹
微服務(wù)簡(jiǎn)介
架構(gòu)的演變
隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模也不斷的擴(kuò)大,進(jìn)而導(dǎo)致系統(tǒng)架構(gòu)也在不斷的進(jìn)行變化,從互聯(lián)網(wǎng)早起到現(xiàn)在,系統(tǒng)架構(gòu)大體經(jīng)歷了下面幾個(gè)過(guò)程:
單體應(yīng)用架構(gòu):
把所有功能都集中在一個(gè)應(yīng)用中,統(tǒng)一部署,開(kāi)發(fā)成本、部署成本和維護(hù)成本低,我們會(huì)把它們做成一個(gè)web項(xiàng)目,然后部署到一臺(tái)tomcat服務(wù)器上。
- 優(yōu)點(diǎn):項(xiàng)目架構(gòu)簡(jiǎn)單,適合用戶量少的項(xiàng)目,開(kāi)發(fā)成本低,項(xiàng)目部署在一個(gè)節(jié)點(diǎn)上,維護(hù)方便。
- 缺點(diǎn):功能集中在一個(gè)工程中,對(duì)于大型項(xiàng)目比一開(kāi)發(fā)和維護(hù),項(xiàng)目模塊緊耦合,單點(diǎn)容錯(cuò)率低,無(wú)法對(duì)不同的模塊功能進(jìn)行針對(duì)性的優(yōu)化和水平拓展
垂直應(yīng)用架構(gòu):
所謂垂直應(yīng)用架構(gòu),其實(shí)就是把之前的單體應(yīng)用拆分成多個(gè)應(yīng)用,以提升效率,比如電商系統(tǒng)可以拆分成:電商系統(tǒng)、后臺(tái)系統(tǒng)、CMS系統(tǒng)
- 優(yōu)點(diǎn):項(xiàng)目拆分實(shí)現(xiàn)了流量分擔(dān),解決了并發(fā)問(wèn)題,而且可以針對(duì)不同模塊進(jìn)行優(yōu)化和水平拓展,同時(shí)不同的系統(tǒng)之間不會(huì)互相影響,提高容錯(cuò)率
- 缺點(diǎn):系統(tǒng)之間互相存在,無(wú)法進(jìn)行相互調(diào)用,系統(tǒng)之間互相獨(dú)立,會(huì)造成一部分功能的冗余
分布式架構(gòu)
隨著業(yè)務(wù)的增加,在垂直應(yīng)用架構(gòu)中冗余的業(yè)務(wù)代碼越來(lái)越多,就需要將冗余的部分抽取出來(lái),統(tǒng)一做成業(yè)務(wù)層單獨(dú)處理,變成一個(gè)單獨(dú)的服務(wù),控制層調(diào)用不同的業(yè)務(wù)層服務(wù)就能完成不同的業(yè)務(wù)功能,具體表現(xiàn)就是一個(gè)項(xiàng)目拆分成表現(xiàn)層和服務(wù)層兩個(gè)部分,服務(wù)層中包含業(yè)務(wù)邏輯,表現(xiàn)層只需要處理和頁(yè)面的交互,業(yè)務(wù)邏輯都是調(diào)用服務(wù)層的服務(wù)來(lái)實(shí)現(xiàn),這就是分布式架構(gòu)。
- 優(yōu)點(diǎn):抽取公共的功能作為服務(wù)層,提高代碼復(fù)用行
- 缺點(diǎn):系統(tǒng)間耦合度變高,調(diào)用關(guān)系錯(cuò)綜復(fù)雜,難以維護(hù)。
SOA架構(gòu)
分布式架構(gòu)中的缺點(diǎn)就是調(diào)用復(fù)雜,而且當(dāng)服務(wù)越來(lái)越多,或者當(dāng)某一個(gè)服務(wù)壓力過(guò)大需要水平拓展和負(fù)載均衡,對(duì)于資源調(diào)度和治理就需要用到治理中心SOA(Service Oriented Architecture)為核心來(lái)解決,同時(shí)治理中心還可以幫助我們解決服務(wù)之間協(xié)議不同的問(wèn)題。
- 優(yōu)點(diǎn):使用治理中心(ESB\dubbo)解決了服務(wù)見(jiàn)調(diào)用關(guān)系的自動(dòng)調(diào)節(jié)
- 缺點(diǎn):服務(wù)間會(huì)有依賴關(guān)系,一旦某個(gè)環(huán)節(jié)出錯(cuò)會(huì)影響較大(服務(wù)雪崩),服務(wù)關(guān)系復(fù)雜,運(yùn)維、測(cè)試部署困難
微服務(wù)架構(gòu)
微服務(wù)架構(gòu)在某種程度上面架構(gòu)SOA繼續(xù)發(fā)展的下一步,它更加強(qiáng)調(diào)服務(wù)的“徹底拆分”,目的就是提高效率,微服務(wù)架構(gòu)中,每個(gè)服務(wù)必須獨(dú)立部署同時(shí)互不影響,微服務(wù)架構(gòu)更加輕巧,輕量級(jí)。
- 優(yōu)點(diǎn):服務(wù)原子化拆分,獨(dú)立打包、部署和升級(jí),保證每個(gè)微服務(wù)清晰的任務(wù)劃分,利于擴(kuò)展
- 缺點(diǎn):分布式系統(tǒng)開(kāi)發(fā)的技術(shù)成本高(容錯(cuò)、分布式事務(wù)等),復(fù)雜性更高,每個(gè)微服務(wù)進(jìn)行分布式獨(dú)立部署,當(dāng)進(jìn)行模塊調(diào)用的時(shí)候,分布式將會(huì)變得更加麻煩
微服務(wù)架構(gòu)與SOA架構(gòu)的不同
- 微服務(wù)架構(gòu)比SOA架構(gòu)會(huì)更加的精細(xì),讓專業(yè)的人去做專業(yè)的。
- 目的是提高效率每個(gè)服務(wù)之間互不影響,微服務(wù)架構(gòu)中,每個(gè)服務(wù)需要獨(dú)立部署
- SOA架構(gòu)中可能數(shù)據(jù)庫(kù)存儲(chǔ)會(huì)發(fā)生共享,微服務(wù)強(qiáng)調(diào)每個(gè)服務(wù)都是單獨(dú)數(shù)據(jù)庫(kù),保證每個(gè)服務(wù)之間互不影響。
- 微服務(wù)項(xiàng)目架構(gòu)比SOA架構(gòu)更加適合與互聯(lián)網(wǎng)公司迅捷開(kāi)發(fā)、快速迭代版本,因?yàn)榱6确浅>?xì)。
微服務(wù)架構(gòu)的常見(jiàn)問(wèn)題
一旦采用微服務(wù)系統(tǒng)架構(gòu),就勢(shì)必會(huì)遇到這樣幾個(gè)問(wèn)題:
這么多小服務(wù),如何管理他們?(服務(wù)治理 注冊(cè)中心[服務(wù)注冊(cè) 發(fā)現(xiàn) 剔除])
這么多小服務(wù),他們之間如何通訊?(restful rpc)
這么多小服務(wù),客戶端怎么訪問(wèn)他們?(網(wǎng)關(guān))
這么多小服務(wù),一旦出現(xiàn)問(wèn)題了,應(yīng)該如何自處理?(容錯(cuò))
這么多小服務(wù),一旦出現(xiàn)問(wèn)題了,應(yīng)該如何排錯(cuò)? (鏈路追蹤)
對(duì)于上面的問(wèn)題,是任何一個(gè)微服務(wù)設(shè)計(jì)者都不能繞過(guò)去的,因此大部分的微服務(wù)產(chǎn)品都針對(duì)每一個(gè)問(wèn)題提供了相應(yīng)的組件來(lái)解決它們。
微服務(wù)架構(gòu)的常見(jiàn)概念
服務(wù)治理
服務(wù)治理就是進(jìn)行服務(wù)的自動(dòng)化管理,其核心是服務(wù)的自動(dòng)注冊(cè)與發(fā)現(xiàn)。
服務(wù)注冊(cè):服務(wù)實(shí)例將自身服務(wù)信息注冊(cè)到注冊(cè)中心。
服務(wù)發(fā)現(xiàn):服務(wù)實(shí)例通過(guò)注冊(cè)中心,獲取到注冊(cè)到其中的服務(wù)實(shí)例的信息,通過(guò)這些信息去請(qǐng)求它們提供的服務(wù)。
服務(wù)剔除:服務(wù)注冊(cè)中心將出問(wèn)題的服務(wù)自動(dòng)剔除到可用列表之外,使其不會(huì)被調(diào)用到。
服務(wù)調(diào)用
在微服務(wù)架構(gòu)中,通常存在多個(gè)服務(wù)之間的遠(yuǎn)程調(diào)用的需求。目前主流的遠(yuǎn)程調(diào)用技術(shù)有基于
HTTP的RESTful接口以及基于TCP的RPC協(xié)議。
-
REST(Representational State Transfer)
這是一種HTTP調(diào)用的格式,更標(biāo)準(zhǔn),更通用,無(wú)論哪種語(yǔ)言都支持http協(xié)議 -
RPC(Remote Promote Call)
一種進(jìn)程間通信方式。允許像調(diào)用本地服務(wù)一樣調(diào)用遠(yuǎn)程服務(wù)。RPC框架的主要目標(biāo)就是讓遠(yuǎn)程服 務(wù)調(diào)用更簡(jiǎn)單、透明。RPC框架負(fù)責(zé)屏蔽底層的傳輸方式、序列化方式和通信細(xì)節(jié)。開(kāi)發(fā)人員在使 用的時(shí)候只需要了解誰(shuí)在什么位置提供了什么樣的遠(yuǎn)程服務(wù)接口即可,并不需要關(guān)心底層通信細(xì)節(jié)和調(diào)用過(guò)程。
區(qū)別與聯(lián)系
比較項(xiàng) | RESTful | RPC |
---|---|---|
通訊協(xié)議 | HTTP | 一般使用TCP |
性能 | 略低 | 較高 |
靈活度 | 高 | 低 |
應(yīng)用 | 微服務(wù)架構(gòu) | SOA架構(gòu) |
服務(wù)網(wǎng)關(guān)
隨著微服務(wù)的不斷增多,不同的微服務(wù)一般會(huì)有不同的網(wǎng)絡(luò)地址,而外部客戶端可能需要調(diào)用多個(gè)服務(wù)的接口才能完成一個(gè)業(yè)務(wù)需求,如果讓客戶端直接與各個(gè)微服務(wù)通信可能出現(xiàn):
- 客戶端需要調(diào)用不同的url地址,增加難度
- 在一定的場(chǎng)景下,存在跨域請(qǐng)求的問(wèn)題
- 每個(gè)微服務(wù)都需要進(jìn)行單獨(dú)的身份認(rèn)證針
對(duì)這些問(wèn)題,API網(wǎng)關(guān)順勢(shì)而生。
API網(wǎng)關(guān)直面意思是將所有API調(diào)用統(tǒng)一接入到API網(wǎng)關(guān)層,由網(wǎng)關(guān)層統(tǒng)一接入和輸出。一個(gè)網(wǎng)關(guān)的 基本功能有:統(tǒng)一接入、安全防護(hù)、協(xié)議適配、流量管控、長(zhǎng)短鏈接支持、容錯(cuò)能力。有了網(wǎng)關(guān)之后, 各個(gè)API服務(wù)提供團(tuán)隊(duì)可以專注于自己的的業(yè)務(wù)邏輯處理,而API網(wǎng)關(guān)更專注于安全、流量、路由等問(wèn) 題。
服務(wù)容錯(cuò)
在微服務(wù)當(dāng)中,一個(gè)請(qǐng)求經(jīng)常會(huì)涉及到調(diào)用幾個(gè)服務(wù),如果其中某個(gè)服務(wù)不可用,沒(méi)有做服務(wù)容錯(cuò)話,極有可能會(huì)造成一連串的服務(wù)不可用,這就是雪崩效應(yīng).
我們沒(méi)法預(yù)防雪崩效應(yīng)的發(fā)生,只能盡可能去做好容錯(cuò)。服務(wù)容錯(cuò)的三個(gè)核心思想是:
- 不被外界環(huán)境影響
- 不被上游請(qǐng)求壓垮
- 不被下游響應(yīng)拖垮
鏈路追蹤
隨著微服務(wù)架構(gòu)的流行,服務(wù)按照不同的維度進(jìn)行拆分,一次請(qǐng)求往往需要涉及到多個(gè)服務(wù)。互聯(lián)網(wǎng)應(yīng)用構(gòu)建在不同的軟件模塊集上,這些軟件模塊,有可能是由不同的團(tuán)隊(duì)開(kāi)發(fā)、可能使用不同的編程語(yǔ)言來(lái)實(shí)現(xiàn)、有可能布在了幾千臺(tái)服務(wù)器,橫跨多個(gè)不同的數(shù)據(jù)中心。因此,就需要對(duì)一次請(qǐng)求涉及的多個(gè)服務(wù)鏈路進(jìn)行日志記錄,性能監(jiān)控即鏈路追蹤
微服務(wù)架構(gòu)的常見(jiàn)解決方案
ServiceComb
官方網(wǎng)址:https://servicecomb.apache.org/cn/
Apache ServiceComb,前身是華為云的微服務(wù)引擎 CSE (Cloud Service Engine) 云服務(wù),是全球首個(gè)Apache 微服務(wù)頂級(jí)項(xiàng)目。它提供了一站式的微服務(wù)開(kāi)源解決方案,致力于幫助企業(yè)、用戶和開(kāi)發(fā) 者將企業(yè)應(yīng)用輕松微服務(wù)化上云,并實(shí)現(xiàn)對(duì)微服務(wù)應(yīng)用的高效運(yùn)維管理。
SpringCloud
官方網(wǎng)址:https://spring.io/projects/spring-cloud/
Spring Cloud是一系列框架的集合。它利用Spring Boot的開(kāi)發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用 Spring Boot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
Spring Cloud并沒(méi)有重復(fù)制造輪子,它只是將目前各家公司開(kāi)發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來(lái),通過(guò)Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開(kāi)發(fā)者留出了一套簡(jiǎn)單易懂、易部署和易維護(hù)的分布式系統(tǒng)開(kāi)發(fā)工具包
SpringCloud Alibaba
官方網(wǎng)址: https://spring.io/projects/spring-cloud-alibaba
Spring Cloud Alibaba 致力于提供微服務(wù)開(kāi)發(fā)的一站式解決方案。此項(xiàng)目包含開(kāi)發(fā)分布式應(yīng)用微服務(wù)的必需組件,方便開(kāi)發(fā)者通過(guò) Spring Cloud 編程模型輕松使用這些組件來(lái)開(kāi)發(fā)分布式應(yīng)用服務(wù)。
Spring Cloud Alibaba 主要功能與組件
Spring Cloud Alibaba 致力于提供微服務(wù)開(kāi)發(fā)的一站式解決方案。此項(xiàng)目包含開(kāi)發(fā)分布式應(yīng)用微服務(wù)的必需組件,方便開(kāi)發(fā)者通過(guò) Spring Cloud 編程模型輕松使用這些組件來(lái)開(kāi)發(fā)分布式應(yīng)用服務(wù)。
依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以將 Spring Cloud 應(yīng)用接入阿里微服務(wù)解決方案,通過(guò)阿里中間件來(lái)迅速搭建分布式應(yīng)用系統(tǒng)。
主要功能
- 服務(wù)限流降級(jí) :默認(rèn)支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降級(jí)功能的接入,可以在運(yùn)行時(shí)通過(guò)控制臺(tái)實(shí)時(shí)修改限流降級(jí)規(guī)則,還支持查看限流降級(jí) Metrics 監(jiān)控。
- 服務(wù)注冊(cè)與發(fā)現(xiàn) :適配 Spring Cloud 服務(wù)注冊(cè)與發(fā)現(xiàn)標(biāo)準(zhǔn),默認(rèn)集成了 Ribbon 的支持。
- 分布式配置管理 :支持分布式系統(tǒng)中的外部化配置,配置更改時(shí)自動(dòng)刷新。
- 消息驅(qū)動(dòng)能力 :基于 Spring Cloud Stream 為微服務(wù)應(yīng)用構(gòu)建消息驅(qū)動(dòng)能力。
- 分布式事務(wù) :使用 @GlobalTransactional 注解, 高效并且對(duì)業(yè)務(wù)零侵入地解決分布式事務(wù)問(wèn)題。
- 阿里云對(duì)象存儲(chǔ) :阿里云提供的海量、安全、低成本、高可靠的云存儲(chǔ)服務(wù)。支持在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)存儲(chǔ)和訪問(wèn)任意類型的數(shù)據(jù)。
- 分布式任務(wù)調(diào)度 :提供秒級(jí)、精準(zhǔn)、高可靠、高可用的定時(shí)(基于 Cron 表達(dá)式)任務(wù)調(diào)度服務(wù)。同時(shí)提供分布式的任務(wù)執(zhí)行模型,如網(wǎng)格任務(wù)。網(wǎng)格任務(wù)支持海量子任務(wù)均勻分配到所有 Worker(schedulerx-client)上執(zhí)行。
- 阿里云短信服務(wù) :覆蓋全球的短信服務(wù),友好、高效、智能的互聯(lián)化通訊能力,幫助企業(yè)迅速搭建客戶觸達(dá)通道。
組件
**[Sentinel] :**阿里巴巴源產(chǎn)品,把流量作為切入點(diǎn),從流量控制、熔斷降級(jí)、系統(tǒng)負(fù)載保護(hù)等多個(gè)維度保護(hù)服務(wù)的穩(wěn)定性。
**[Nacos] :**一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái)。
**[RocketMQ] :**一款開(kāi)源的分布式消息系統(tǒng),基于高可用分布式集群技術(shù),提供低延時(shí)的、高可靠的消息發(fā)布與訂閱服務(wù)。
**[Dubbo] :**Apache Dubbo? 是一款高性能 Java RPC 框架。
**[Seata] :**阿里巴巴開(kāi)源產(chǎn)品,一個(gè)易于使用的高性能微服務(wù)分布式事務(wù)解決方案。
[Alibaba Cloud OSS] : 阿里云對(duì)象存儲(chǔ)服務(wù)(Object Storage Service,簡(jiǎn)稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲(chǔ)服務(wù)。您可以在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)存儲(chǔ)和訪問(wèn)任意類型的數(shù)據(jù)。
[Alibaba Cloud SchedulerX]: 阿里中間件團(tuán)隊(duì)開(kāi)發(fā)的一款分布式任務(wù)調(diào)度產(chǎn)品,提供秒級(jí)、精準(zhǔn)、高可靠、高可用的定時(shí)(基于 Cron 表達(dá)式)任務(wù)調(diào)度服務(wù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-835183.html
[Alibaba Cloud SMS] : 覆蓋全球的短信服務(wù),友好、高效、智能的互聯(lián)化通訊能力,幫助企業(yè)迅速搭建客戶觸達(dá)通道。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-835183.html
到了這里,關(guān)于Spring Cloud Alibaba-01-微服務(wù)介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!