SA實戰(zhàn) ·《SpringCloud Alibaba實戰(zhàn)》微服務介紹

今天給大家分享一些微服務開發(fā)過程中的一些常見概念,這樣在后面為大家正式開始實戰(zhàn)內(nèi)容的話就能夠統(tǒng)一概念了。
微服務化后的問題
一個系統(tǒng),尤其是大型系統(tǒng)使用微服務架構(gòu)模式進行搭建和開發(fā)時,雖然總體上能夠提高研發(fā)效率、能夠支持更高的并發(fā),也能夠提高系統(tǒng)整體的性能和可靠性,以及可維護性。但是在實現(xiàn)細節(jié)上還是存在著不少的問題。
(1)將系統(tǒng)拆分成各個微服務后,如果管理和感知那么多的服務呢?
(2)將系統(tǒng)拆分成各個微服務后,各個微服務之間如何通信?
(3)將系統(tǒng)拆分成各個微服務后,一旦系統(tǒng)出現(xiàn)問題,如何快速定位問題呢?
(4)將系統(tǒng)拆分成各個微服務后,如何最大程度的保證系統(tǒng)的可用性?
(5)將系統(tǒng)拆分成各個微服務后,客戶端如何訪問那么多的微服務?
大家可以先思考下這些問題,冰河在下一篇文章中,會為大家揭曉這些問題的答案。
微服務常見概念
微服務中有一些常見的概念需要大家了解,以便更好的學習后面的實戰(zhàn)章節(jié),冰河今天就簡單整理了一些概念性的知識。
服務調(diào)用
將一個系統(tǒng)拆分成各個微服務后,各個微服務之間協(xié)同工作才能對外提供完整的服務,這就涉及到各個微服務之間的調(diào)用問題。目前各個微服務之間一般會采用Restful接口或者RPC協(xié)議的方式進行調(diào)用。
(1)Restful接口
Restful接口一般是基于HTTP協(xié)議實現(xiàn)的,這種協(xié)議使用上比較廣泛,幾乎所有的編程語言都支持HTTP協(xié)議。
(2)RPC協(xié)議
RPC是一種遠程過程調(diào)用,能夠做到像調(diào)用本地服務一樣調(diào)用遠程服務。RPC框架在底層屏蔽了數(shù)據(jù)的傳輸方式,序列化方式和交互的細節(jié)信息,讓使用RPC框架開發(fā)微服務的人員覺得更加簡單,實現(xiàn)起來更加容易。
服務治理
服務治理,說白了就是如何自動化的管理各個微服務,核心的功能就是服務的注冊、發(fā)現(xiàn)和剔除。
(1)服務注冊
各個微服務實例在啟動時,能夠?qū)⒆陨硖峁┑姆兆缘侥硞€注冊中心。
(2)服務發(fā)現(xiàn)
當某個微服務將自身提供的服務注冊到注冊中心時,其他微服務實例能夠通過注冊中心感知到這個微服務提供的服務,并且能夠獲取到這個微服務的實例信息,通過這個微服務的實例信息就能夠調(diào)用這個微服務的方法,來進行相應的讀寫操作。
(3)服務剔除
如果某個微服務實例出現(xiàn)故障,或者連接一直超時,則注冊中心會認為當前微服務實例不可用,就會將這個微服務實例剔除出注冊中心,使其不再被其他微服務感知到和調(diào)用到。
注冊中心
提供微服務注冊、發(fā)現(xiàn)和剔除功能的服務組件。
服務網(wǎng)關
服務網(wǎng)關是所有微服務的入口,客戶端在訪問各個微服務時,首先需要經(jīng)過服務網(wǎng)關。接入服務網(wǎng)關后,會將所有API的調(diào)用統(tǒng)一接入到API的網(wǎng)關層,由網(wǎng)關層統(tǒng)一接收參數(shù)進行路由轉(zhuǎn)發(fā),將返回的結(jié)果數(shù)據(jù)返回給客戶端。
通常情況下,一個服務網(wǎng)關最基本的功能包括:統(tǒng)一接入、限流、熔斷、降級、安全防護、協(xié)議適配、容錯等等。主要專注的是對系統(tǒng)安全、流量和路由等的管理。這樣,業(yè)務開發(fā)人員就可以專注于開發(fā)業(yè)務邏輯啦。
服務限流
在高并發(fā)大流量場景下,經(jīng)常會出現(xiàn)某個服務或者接口因為調(diào)用的流量過大而導致不可用的情況,由于某個服務或者接口的不可用,可能還會導致整個系統(tǒng)崩潰。此時,就會對系統(tǒng)采取限流的手段來進行防護,當請求達到一定的頻率或者速率時,對這些請求采取排隊、等待、降級等策略,甚至是拒絕服務。
服務熔斷
如果某個服務出現(xiàn)故障不可用,或者調(diào)用超時,為了不讓其他服務受到牽累而導致整個系統(tǒng)不可用,則斷開與這個服務的連接,暫停對這個服務的調(diào)用。
服務降級
服務降級主要是從整個系統(tǒng)的負載情況進行考慮,如果某些服務的負載情況比較高,則為了預防某些功能出現(xiàn)負載過高而導致響應慢的問題,會在提供這些功能的方法內(nèi)部暫時舍棄對一些非核心功能接口的調(diào)用,直接返回一個提前準備好的錯誤處理信息。
服務降級是有損服務,但是能夠保證整個系統(tǒng)的穩(wěn)定性和可用性。
服務容錯
服務容錯指的是微服務能夠容納一定錯誤情況的發(fā)生。從某種意義上說,服務限流、服務熔斷和服務降級都是服務容錯的措施。
鏈路追蹤
當系統(tǒng)被拆分成各個微服務后,一次請求往往會涉及到多個服務之間的調(diào)用關系。如果系統(tǒng)出現(xiàn)問題,則會增加定位問題的難度。為了解決這個問題,就需要對一次請求涉及到的多個服務鏈路的日志進行追蹤和記錄,一方面可以記錄調(diào)用的鏈路,另一方面還可以監(jiān)控系統(tǒng)中各個調(diào)用環(huán)節(jié)的性能,這就是鏈路追蹤。
SpringCloud AlibabaSpringCloud Alibaba是阿里開源的一套微服務解決方案,包含各種微服務組件,能夠極大的方便開發(fā)人員構(gòu)建微服務應用。
主要功能
服務限流降級:默認支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Zuul、Dubbo 和 RocketMQ 限流降級功能的接入,可以在運行時通過控制臺實時修改限流降級規(guī)則,還支持查看限流降級 Metrics 監(jiān)控。
- 服務注冊與發(fā)現(xiàn):適配 Spring Cloud 服務注冊與發(fā)現(xiàn)標準,默認集成了 Ribbon 的支持。
- 分布式配置管理:支持分布式系統(tǒng)中的外部化配置,配置更改時自動刷新。
- 消息驅(qū)動能力:基于 Spring Cloud Stream 為微服務應用構(gòu)建消息驅(qū)動能力。
- 分布式事務:使用 @GlobalTransactional 注解, 高效并且對業(yè)務零侵入地解決分布式事務問題。
- 阿里云對象存儲:阿里云提供的海量、安全、低成本、高可靠的云存儲服務。支持在任何應用、任何時間、任何地點存儲和訪問任意類型的數(shù)據(jù)。
- 分布式任務調(diào)度:提供秒級、精準、高可靠、高可用的定時(基于 Cron 表達式)任務調(diào)度服務。同時提供分布式的任務執(zhí)行模型,如網(wǎng)格任務。網(wǎng)格任務支持海量子任務均勻分配到所有 Worker(schedulerx-client)上執(zhí)行。
- 阿里云短信服務:覆蓋全球的短信服務,友好、高效、智能的互聯(lián)化通訊能力,幫助企業(yè)迅速搭建客戶觸達通道。
除了上述所具有的功能外,針對企業(yè)級用戶的場景,Spring Cloud Alibaba 配套的企業(yè)版微服務治理方案 微服務引擎 MSE 還提供了企業(yè)級微服務治理中心,包括全鏈路灰度、服務預熱、無損上下線和離群實例摘除等更多更強大的治理能力,同時還提供了企業(yè)級 Nacos 注冊配置中心,企業(yè)級云原生網(wǎng)關等多種產(chǎn)品及解決方案。
組件
- Sentinel:把流量作為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度保護服務的穩(wěn)定性。
- Nacos:一個更易于構(gòu)建云原生應用的動態(tài)服務發(fā)現(xiàn)、配置管理和服務管理平臺。
- RocketMQ:一款開源的分布式消息系統(tǒng),基于高可用分布式集群技術(shù),提供低延時的、高可靠的消息發(fā)布與訂閱服務。
- Dubbo:Apache Dubbo? 是一款高性能 Java RPC 框架。
- Seata:阿里巴巴開源產(chǎn)品,一個易于使用的高性能微服務分布式事務解決方案。
- Alibaba Cloud OSS: 阿里云對象存儲服務(Object Storage Service,簡稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲服務。您可以在任何應用、任何時間、任何地點存儲和訪問任意類型的數(shù)據(jù)。
- Alibaba Cloud SchedulerX: 阿里中間件團隊開發(fā)的一款分布式任務調(diào)度產(chǎn)品,提供秒級、精準、高可靠、高可用的定時(基于 Cron 表達式)任務調(diào)度服務。
- Alibaba Cloud SMS: 覆蓋全球的短信服務,友好、高效、智能的互聯(lián)化通訊能力,幫助企業(yè)迅速搭建客戶觸達通道。



























