Go 多环境下配置管理方案(多种方案)

目录

需求

方案1:配置文件管理

方案2:集中式管理配置

需求

开发过程中开发者经常面对的一个需求就是:一个项目可能会在不同的环境下运行,本地开发环境、测试环境、灰度环境、生产环境。每个环境的参数和配置可能都会不相同,如服务器配置、数据库连接。为避免各环境产生数据混乱,让程序执行时在不同的环境中调用正确的配置,可以这样设计:

命令唤醒程序--->识别环境--->根据环境读取对应配置文件

方案1:配置文件管理

根据环境创建配置文件,多个环境多个配置文件。如开发环境 config-dev.yaml,测试环境 config-test.yaml,预发环境 config-pre.yaml,生产环境 config-prod.yaml。

在代码层面上控制想要使用的配置文件,然后使用第三方包 Flag 或者 viper 读取配置文件。该方式不够自动化,如果每次都需要修改代码,上线后如果忘记修改了就容易造成问题。

func main(){ configFile := './config/config-dev.yaml' // './config/confg-test.yaml' //使用 viper v := viper.New() v.SetConfigFile(configFile) v.SetConfigType("yaml") if err := v.ReadInConfig(); err != nil { panic(fmt.Errorf("read config failed: %s \n", err)) } }

进一步优化,通过配置环境变量,然后通过环境变量来区分配置文件。首先在电脑上配置环境变量:

vim .bash_profile export GO_ENV= true source .bash_profile

在代码层面上就可以通过环境配置来区分配置文件

func main(){ configEnv := os.Getenv("GO_ENV"); switch configEnv { case "dev": configPath = "./config-dev.yaml" case "test": configPath = "./config-test.yaml" case "prod": configPath = "./config-prod.yaml" } }

通过设置环境变量读取配置文件,这种方式使用方便,现在很多开发者都会这样使用,但是当服务在集群环境上可能会有很多问题。

配置文件也存在于项目中,基本所有开发者都能看到生产环境配置。生产环境配置因之开放给部分人员

如果有很多个微服务,当我们修改配置时就需要全部的配置都需要修改,增加工作量。我们需要一个可以统一管理的地方

统一管理配置文件,所有服务都只针对一份配置文件,可以保证唯一性;配置环境也需要权限隔离,部分开发者拥有生产配置权限。

方案2:集中式管理配置

通过使用 Redis 统一管理,在比较大规模的微服务体系中可以引入配置中心。集中式管理的优势:

安全:集中管理而不是在代码中,防止配置泄露

动态:支持动态调整配置,而不影响其他服务

实时:修改配置,即时生效,无需重启服务器

方式1:如果使用 Redis ,可以使用工具包 github.com/gogap/env_json

func main() { data, _ := ioutil.ReadFile("./db.conf") dbConf := DBConfig{} if err := env_json.Unmarshal(data, &dbConf); err != nil { fmt.Print(err) return } fmt.Println(dbConf) }

方式2:如果使用配置中心服务,可以使用 Nacos、Apollo等 。后续继续学习更新这部分知识

到此这篇关于Go 多环境下配置管理方案的文章就介绍到这了,更多相关go多环境配置管理方案内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    军用物资9000元z77游戏安装方案

    军用物资9000元z77游戏安装方案,,在英特尔Ivy Bridge平台,主板制造商z77主板已经有些无法抵御孤独。最近,有z77a-gd55 MSI主板经销商成立一

    计算机蓝屏故障的计算机蓝屏解决方案

    计算机蓝屏故障的计算机蓝屏解决方案,,电脑蓝屏电脑故障经常使用电脑的朋友经常遇到,因为电脑蓝屏是一个非常普遍的现象,所以很难预测,什么时