結合場景談服務發現和配置

做爲 Nacos 5W1H 的系列文章,本文將圍繞「Where」,講述 Nacos 配置管理的三個典型的應用場景:mysql

 

  • 數據庫鏈接信息git

  • 限流閾值和降級開關github

  • 流量的動態調度算法

 

 上一篇:Nacos幫我解決了什麼問題?spring

 

 

 

數據庫鏈接信息sql

 

曾經有朋友跟我聊過一個問題,「業務飛速發展,團隊愈來愈大,人員流動也相對頻繁起來,怎麼才能更好的保證數據的安全性,不被泄露呢?」。他提到這樣一個場景,公司創立初期,服務後端的代碼都是他一行一行碼出來的,當時只有他一我的,後端與數據庫的鏈接配置信息也就直接放置在項目的配置文件中。他使用的是 Spring Boot 框架,配置信息就是存放在  application.properties 中,使用 Spring 的 profile 屬性保證不一樣環境鏈接不一樣的數據庫。以下所示:數據庫

 

生產環境:application-prod.propertiesjson

 

spring.datasource.url=生產環境的數據庫鏈接地址
spring.datasource.username=生產環境的數據庫用戶帳號
spring.datasource.password=生產環境的數據庫用戶密碼

 

開發環境:application-dev.properties後端

 

spring.datasource.url=開發環境的數據庫鏈接地址
spring.datasource.username=開發環境的數據庫用戶帳號
spring.datasource.password=開發環境的數據庫用戶密碼

 

測試、預發環境也是相似。這種將數據庫鏈接信息直接放置在配置文件中,跟着項目代碼一塊兒經過 Git 管理,的確是有蠻大的數據泄露的風險。試想,一個新來不久的小夥伴,他一當要投入研發工做,有 Git Pull 代碼的權限以後,表明他可能就擁有了直接操做線上數據庫的權限了。當時的我給他建議能夠經過如下幾個方面去下降數據風險:安全

 

  • 將數據庫鏈接信息等敏感配置從項目中剝離;

  • 數據庫增長 IP 白名單鏈接限制;

  • 最小權限原則:每一個帳號只配置所必需的權限,避免刪表刪庫等高危操做;

  • 按期修改數據庫帳號、密碼。

 

回想起來,我當時給的建議並無徹底解決他的問題,甚至還帶來了其餘一些問題。例如,上述的第一點,「將敏感配置從項目剝離」,剝離出來的敏感配置存放到哪裏?怎麼管理這些配置呢?也許,你會想到,存放到應用部署機器的環境變量或某個文件中。不,同樣有風險,說不定哪天開發同窗必須得登陸上機器排查問題,就有泄露的風險,總之,得儘量地作到在整個開發流程都不會有任何泄露的風險。應用中可能不僅是鏈接一個數據源,分庫分表的狀況,不一樣數據存儲(如 MySQL / Redis / Elasticsearch 等)的狀況,還有,其餘更多敏感配置項,配置數據的增多會給管理帶來不便。

 

另外,「按期修改數據庫帳號、密碼」,修改後我能怎麼方便快捷的下發到全部應用程序中呢?既然是敏感配置,其變動也會帶來很多的風險,我須要能先到小量的幾臺機器驗證,保證對業務無影響,我再所有下發到其餘全部的機器上去,是否還得有「灰度發佈」的功能呢?帳號密碼修改下發後,應用出現異常,影響到業務了,我要怎麼快速地回滾呢?是否還得有「版本控制」、「快速回滾」的功能呢?不是全部的開發同窗都有權限能修改敏感配置信息,是否還須要有「權限管控」的功能?對敏感配置的任何操做都應該被記錄,是否還須要有「變動審計」的功能呢?

 

如今,我有了更好的建議:使用 Nacos 配置管理模塊,將敏感配置信息都存放到 Nacos 中。Nacos 配置管理,其中一個立身之本就是爲敏感配置保駕護航。它提供上述場景所需的功能,經過命名空間區分不一樣環境(開發、測試、預發、生產),經過「版本控制」保證變動可追溯,經過「快速回滾」保證錯誤變動時影響最小,經過的「灰度發佈」功能保障配置安全平穩地變動,還有更多更全面功能(權限管控、變動審計等)即將支持。

 

那麼,怎麼將敏感配置項目的配置文件中遷移到 Nacos 中呢?下面以 Spring Boot 鏈接 MySQL 爲例:

 

1. 添加依賴

 

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>${latest.version}</version>
</dependency>

 

注意 Spring Boot 1.x 使用  nacos-config-spring-boot-starter 0.1.x 版本,Spring Boot 2.x 使用 nacos-config-spring-boot-starter 0.2.x 版本。

 

2. 在 application.properties  中添加 Nacos 鏈接配置

 

nacos.config.server-addr=127.0.0.1:8848

 

這裏是簡單的示例,在實際生產中,還需配置 Nacos 命名空間信息(區分環境)、鑑權信息(如 AccessKey、SecretKey 等,即將支持的權限訪問控制)。而 Nacos 配置模塊對應的阿里雲產品 ACM,藉助於 ECS 實例 RAM 角色,最終能到達連 AccessKey、SecretKey 都不須要填寫的目的。

 

3. 添加 @NacosPropertySource 註解

 

@SpringBootApplication
@NacosPropertySource(dataId = "mysql.properties")
public class SpringBootMySQLApplication {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 

 

4. 在本地啓動的 Nacos 控制檯上新增 dataId 爲 mysql.properties 的配置,配置內容爲 MySQL 鏈接配置信息:

 

 

 

經過這四個簡單的步驟,就將 MySQL 鏈接信息從原來的 application.properties 遷移到 Nacos 的,讓 Nacos 將敏感配置管控起來,大大下降數據泄露的風險。同時,Nacos 配置管理提供的「統一管控」、「版本控制」、「快速回滾」等強大的功能也爲其運維管理帶來極大的便利。

 

完整示例代碼請參看:https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-boot-example/nacos-spring-boot-config-mysql-example

 

 

 

 

限流閾值和降級開關

 

限流、降級,衆所周知,是在開發高併發系統過程當中須要考慮的兩大關鍵點,是運行時保護系統的兩大利器。限流閾值和降級開關,最終是抽象爲一個個的配置項,要想實現運行時的動態調整閾值和開關的啓停,將這些配置項存放到 Nacos 的配置模塊中最適合不過了。

 

在今年 8 月的時候,阿里巴巴開源了 Sentinel,以流量爲切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。在阿里巴巴內部,Nacos 跟 Sentinel 就是多年攜手相伴,砥礪前行的好機油,爲雙 11 等各類大促立下了功勞,也爲剁手黨提供了良好的購物體驗。

 

下面就以 Sentinel 流控爲例,演示若是經過 Nacos 來作到運行時的動態控制流量:

 

1. 添加依賴

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-core</artifactId>
    <version>${latest.version}</version>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-extension</artifactId>
    <version>${latest.version}</version>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
    <version>${latest.version}</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>${latest.version}</version>
</dependency>

 

2. 模擬併發請求

 

final class RunTask implements Runnable {
    @Override
    public void run() {
        while (!stop) {
            Entry entry = null;
            try {
                entry = SphU.entry(resourceName);
                // token acquired, means pass
                pass.addAndGet(1);
            } catch (BlockException e1) {
                block.incrementAndGet();
            } catch (Exception e2) {
                // biz exception
            } finally {
                total.incrementAndGet();
                if (entry != null) {
                    entry.exit();
                }
            }

            Random random2 = new Random();
            try {
                TimeUnit.MILLISECONDS.sleep(random2.nextInt(50));
            } catch (InterruptedException e) {
                // ignore
            }
        }
    }
}

 

3. 配置 Nacos 鏈接信息與 dataId 等,並將其設置爲 Sentinel 的數據源

 

public class NacosDynamicFlowDemo {

    private static final String KEY = "TestResource";

    public static void main(String[] args) {
    	final String remoteAddress = "localhost";
        final String groupId = "DEFAULT_GROUP";
        final String dataId = "com.alibaba.nacos.demo.flow.rule";

        ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new NacosDataSource<>(remoteAddress, groupId, dataId,
            source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
        FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
        
        // Assume we config: resource is `TestResource`, initial QPS threshold is 5.
        FlowQpsRunner runner = new FlowQpsRunner(KEY, 1, 10000);
        runner.simulateTraffic();
        runner.tick();
    }
}

 

 

4. 在本地啓動的 Nacos 控制檯中新建 dataId 爲com.alibaba.nacos.demo.flow.rule  的流控配置

 

 

5. 運行 NacosDynamicFlowDemo,你會看到以下標準輸出信息

 

 

6. 再到 Nacos 控制檯修改剛剛新建的流控配置,將限流閾值 count 的值修改成 1.0,完整的標準輸出信息以下:

 

 

以上示例演示瞭如何經過 Nacos + Sentinel 實現動態流量控制的能力,核心就是用到了 Nacos 配置模塊「動態推送」的能力。原理是 sentinel-datasource-nacos 集成了 nacos-client  ,其與 nacos-server 維持着鏈接,當用戶在 Nacos 控制檯進行配置變動時,nacos-server  會快速地將該配置的最新內容推送到  nacos-client 中,Sentinel 一拿到最新的流控配置,就轉換了流控策略,如示例將流控閾值調整爲 1.0,限制爲更少的流量進入系統的業務處理流程。

 

完整示例代碼請參看:https://github.com/nacos-group/nacos-examples/tree/master/nacos-sentinel-example

 

 

 

 

 

流量的動態調度

 

業務發展壯大到必定的規模,單一的集羣已經承載不了所有的用戶請求,須要將用戶的流量分流到不一樣的集羣上。固然,更進一步的方案是:不一樣的集羣位於不一樣的區域,這樣,除了緩解業務處理的壓力,也給系統帶來容災的能力。

 

好比,某電商系統有 1 億用戶量,將系統的流量按照用戶的 ID 進行切分,ID 爲 1-1000W 的用戶請求分發到區域 A 的集羣 a 上,ID 爲 10001W-2000W 的用戶請求流量分發到區域 B 的集羣 b 上,以此類推,最終將全部用戶的請求流量打散到 10 個不一樣區域的集羣上,同時,每一個集羣冗餘了一些系統資源。當區域 A 的機房發生不可抗的災難(如地震)時,咱們須要有動態調度流量的能力,最好能秒級得將流量從區域 A 調度到另外可用的區域的集羣上。

 

這正是 Nacos 配置管理大有做爲的地方,將用戶 ID 的分片和對應的路由規則存放在 Nacos 的中,配合統一接入層等的組件,就能將流量打散到各個集羣上,進而讓系統能承載更大的流量,以更好的支撐業務的發展。另外,將其存放與 Nacos 中,也就具有了配置「動態化」的能力,一旦某區域出現基礎設施沒法及時恢復的問題時,只需在 Nacos 的控制檯上修改 ID 分片的路由規則,就能將有問題的區域流量快速切換到其餘可用的區域上,保障對業務幾乎無損。Nacos 在阿里內部能作到秒級推送到十萬級別機器上的推送效率。

 

 

 

 

 

總結

做爲 Nacos 5W1H 的系列文章,本文將圍繞「Where」,講述 Nacos 配置管理的三個典型的應用場景:

 

  • 數據庫鏈接信息

  • 限流閾值和降級開關

  • 流量的動態調度

 

 上一篇:Nacos幫我解決了什麼問題?

 

 

 

數據庫鏈接信息

 

曾經有朋友跟我聊過一個問題,「業務飛速發展,團隊愈來愈大,人員流動也相對頻繁起來,怎麼才能更好的保證數據的安全性,不被泄露呢?」。他提到這樣一個場景,公司創立初期,服務後端的代碼都是他一行一行碼出來的,當時只有他一我的,後端與數據庫的鏈接配置信息也就直接放置在項目的配置文件中。他使用的是 Spring Boot 框架,配置信息就是存放在  application.properties 中,使用 Spring 的 profile 屬性保證不一樣環境鏈接不一樣的數據庫。以下所示:

 

生產環境:application-prod.properties

 

spring.datasource.url=生產環境的數據庫鏈接地址
spring.datasource.username=生產環境的數據庫用戶帳號
spring.datasource.password=生產環境的數據庫用戶密碼

 

開發環境:application-dev.properties

 

spring.datasource.url=開發環境的數據庫鏈接地址
spring.datasource.username=開發環境的數據庫用戶帳號
spring.datasource.password=開發環境的數據庫用戶密碼

 

測試、預發環境也是相似。這種將數據庫鏈接信息直接放置在配置文件中,跟着項目代碼一塊兒經過 Git 管理,的確是有蠻大的數據泄露的風險。試想,一個新來不久的小夥伴,他一當要投入研發工做,有 Git Pull 代碼的權限以後,表明他可能就擁有了直接操做線上數據庫的權限了。當時的我給他建議能夠經過如下幾個方面去下降數據風險:

 

  • 將數據庫鏈接信息等敏感配置從項目中剝離;

  • 數據庫增長 IP 白名單鏈接限制;

  • 最小權限原則:每一個帳號只配置所必需的權限,避免刪表刪庫等高危操做;

  • 按期修改數據庫帳號、密碼。

 

回想起來,我當時給的建議並無徹底解決他的問題,甚至還帶來了其餘一些問題。例如,上述的第一點,「將敏感配置從項目剝離」,剝離出來的敏感配置存放到哪裏?怎麼管理這些配置呢?也許,你會想到,存放到應用部署機器的環境變量或某個文件中。不,同樣有風險,說不定哪天開發同窗必須得登陸上機器排查問題,就有泄露的風險,總之,得儘量地作到在整個開發流程都不會有任何泄露的風險。應用中可能不僅是鏈接一個數據源,分庫分表的狀況,不一樣數據存儲(如 MySQL / Redis / Elasticsearch 等)的狀況,還有,其餘更多敏感配置項,配置數據的增多會給管理帶來不便。

 

另外,「按期修改數據庫帳號、密碼」,修改後我能怎麼方便快捷的下發到全部應用程序中呢?既然是敏感配置,其變動也會帶來很多的風險,我須要能先到小量的幾臺機器驗證,保證對業務無影響,我再所有下發到其餘全部的機器上去,是否還得有「灰度發佈」的功能呢?帳號密碼修改下發後,應用出現異常,影響到業務了,我要怎麼快速地回滾呢?是否還得有「版本控制」、「快速回滾」的功能呢?不是全部的開發同窗都有權限能修改敏感配置信息,是否還須要有「權限管控」的功能?對敏感配置的任何操做都應該被記錄,是否還須要有「變動審計」的功能呢?

 

如今,我有了更好的建議:使用 Nacos 配置管理模塊,將敏感配置信息都存放到 Nacos 中。Nacos 配置管理,其中一個立身之本就是爲敏感配置保駕護航。它提供上述場景所需的功能,經過命名空間區分不一樣環境(開發、測試、預發、生產),經過「版本控制」保證變動可追溯,經過「快速回滾」保證錯誤變動時影響最小,經過的「灰度發佈」功能保障配置安全平穩地變動,還有更多更全面功能(權限管控、變動審計等)即將支持。

 

那麼,怎麼將敏感配置項目的配置文件中遷移到 Nacos 中呢?下面以 Spring Boot 鏈接 MySQL 爲例:

 

1. 添加依賴

 

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>${latest.version}</version>
</dependency>

 

注意 Spring Boot 1.x 使用  nacos-config-spring-boot-starter 0.1.x 版本,Spring Boot 2.x 使用 nacos-config-spring-boot-starter 0.2.x 版本。

 

2. 在 application.properties  中添加 Nacos 鏈接配置

 

nacos.config.server-addr=127.0.0.1:8848

 

這裏是簡單的示例,在實際生產中,還需配置 Nacos 命名空間信息(區分環境)、鑑權信息(如 AccessKey、SecretKey 等,即將支持的權限訪問控制)。而 Nacos 配置模塊對應的阿里雲產品 ACM,藉助於 ECS 實例 RAM 角色,最終能到達連 AccessKey、SecretKey 都不須要填寫的目的。

 

3. 添加 @NacosPropertySource 註解

 

@SpringBootApplication
@NacosPropertySource(dataId = "mysql.properties")
public class SpringBootMySQLApplication {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 

 

4. 在本地啓動的 Nacos 控制檯上新增 dataId 爲 mysql.properties 的配置,配置內容爲 MySQL 鏈接配置信息:

 

 

 

經過這四個簡單的步驟,就將 MySQL 鏈接信息從原來的 application.properties 遷移到 Nacos 的,讓 Nacos 將敏感配置管控起來,大大下降數據泄露的風險。同時,Nacos 配置管理提供的「統一管控」、「版本控制」、「快速回滾」等強大的功能也爲其運維管理帶來極大的便利。

 

完整示例代碼請參看:https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-boot-example/nacos-spring-boot-config-mysql-example

 

 

 

 

限流閾值和降級開關

 

限流、降級,衆所周知,是在開發高併發系統過程當中須要考慮的兩大關鍵點,是運行時保護系統的兩大利器。限流閾值和降級開關,最終是抽象爲一個個的配置項,要想實現運行時的動態調整閾值和開關的啓停,將這些配置項存放到 Nacos 的配置模塊中最適合不過了。

 

在今年 8 月的時候,阿里巴巴開源了 Sentinel,以流量爲切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。在阿里巴巴內部,Nacos 跟 Sentinel 就是多年攜手相伴,砥礪前行的好機油,爲雙 11 等各類大促立下了功勞,也爲剁手黨提供了良好的購物體驗。

 

下面就以 Sentinel 流控爲例,演示若是經過 Nacos 來作到運行時的動態控制流量:

 

1. 添加依賴

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-core</artifactId>
    <version>${latest.version}</version>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-extension</artifactId>
    <version>${latest.version}</version>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
    <version>${latest.version}</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>${latest.version}</version>
</dependency>

 

2. 模擬併發請求

 

final class RunTask implements Runnable {
    @Override
    public void run() {
        while (!stop) {
            Entry entry = null;
            try {
                entry = SphU.entry(resourceName);
                // token acquired, means pass
                pass.addAndGet(1);
            } catch (BlockException e1) {
                block.incrementAndGet();
            } catch (Exception e2) {
                // biz exception
            } finally {
                total.incrementAndGet();
                if (entry != null) {
                    entry.exit();
                }
            }

            Random random2 = new Random();
            try {
                TimeUnit.MILLISECONDS.sleep(random2.nextInt(50));
            } catch (InterruptedException e) {
                // ignore
            }
        }
    }
}

 

3. 配置 Nacos 鏈接信息與 dataId 等,並將其設置爲 Sentinel 的數據源

 

public class NacosDynamicFlowDemo {

    private static final String KEY = "TestResource";

    public static void main(String[] args) {
    	final String remoteAddress = "localhost";
        final String groupId = "DEFAULT_GROUP";
        final String dataId = "com.alibaba.nacos.demo.flow.rule";

        ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new NacosDataSource<>(remoteAddress, groupId, dataId,
            source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
        FlowRuleManager.register2Property(flowRuleDataSource.getProperty());
        
        // Assume we config: resource is `TestResource`, initial QPS threshold is 5.
        FlowQpsRunner runner = new FlowQpsRunner(KEY, 1, 10000);
        runner.simulateTraffic();
        runner.tick();
    }
}

 

 

4. 在本地啓動的 Nacos 控制檯中新建 dataId 爲com.alibaba.nacos.demo.flow.rule  的流控配置

 

 

5. 運行 NacosDynamicFlowDemo,你會看到以下標準輸出信息

 

 

6. 再到 Nacos 控制檯修改剛剛新建的流控配置,將限流閾值 count 的值修改成 1.0,完整的標準輸出信息以下:

 

 

以上示例演示瞭如何經過 Nacos + Sentinel 實現動態流量控制的能力,核心就是用到了 Nacos 配置模塊「動態推送」的能力。原理是 sentinel-datasource-nacos 集成了 nacos-client  ,其與 nacos-server 維持着鏈接,當用戶在 Nacos 控制檯進行配置變動時,nacos-server  會快速地將該配置的最新內容推送到  nacos-client 中,Sentinel 一拿到最新的流控配置,就轉換了流控策略,如示例將流控閾值調整爲 1.0,限制爲更少的流量進入系統的業務處理流程。

 

完整示例代碼請參看:https://github.com/nacos-group/nacos-examples/tree/master/nacos-sentinel-example

 

 

 

 

 

流量的動態調度

 

業務發展壯大到必定的規模,單一的集羣已經承載不了所有的用戶請求,須要將用戶的流量分流到不一樣的集羣上。固然,更進一步的方案是:不一樣的集羣位於不一樣的區域,這樣,除了緩解業務處理的壓力,也給系統帶來容災的能力。

 

好比,某電商系統有 1 億用戶量,將系統的流量按照用戶的 ID 進行切分,ID 爲 1-1000W 的用戶請求分發到區域 A 的集羣 a 上,ID 爲 10001W-2000W 的用戶請求流量分發到區域 B 的集羣 b 上,以此類推,最終將全部用戶的請求流量打散到 10 個不一樣區域的集羣上,同時,每一個集羣冗餘了一些系統資源。當區域 A 的機房發生不可抗的災難(如地震)時,咱們須要有動態調度流量的能力,最好能秒級得將流量從區域 A 調度到另外可用的區域的集羣上。

 

這正是 Nacos 配置管理大有做爲的地方,將用戶 ID 的分片和對應的路由規則存放在 Nacos 的中,配合統一接入層等的組件,就能將流量打散到各個集羣上,進而讓系統能承載更大的流量,以更好的支撐業務的發展。另外,將其存放與 Nacos 中,也就具有了配置「動態化」的能力,一旦某區域出現基礎設施沒法及時恢復的問題時,只需在 Nacos 的控制檯上修改 ID 分片的路由規則,就能將有問題的區域流量快速切換到其餘可用的區域上,保障對業務幾乎無損。Nacos 在阿里內部能作到秒級推送到十萬級別機器上的推送效率。

 

 

 

 

 

總結

 

除了以上三個場景,其實還有更多更大膽的應用場景,如「大數據實時計算算法調整」、「異地容災多活」、「應用業務場景動態推送」等等,能夠參看 Nacos 的阿里雲產品 ACM 的使用場景 。Nacos 配置管理模塊,將敏感配置收攏管控起來,極大下降數據泄露等風險,而且提供如「動態推送」、「版本控制」、「快速回滾」等功能,保障了敏感配置的變動安全平穩的執行。

 

在限流與降級的場景,經過一個示例,爲你們演示瞭如何經過 Nacos + Sentinel 實現流量的動態控制,這也是 Nacos 配置管理的一個十分典型的應用場景。降級也同樣,大促高峯期間將某個非關鍵的系統組件進行關閉,在過了高峯期後再開啓,這個也是能夠經過 Nacos 的「動態推送」的功能來實現。

 

總之,只要系統涉及到了「敏感的配置」、「動態的配置」,都應該考慮將配置放入到 Nacos 中,讓 Nacos 管控起來。

除了以上三個場景,其實還有更多更大膽的應用場景,如「大數據實時計算算法調整」、「異地容災多活」、「應用業務場景動態推送」等等,能夠參看 Nacos 的阿里雲產品 ACM 的使用場景 。Nacos 配置管理模塊,將敏感配置收攏管控起來,極大下降數據泄露等風險,而且提供如「動態推送」、「版本控制」、「快速回滾」等功能,保障了敏感配置的變動安全平穩的執行。

 

在限流與降級的場景,經過一個示例,爲你們演示瞭如何經過 Nacos + Sentinel 實現流量的動態控制,這也是 Nacos 配置管理的一個十分典型的應用場景。降級也同樣,大促高峯期間將某個非關鍵的系統組件進行關閉,在過了高峯期後再開啓,這個也是能夠經過 Nacos 的「動態推送」的功能來實現。

 

總之,只要系統涉及到了「敏感的配置」、「動態的配置」,都應該考慮將配置放入到 Nacos 中,讓 Nacos 管控起來。

相關文章
相關標籤/搜索