高效率配置管理的方法有哪些
这篇文章主要讲解了“高效率配置管理的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“高效率配置管理的方法有哪些”吧!
Spring-boot 基于数据库的配置管理
好的配置管理 是部署的第一步。
配置管理 做了什么
通常,应用的 配置 在不同 部署 (预发布、生产环境、开发环境等等)间会有很大差异
这其中包括:
数据库,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
@Data public class HuaweiObsProperties { public static final String KEY = "huawei.obs"; private String accessKey; private String secretKey; private String endPoint; private Long duration = 3600L; 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
注入类
@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/... |
感谢各位的阅读,以上就是“高效率配置管理的方法有哪些”的内容了,经过本文的学习后,相信大家对高效率配置管理的方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341