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