「騰訊開源Tars」C++ RPC 框架 入門:環境變量

「騰訊開源Tars」C++ RPC 框架 入門:環境變量

我們在linux下跑的服務有的時候需要配置對應的參數傳遞到進程或者程序依賴的一些包的路徑需要提前指定,比如為了讓程序支持根據不同環境(開發、測試、預發佈、生產環境)使用不同的host,那麼很多時候我們就可以通過環境變量來傳遞對應的host。比如java程序需要指定jdk 的路徑依賴JAVA_HOME等等。

那麼tars它支持給服務設定環境變量嗎?答案的肯定的而且有兩種方法:

方法1:

在tars的服務模板文件中:

該路徑下添加對應的環境變量即可:

<tars>

<application>

<server>

env=HOST=http://test.com;|JAVA_HOME=/usr/local/jdk-1.8

tarsnode在拉起服務是會將這裡配置的環境變量以export 的方法添加到tars_start.sh (tarsnode為服務生成的啟動腳本),例如以上的環境變量你在tars_start.sh 將會看到:

export HOST=http://test.com

export JAVA_HOME=/usr/local/jdk-1.8

該方法的優點: 不同的環境只需要配置不同的模板即可,簡單,方便

缺點 : 不能使用自定義的啟動腳本。

方法2:

自定義服務啟動腳本,然後在啟動腳本中加入自己需要的環境變量,同樣可以達到目的。

該方法的缺點就是不同的環境得指定不同的start.sh腳本。

關於環境變量,由於業務進程是由tarsnode進程拉起的,所以業務進程的環境變量默認會繼承tarsnode進程的環境變量,所以如果在tarsnode進程啟動之後,在通過其他一些方法設置系統環境變量此時是不會被tarsnode加載傳到業務進程的。除非啟動tarsnode進程。

大家有關於tars 的環境變量的一些好的建議、問題都可以進行探討學習~


分享到:


相關文章: