您好,登錄后才能下訂單哦!
這篇文章主要講解了“高效率配置管理的方法有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“高效率配置管理的方法有哪些”吧!
好的配置管理 是部署的第一步。
通常,應用的 配置 在不同 部署 (預發布、生產環境、開發環境等等)間會有很大差異
這其中包括:
數據庫,Redis,以及其他 后端服務 的配置
第三方服務的Key,如 存儲、推送等
每份部署特有的配置,如域名等
一份基準代碼,多份部署,在環境中存儲配置
配置文件隨著納入版本控制系統提交,引起多個版本 Profile
管理。
統一管理
如果不統一管理,需要在多處修改配置,容易造成遺忘,也增加學習成本。
密鑰(配置)安全
判斷一個應用是否正確地將配置排除在代碼之外,一個簡單的方法是看該應用的基準代碼是否可以立刻開源,而不用擔心會暴露任何敏感的信息。
方案 | 理由 | 可行性 |
---|---|---|
Configuration 代碼文件 | 代碼和配置混在一起,打包后,無法適配多個部署環境。 | × |
配置文件 | 例如 Spring-boot . profile 管理, node.js 的 .env | √ |
基于數據庫管理 | 非常適用于第三方 key 的配置,內部配置 并不便捷 | √ |
基于配置服務 | Spring Cloud Config , nacos 等配置服務 | √ |
Spring-boot 應用配置管理方案(優化版)
鴻蒙官方戰略合作共建——HarmonyOS技術社區
配置 Application.yml
配置DB 連接的環境變量 覆蓋 原Application.yml 的數據庫連接變量。
摘自: 12-Factor推薦將應用的配置存儲于 環境變量 中( env vars, env )。環境變量可以非常方便地在不同的部署間做修改,卻不動一行代碼;與配置文件不同,不小心把它們簽入代碼庫的概率微乎其微;與一些傳統的解決配置問題的機制(比如 Java 的屬性配置文件)相比,環境變量與語言和系統無關。
鴻蒙官方戰略合作共建——HarmonyOS技術社區
基于數據庫管理(jm-settings)
2.1 設計 Key-Value 表
CREATE TABLE `t_base_settings` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `keyword` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '關鍵詞, PAY.ALI PAY.MP', `content` text COLLATE utf8mb4_unicode_ci COMMENT '配置內容', `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 調用即可 }
項目名 | 描述 | 地址 |
---|---|---|
jm-settings | 基于 DB 的配置管理核心庫 | https://github.com/jimoos-cn/... |
huawei-obs | 基于 jm-settings 實現的華為obs 配置管理 | https://github.com/jimoos-cn/... |
感謝各位的閱讀,以上就是“高效率配置管理的方法有哪些”的內容了,經過本文的學習后,相信大家對高效率配置管理的方法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。