hydra ---go 微服务框架之配置中心

188225606 · · 1669 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

hydra配置中心 ================================= [github.com/micro-plat/hydra](https://github.com/micro-plat/hydra) 通过配置中心,集中管理服务器配置,并具有如下特点: 1. 统一配置,本地零配置,解决配置零散分布在每台服务器,导致的不一致问题及服务器数量较多难以维护的问题。 2. 热更新,所有配置通过配置中心拉取,变更后实时通知到各服务器,服务器根据排号自动更新配置。 3. 可审计,远程配置通过多级审核,避免参数配置错误导致安全事故。 目前支持以下配置中心: * 1. zookeeper,示例: zk://192.168.0.101,192.168.0.102 * 2. etcd,示例:etcd://192.168.0.100 * 3. redis,示例:redis://192.168.0.101,192.168.0.102 * 4. filesystem,示例: fs://../ * 5. local memory 示例: lm://. [github.com/micro-plat/hydra](https://github.com/micro-plat/hydra) 注意:目前配置中心与配置中心共用同一服务器。 #### 1). 配置分类 服务器启动、运行期间的配置信息,分为三类: * 1). 服务器启动参数,如:端口号、连接超时信息、集群模式(对等、主从、分片等) * 2). 服务器组件参数,如:黑名单、限流、安全验证、跨域配置、metric、render,任务信息等 * 3). 应用配置参数,如:数据库配置、缓存配置、消息队列服务器配置等 #### 2). 代码设置 通过`hydra.Conf`进行设置。 除`MQC`消息消费服务启动时需要连接到消息队列服务器外,其它服务均有默认启动参数,无须指定任何配置即可启动。 配置设置方式: ```go hydra.Conf.API(":8071", api.WithTimeout(10, 10)). .BlackList(blacklist.WithIP("222.202.**")) hydra.Conf.Vars().Redis("redis", redis.New("redis", redis.WithAddrs("192.168.0.106"))) ``` 配置依赖于平台名称、系统名称、集群名称等,而这些参数是通过cli命令行指定的,则需要将配置初始化代码放到`hydra.OnReady`中延迟执行: ```go hydra.OnReady(func() { hydra.Conf.Vars() .Redis("redis", redis.New(hydra.G.GetPlatName(), redis.WithAddrs("192.168.0.106"))) }) ``` [github.com/micro-plat/hydra](https://github.com/micro-plat/hydra) #### 3). 配置安装 除`lm`无须安装外,其它配置中心需先安装才能启动。 注意:配置安装与服务启动是两个独立的过程。配置安装的目的是在配置中心生成正确可用的配置,服务启动是从配置中心拉取配置进行服务初始化。两个过程发生在不同时间,一前一后。 由于`lm`具有本地调试的便利性,故将两个过程合二为一,由系统自动完成。 * 1). 命令安装 以`apiserver`为例: ```sh $ ./apiserver conf install --help NAME: apiserver conf install - -安装配置,将配置信息安装到配置中心 USAGE: apiserver conf install [command options] [arguments...] OPTIONS: --registry value, -r value -配置中心地址。格式:proto://host。如:zk://ip1,ip2 或 fs://../ --name value, -n value -服务全名,格式:/平台名称/系统名称/服务器类型/集群名称 --plat value, -p value -平台名称 --system value, -s value -系统名称,默认为当前应用程序名称 --server-types value, -S value -服务类型,有api,web,rpc,cron,mqc,ws --cluster value, -c value -集群名称,默认值为:prod --cover, -v -覆盖配置,覆盖配置中心和本地服务 ``` 根据参数要求即可将本地代码设置的配置信息安装到配置中心。 示例: ```go package main import ( "github.com/micro-plat/hydra" "github.com/micro-plat/hydra/hydra/servers/http" ) func main() { app := hydra.NewApp( hydra.WithServerTypes(http.API), hydra.WithRegistry("zk://192.168.0.109"), hydra.WithPlatName("oms"), hydra.WithSystemName("apiserver"), hydra.WithClusterName("prod"), hydra.WithVersion("1.2.0"), hydra.WithUsage("api接口服务"), ) app.API("/request", request) app.Start() } func request(ctx hydra.IContext) interface{} { return "success" } ``` [github.com/micro-plat/hydra](https://github.com/micro-plat/hydra) 安装配置: ```sh $ go build $ ./apiserver conf install 安装到配置中心: [OK] ``` 查看配置: ```sh $ ./apiserver conf show └─oms └─apiserver └─api └─prod └─conf └─main[1] └─router[2] 请输入数字序号 > ``` * 2). 手动配置 指通过三方工具远程连接到配置中心配置: zookeeper推荐使用工具: ![zooInspector](https://github.com/micro-plat/docs/raw/master/02component/imgs/zooInspector.png) [github.com/micro-plat/hydra](https://github.com/micro-plat/hydra)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1669 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传