天天看點

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud

ACM 産品介紹

應用配置管理 ACM(Application Configuration

Management)前身為淘寶内部配置中心

Diamond,是一款在分布式架構環境中對應用配置進行“集中管理”和“動态推送”的配置中心産品。利用

ACM,您可以在微服務、DevOps、大資料等場景下極大減輕配置管理的工作量,并增強配置管理的服務能力。

核心功能

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud
  • 統一管控 :您可以在 ACM 的控制台統一管理所有應用的配置,而不再像傳統配置那樣,分散在各處。
  • 動态推送 :當你在 ACM 控制台修改了配置, ACM 能夠實時将修改後的配置推送到接入 ACM 服務的應用程序中。
  • 版本管理 :ACM 控制台保留配置變更各個曆史版本,目前你發現誤修改配置後,能夠快速得復原,降低影響面。
  • 灰階釋出 :有一些配置是相對比較重要,一旦變更,可能會帶來很大的影響。通過灰階釋出功能,您可以讓新配置在少數的幾台機器上生效,待觀察服務到達預期,并對業務沒有負面的影響,之後,再将配置全量釋出。
  • 推送軌迹 :通過推送軌迹,您可以查到到那些 IP 在什麼時間點來拿過配置。當您釋出配置後,想看看有哪些機器已經來擷取最新配置了,就可以通過它來檢視。

ACM 應用場景

場景 1:微服務應用架構下的配置管理

在微服務架構下,随着應用和機器數目的增多,配置(如

DB_URL 通路資訊、服務連接配接池、服務内部緩存大小等)管理的工作會變得很繁瑣。單個應用下多個機器的配置分發,應用對應用的配置依賴,都将成為挑戰。在傳統架構的應用釋出過程中,修改一個應用配置就需要将整個應用重新打包釋出,整個過程非常繁瑣,且容易出錯。

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud

在基于 ACM 的微服務場景下,應用的重要配置資訊被釋出到 ACM 中。新的配置釋出并不依賴配置打包。在新版本的配置釋出後,所有應用立即生效。

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud

在微服務應用架構下使用 ACM 帶來的好處:

  • 所有配置中心化,在應用衆多的情況下配置管理變得更加友善。
  • 所有配置不依賴版本釋出,使得配置變更更加靈活。
  • ACM 天生支援灰階釋出和復原,使得配置的變更釋出在微服務架構下變得更加安全。

場景 2:分布式架構下的服務治理

在各類分布式架構下,基于某類 RPC 架構(RESTful,HSF,Dubbo 等)做好服務治理是非常關鍵的。其中,服務治理的服務路由、服務限流、服務降級、服務鑒權等功能,均可通過配置中心實作。

以限流降級為例,在阿裡巴巴雙11,每一次服務限流降級相關操作都要求秒級響應,此需求就通過

ACM 來實作。其中,每個 RPC 的服務端都會通過 ACM 注冊監聽對應服務的流控管理資訊。

當應用需要流控時,管理者在服務治理控制台做出限流操作,服務治理系統就會通過

ACM 将流控資訊推送到對應的目标應用服務端,讓應用服務端對應配置采取相應的限流動作。

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud

在分布式架構下使用 ACM 帶來的好處:

  • 性能良好,通過采用配置推送的方式來監聽服務治理資訊,對性能幾乎無影響。
  • 響應時間迅速,相關的服務治理資訊可以被秒級推送。
  • 安全性高,當限流降級錯推以後還可以通過秒級配置復原來恢複狀态

場景 3:企業級網際網路架構下的異地多活場景

異地多活是企業級網際網路架構中的一種進階容災架構。相對于傳統容災架構,有業務恢複時間短,容量需求低,運維快捷簡單等特點。目前異地多活架構被阿裡巴巴和餓了麼等公司廣泛采用。

在阿裡巴巴内部,容災多活架構的核心算法、ID 分片和對應的的路由規則均采用 ACM 來動态推送。其中,相應的用戶端和服務端,如 RPC,MQ,DB 都植入了路由路徑。當容災演練或者真實災難發生時,管理者隻需要動态地推送規則,相應的規則會影響到所有架構元件。

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud

采用 ACM 為異地多活場景中的應用帶來以下好處:

  • 基礎架構和容災邏輯解耦,具體的路由邏輯由容災規則切換決定。
  • 生效快,理論上容災的切換規則可以秒級推送到十萬級别機器。

ACM 與 Nacos 的關系

Nacos 是阿裡中間件今年 7 月開源的産品,包括配置管理、服務管理、動态 DNS 服務、服務中繼資料管理等功能,其中的 Nacos 配置管理子產品是跟 ACM 完全對等的,是以 Nacos 的用戶端,包括 nacos-client、 nacos-spring-context 等,隻需設定了連接配接 ACM 服務所需的 endpoint、namespace、access key、secret key,就可以直接通路 ACM 的服務。

兩者對比如下:

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud

ACM 如何支援 Spring

如上所述,Nacos 的用戶端可以直接通路 ACM 服務,ACM 支援 Spring 也就是通過

nacos-spring-context

來支援的。

Nacos Spring 提供的一些注解如下:

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud

除了注解外,Nacos Spring 還提供了一些事件,在配置釋出、删除等操作時能傳播事件出來,友善使用者做日志或者審計相關的工作,如下:

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud

示例

ACM 如何支援 Spring Boot

Nacos Spring Boot 底下是封裝了 Nacos Spring ,是以,上面描述的 Nacos Spring 的注解、功能都可以在引入

Nacos Spring Boot 的依賴

之後直接使用。

另外,Nacos Spring Boot 在 Nacos Spring 的基礎上做了 Spring Boot Actuator 服務監控和管理相關的 Endpoint 和 Health Check。

ACM 如何支援 Spring Cloud

Nacos Spring Cloud 是屬于

Spring Cloud Alibaba

中的一個子子產品,支援從 Spring Cloud Config 平滑遷移過來,相對于 Spring Cloud Config,有更多的優勢:

ACM 無縫支援 Spring 全棧ACM 産品介紹ACM 應用場景ACM 與 Nacos 的關系ACM 如何支援 SpringACM 如何支援 Spring BootACM 如何支援 Spring Cloud