最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go?多環(huán)境下配置管理方案(多種方案)

 更新時間:2022年06月28日 14:54:09   作者:一名砍柴工  
這篇文章主要介紹了Go?多環(huán)境下配置管理方案,方案一配置文件管理,方案二集中式管理配置,每種方案給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

需求

開發(fā)過程中開發(fā)者經常面對的一個需求就是:一個項目可能會在不同的環(huán)境下運行,本地開發(fā)環(huán)境、測試環(huán)境、灰度環(huán)境、生產環(huán)境。每個環(huán)境的參數和配置可能都會不相同,如服務器配置、數據庫連接。為避免各環(huán)境產生數據混亂,讓程序執(zhí)行時在不同的環(huán)境中調用正確的配置,可以這樣設計:

命令喚醒程序--->識別環(huán)境--->根據環(huán)境讀取對應配置文件

方案1:配置文件管理

根據環(huán)境創(chuàng)建配置文件,多個環(huán)境多個配置文件。如開發(fā)環(huán)境 config-dev.yaml,測試環(huán)境 config-test.yaml,預發(fā)環(huán)境 config-pre.yaml,生產環(huán)境 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))
	}    
}

進一步優(yōu)化,通過配置環(huán)境變量,然后通過環(huán)境變量來區(qū)分配置文件。首先在電腦上配置環(huán)境變量:

vim .bash_profile
export GO_ENV= true
source .bash_profile 

在代碼層面上就可以通過環(huán)境配置來區(qū)分配置文件

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"
	}
}

通過設置環(huán)境變量讀取配置文件,這種方式使用方便,現在很多開發(fā)者都會這樣使用,但是當服務在集群環(huán)境上可能會有很多問題。

  • 配置文件也存在于項目中,基本所有開發(fā)者都能看到生產環(huán)境配置。生產環(huán)境配置因之開放給部分人員
  • 如果有很多個微服務,當我們修改配置時就需要全部的配置都需要修改,增加工作量。我們需要一個可以統一管理的地方

統一管理配置文件,所有服務都只針對一份配置文件,可以保證唯一性;配置環(huán)境也需要權限隔離,部分開發(fā)者擁有生產配置權限。

方案2:集中式管理配置

通過使用 Redis 統一管理,在比較大規(guī)模的微服務體系中可以引入配置中心。集中式管理的優(yōu)勢:

  • 安全:集中管理而不是在代碼中,防止配置泄露
  • 動態(tài):支持動態(tài)調整配置,而不影響其他服務
  • 實時:修改配置,即時生效,無需重啟服務器

方式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等 。后續(xù)繼續(xù)學習更新這部分知識

到此這篇關于Go 多環(huán)境下配置管理方案的文章就介紹到這了,更多相關go多環(huán)境配置管理方案內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • go語言中函數的用法示例詳解

    go語言中函數的用法示例詳解

    Go語言中函數是基本的代碼組織單元,用于封裝一段代碼,使代碼結構更清晰、可復用,本文詳細講解了基本函數定義、參數傳遞、返回值、多返回值、匿名函數、遞歸和defer語句的使用,感興趣的朋友一起看看吧
    2024-10-10
  • go按行讀取文件的三種實現方式匯總

    go按行讀取文件的三種實現方式匯總

    最近有遇到需要用go讀取文件的情況,下面這篇文章主要給大家介紹了關于go按行讀取文件的三種實現方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • golang如何實現mapreduce單進程版本詳解

    golang如何實現mapreduce單進程版本詳解

    這篇文章主要給大家介紹了關于golang如何實現mapreduce單進程版本的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • Golang學習筆記之延遲函數(defer)的使用小結

    Golang學習筆記之延遲函數(defer)的使用小結

    這篇文章主要介紹了Golang學習筆記之延遲函數(defer),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Golang應用程序性能優(yōu)化技巧分享

    Golang應用程序性能優(yōu)化技巧分享

    隨著科技的進步,人人都想要快速的應用,這就需要優(yōu)化您的應用程序性能。本文為大家整理了一些Golang應用程序性能優(yōu)化的技巧,希望對大家有所幫助
    2023-04-04
  • Golang中int類型和字符串類型相互轉換的實現方法

    Golang中int類型和字符串類型相互轉換的實現方法

    在日常開發(fā)中,經常需要將數字轉換為字符串或者將字符串轉換為數字,在 Golang 中,有一些很簡便的方法可以實現這個功能,接下來就詳細講解一下如何實現 int 類型和字符串類型之間的互相轉換,需要的朋友可以參考下
    2023-09-09
  • 深入理解Golang?make和new的區(qū)別及實現原理

    深入理解Golang?make和new的區(qū)別及實現原理

    在Go語言中,有兩個比較雷同的內置函數,分別是new和make方法,二者都可以用來分配內存,那他們有什么區(qū)別呢?下面我們就從底層來分析一下二者的不同。感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助
    2022-10-10
  • go 類型轉換方式(interface 類型的轉換)

    go 類型轉換方式(interface 類型的轉換)

    這篇文章主要介紹了go 類型轉換方式(interface 類型的轉換),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • go語言reflect.Type?和?reflect.Value?應用示例詳解

    go語言reflect.Type?和?reflect.Value?應用示例詳解

    這篇文章主要為大家介紹了go語言reflect.Type?和?reflect.Value?應用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • go實現thrift的網絡傳輸性能及需要注意問題示例解析

    go實現thrift的網絡傳輸性能及需要注意問題示例解析

    這篇文章主要為大家介紹了go實現thrift的網絡傳輸性能及需要注意問題示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09

最新評論

铁力市| 东乌珠穆沁旗| 遵化市| 徐州市| 建阳市| 静海县| 清原| 达日县| 中西区| 临沧市| 公主岭市| 江口县| 阜平县| 呈贡县| 沧州市| 夏津县| 马边| 晴隆县| 牟定县| 左权县| 北海市| 虹口区| 德安县| 外汇| 乌拉特后旗| 张家口市| 衢州市| 韶山市| 庆阳市| 绥棱县| 寿宁县| 泰来县| 庆云县| 麻江县| 沁阳市| 岳普湖县| 阿拉善盟| 湖州市| 遂川县| 桂东县| 柞水县|