iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0

參數大集合

在建構web-server時,總會需要去指定各種參數,像是mysql的位置,redis的位置,server要開哪些通訊埠(port)給使用者呼叫等等,這些參數的導入會是一個很麻煩的問題。
https://ithelp.ithome.com.tw/upload/images/20200909/20129607yE8O3EwnO6.png
以上圖來說,光是mysql master跟slave的設定檔就有六個,加上port跟redis相關的設定,就會變得非常複雜。
如果只有一個環境的話,寫死在程式碼內也是一個選擇,不過當要切換環境,或是要搬移到新的機器上時,就會需要在修改程式碼,並重新編譯。
因此在這邊會建議將參數寫成設定檔,依照不同環境來切換,這樣要轉移到新的環境上,或是要切換資料庫來源也比較方便。

環境變數

在管理設定檔時,有許多方式可以選擇,在這邊先以將設定檔放入環境變數的方式來說明。
環境變數,顧名思義是你所使用的環境當中,舉例來說,當你下

go env

這時出現的GOOS或是GOPATH都是環境變數的一種(如下圖)
https://ithelp.ithome.com.tw/upload/images/20200909/201296074K1E0w8W4b.png

那麼,我們就可以將我們需要的參數放入環境變數,並透過go內的

os.Getenv(key string)

來取得參數
https://ithelp.ithome.com.tw/upload/images/20200909/20129607y5Rzs95Cog.png

以上圖來說,這段程式碼就會取得環境變數內名為MYSQL_ADDR_MASTER的值,並將其值給予config.MysqlMaster
這樣就可以透過依照各種不同的環境來設定不同的參數了。
下一章會介紹另一個用來處理設定檔的套件,其名為Viper。


上一篇
Day3-架構說明之主程式
下一篇
Day5-設定檔套件介紹:Viper
系列文
從0開始的golang web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言