内容简介:最近有使用携程开源的apollo的好处在于方便管控,热更新。但是实际开发过程中,更新配置非常麻烦,需要去配置中心更新配置,然后发布,然后等待 5-10s等配置热更新,但是通常来说,诸如数据库等配置是不会更新的,因为通常数据库连接池会在程序启动的时候初始化,之后 就不会再更新。此外,使用方式也不是很方便,这样程序中充斥着上面的代码,反而不如所以我心目中的配置中心应当是:
最近有使用携程开源的 apollo
。Golang的客户端的使用用法大概是 agollo.GetStringValue("GRPCAddr", "")
这样。
apollo的好处在于方便管控,热更新。但是实际开发过程中,更新配置非常麻烦,需要去配置中心更新配置,然后发布,然后等待
5-10s等配置热更新,但是通常来说,诸如数据库等配置是不会更新的,因为通常数据库连接池会在程序启动的时候初始化,之后
就不会再更新。此外,使用方式也不是很方便,这样程序中充斥着上面的代码,反而不如 config.GRPCAddr
这样来的简介明了。
所以我心目中的配置中心应当是:
- 遵守 12 factors,所有配置从环境变量中读取 - 配置写在配置文件中例如 `k8s/deploy.yml` 或者 `docker-compose.yml` 中,然后进行加密,对应 工具 拉起程序之后会把配置 写入环境变量, 程序启动之后会从环境变量读取 - 配置文件需要加密,重要的事情再强调一遍 - 配置使用一个单例,将配置写入到单例的某个属性中
例如Python:
from loka import LokaConfig
class Config(LokaConfig):
MYSQL_URI = "mysql://root@127.0.0.1:3306"
LISTEN_PORT = 8080
config = Config()
# below is just for test
print(config.MYSQL_URI, type(config.MYSQL_URI))
print(config.LISTEN_PORT, type(config.LISTEN_PORT))
例如Golang:
main() {
// Config is test demo
type Config struct {
Foo string
Bar string
Boolean bool
ReplicaNum int
}
c := Config{Foo: "hello"}
log.Printf("before, c: %+v", c)
LoadFromEnv(&c)
log.Printf("after, c: %+v", c)
}
参考资料:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 谈我心目中的推荐系统架构
- HTTP协议调试工具汇总,你心目中应该是什么样的?
- 用Python解读“女神大会”,直男心目中的女神是这样的~
- 6、如何获取配置中心的配置
- React降级配置及Ant Design配置
- vscode 配置eslint 开发vue的相关配置
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Mechanics of Web Handling
David R. Roisum
This unique book covers many aspects of web handling for manufacturing, converting, and printing. The book is applicable to any web including paper, film, foil, nonwovens, and textiles. The Mech......一起来看看 《The Mechanics of Web Handling》 这本书的介绍吧!