成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全程干貨分享:四個方法學會高效率配置管理!

運維 數據庫運維
好的配置管理 是部署的第一步,通常,應用的 配置 在不同 部署 (預發布、生產環境、開發環境等等)間會有很大差異。

Spring-boot 基于數據庫的配置管理

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

配置管理 做了什么

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

這其中包括:

  • 數據庫,Redis,以及其他 后端服務 的配置
  • 第三方服務的Key,如 存儲、推送等
  • 每份部署特有的配置,如域名等

配置管理的 目標

  • 一份基準代碼,多份部署,在環境中存儲配置
    配置文件隨著納入版本控制系統提交,引起多個版本 Profile 管理。
  • 統一管理
    如果不統一管理,需要在多處修改配置,容易造成遺忘,也增加學習成本。
  • 密鑰(配置)安全
    判斷一個應用是否正確地將配置排除在代碼之外,一個簡單的方法是看該應用的基準代碼是否可以立刻開源,而不用擔心會暴露任何敏感的信息。

配置管理的現行方案

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

基于數據庫的配置管理

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

  1. 配置 Application.yml

配置DB 連接的環境變量 覆蓋 原Application.yml 的數據庫連接變量。

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

  1. 基于數據庫管理(jm-settings)

    2.1 設計 Key-Value 表

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

2.2 Spring-boot @Bean 注入

聲明 Property

  1. /** 
  2.  * 華為 OBS 配置 
  3.  * @author <a href="https://github.com/keepcleargas/">keepcleargas</a> 
  4.  * @version 1.0 Created in 2021/03/23 10:56 
  5.  */ 
  6. @Data 
  7. public class HuaweiObsProperties { 
  8.     public static final String KEY = "huawei.obs"
  9.     private String accessKey; 
  10.     private String secretKey; 
  11.     private String endPoint; 
  12.     /** 
  13.      * 失效時間(分鐘) 
  14.      */ 
  15.     private Long duration = 3600L; 
  16.     /** 
  17.      * buckets 
  18.      */ 
  19.     private List<Bucket> buckets; 
  20.  
  21.     @Data 
  22.     public static final class Bucket { 
  23.         private Integer type; 
  24.         private String bucketName; 
  25.     } 
  26.  
  27.     @JsonIgnore 
  28.     public String getBucketNameByType(Integer type) { 
  29.         for (Bucket bucket : buckets) { 
  30.             if (type.equals(bucket.getType())) { 
  31.                 return bucket.getBucketName(); 
  32.             } 
  33.         } 
  34.         throw new IllegalArgumentException("Bucket配置不全!"); 
  35.     } 

Bean 注入類

  1. /** 
  2.  * HuaweiObsProperties Bean 配置類 
  3.  * @author <a href="https://github.com/keepcleargas/">keepcleargas</a> 
  4.  * @version 1.0 Created in 2021/03/23 11:01 
  5.  */ 
  6. @Slf4j 
  7. @Configuration 
  8. public class HuaweiObsConfiguration { 
  9.     @Resource 
  10.     BaseSettingsService baseSettingsService; 
  11.  
  12.     @Bean(name = "huaweiObsProperties"
  13.     public HuaweiObsProperties getHuaweiObsProperties() { 
  14.         HuaweiObsProperties huaweiObsProperties = baseSettingsService.getObjectByKeyword(HuaweiObsProperties.KEY, HuaweiObsProperties.class); 
  15.         return huaweiObsProperties == null ? new HuaweiObsProperties() : huaweiObsProperties; 
  16.     } 

Bean 注入使用

  1. @Slf4j 
  2. @Service 
  3. public class HuaweiObsService { 
  4.  
  5.     @Resource 
  6.     HuaweiObsProperties huaweiObsProperties; 
  7.     //todo 調用即可 

開源地址

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

 

責任編輯:張燕妮 來源: segmentfault.com
相關推薦

2022-11-30 15:22:02

DevOps軟件開發運維

2011-01-11 14:03:52

2018-05-31 21:16:33

DevOps協作工具開發

2023-07-26 07:02:04

2023-04-04 09:44:52

數據中心能源安全

2022-05-04 12:44:57

Python編程語言

2023-11-09 18:07:25

Pycharm插件

2023-10-23 15:02:53

JavaScript

2019-06-25 08:42:13

Linux命令指令

2020-06-04 15:55:54

GitHub代碼開發者

2025-01-15 17:00:00

開發Linux命令

2016-12-29 11:41:45

2011-06-14 18:13:05

網站分析

2015-05-22 14:01:50

編程提高效率

2014-12-12 09:52:04

JavaScript

2015-06-02 09:33:30

編程效率程序員

2020-03-23 08:36:18

Python編程代碼

2023-05-17 16:47:47

物聯網智能建筑

2015-11-06 16:17:00

華為ICTC2015

2010-04-13 15:14:31

Oracle優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久免费软件 | 亚洲精品视频一区二区三区 | 奇米影视首页 | 中文字幕免费在线 | 日韩一二三区 | 国产在线观 | 天天精品在线 | 精品久久久久一区 | 免费成人午夜 | 亚洲自拍一区在线观看 | 中文字幕视频在线观看 | 亚洲黄色网址视频 | 国产又色又爽又黄又免费 | 天天插天天操 | 中文字幕在线观看一区二区 | 欧美一区二区三区在线观看视频 | 亚洲视频在线观看 | 夜夜骑首页 | 久久久久久久av | 精品国产99 | 精品亚洲二区 | 久久精品欧美一区二区三区不卡 | 一区二区三区亚洲精品国 | 激情一区二区三区 | 一区二区三区四区在线 | 国产精久久久久久久 | 澳门永久av免费网站 | 亚洲一区欧美 | 久久99精品久久久久久狂牛 | 国产欧美一区二区精品忘忧草 | 日韩一级免费电影 | 99综合网| 中文字幕一二三 | 久久这里有精品 | 午夜视频免费在线 | 国产色在线| 在线看片网站 | 一区二区视频在线 | 欧美日韩综合精品 | 国产婷婷在线视频 | 国产一区二区三区免费 |