溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

高效率配置管理的方法有哪些

發(fā)布時間:2021-10-09 17:42:17 來源:億速云 閱讀:108 作者:iii 欄目:數(shù)據(jù)庫

這篇文章主要講解了“高效率配置管理的方法有哪些”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“高效率配置管理的方法有哪些”吧!

高效率配置管理的方法有哪些

Spring-boot 基于數(shù)據(jù)庫的配置管理

好的配置管理 是部署的第一步。

配置管理 做了什么

通常,應用的 配置 在不同 部署 (預發(fā)布、生產(chǎn)環(huán)境、開發(fā)環(huán)境等等)間會有很大差異

這其中包括:

  • 數(shù)據(jù)庫,Redis,以及其他 后端服務 的配置

  • 第三方服務的Key,如 存儲、推送等

  • 每份部署特有的配置,如域名等

配置管理的 目標

  • 一份基準代碼,多份部署,在環(huán)境中存儲配置
    配置文件隨著納入版本控制系統(tǒng)提交,引起多個版本 Profile 管理。

  • 統(tǒng)一管理
    如果不統(tǒng)一管理,需要在多處修改配置,容易造成遺忘,也增加學習成本。

  • 密鑰(配置)安全
    判斷一個應用是否正確地將配置排除在代碼之外,一個簡單的方法是看該應用的基準代碼是否可以立刻開源,而不用擔心會暴露任何敏感的信息。

配置管理的現(xiàn)行方案

方案理由可行性
Configuration 代碼文件代碼和配置混在一起,打包后,無法適配多個部署環(huán)境。×
配置文件例如 Spring-boot . profile 管理, node.js 的 .env√
基于數(shù)據(jù)庫管理非常適用于第三方 key 的配置,內(nèi)部配置 并不便捷√
基于配置服務Spring Cloud Config , nacos 等配置服務√

基于數(shù)據(jù)庫的配置管理

Spring-boot 應用配置管理方案(優(yōu)化版)

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 配置 Application.yml

配置DB 連接的環(huán)境變量 覆蓋 原Application.yml 的數(shù)據(jù)庫連接變量。

摘自: 12-Factor推薦將應用的配置存儲于 環(huán)境變量 中( env vars, env )。環(huán)境變量可以非常方便地在不同的部署間做修改,卻不動一行代碼;與配置文件不同,不小心把它們簽入代碼庫的概率微乎其微;與一些傳統(tǒng)的解決配置問題的機制(比如 Java 的屬性配置文件)相比,環(huán)境變量與語言和系統(tǒng)無關(guān)。

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 基于數(shù)據(jù)庫管理(jm-settings)

    2.1 設計 Key-Value 表

  3. CREATE TABLE `t_base_settings` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,   `keyword` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '關(guān)鍵詞, PAY.ALI PAY.MP',   `content` text COLLATE utf8mb4_unicode_ci COMMENT '配置內(nèi)容',   `created` bigint(20) DEFAULT NULL,   `updated` bigint(20) DEFAULT NULL,   `deleted` int(1) DEFAULT '0',   PRIMARY KEY (`id`) ) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='設置表';

2.2 Spring-boot @Bean 注入

聲明 Property

/**  * 華為 OBS 配置  * @author <a href="https://github.com/keepcleargas/">keepcleargas</a>  * @version 1.0 Created in 2021/03/23 10:56  */ @Data public class HuaweiObsProperties {     public static final String KEY = "huawei.obs";     private String accessKey;     private String secretKey;     private String endPoint;     /**      * 失效時間(分鐘)      */     private Long duration = 3600L;     /**      * buckets      */     private List<Bucket> buckets;      @Data     public static final class Bucket {         private Integer type;         private String bucketName;     }      @JsonIgnore     public String getBucketNameByType(Integer type) {         for (Bucket bucket : buckets) {             if (type.equals(bucket.getType())) {                 return bucket.getBucketName();             }         }         throw new IllegalArgumentException("Bucket配置不全!");     } }

Bean 注入類

/**  * HuaweiObsProperties Bean 配置類  * @author <a href="https://github.com/keepcleargas/">keepcleargas</a>  * @version 1.0 Created in 2021/03/23 11:01  */ @Slf4j @Configuration public class HuaweiObsConfiguration {     @Resource     BaseSettingsService baseSettingsService;      @Bean(name = "huaweiObsProperties")     public HuaweiObsProperties getHuaweiObsProperties() {         HuaweiObsProperties huaweiObsProperties = baseSettingsService.getObjectByKeyword(HuaweiObsProperties.KEY, HuaweiObsProperties.class);         return huaweiObsProperties == null ? new HuaweiObsProperties() : huaweiObsProperties;     } }

Bean 注入使用

@Slf4j @Service public class HuaweiObsService {      @Resource     HuaweiObsProperties huaweiObsProperties;     //todo 調(diào)用即可 }

開源地址

項目名描述地址
jm-settings基于 DB 的配置管理核心庫https://github.com/jimoos-cn/...
huawei-obs基于 jm-settings 實現(xiàn)的華為obs 配置管理https://github.com/jimoos-cn/...

感謝各位的閱讀,以上就是“高效率配置管理的方法有哪些”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對高效率配置管理的方法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI