微服务架构愈演愈烈,但是社区一直缺少一个部署简便,高可用的配置中心。
XConf
是一个基于 go-micro 微服务框架构建的分布式配置中心,提供配置的管理与发布、实时推送。
配置中心底层存储采用 MySQL 数据库,主要分为三个服务:
- config-srv : 负责底层配置的读写
- admin-api : 负责与管理页面交互,相关鉴权,账号体系也会与此模块交互
- agent-api : 负责与客户端交互,提供配置读取和推送。
配置中心本身就是一个“读多写少”的服务,所以在 agent-api 服务中增加缓存,从而有效增加并发性能。得益于 go-micro 框架,三个服务可以便捷的横向伸缩。例如,当获取配置的客户端较多时,可以增加 agent-api 实例。
配置获取采用 HTTP 方式实现,配置的实时推送采用 HTTP Long Polling(长轮询)方式实现。选择 HTTP 方式,更加便于各种语言接入配置中心。
Golang 语言读取配置和监听实时配置推送( ➡️ 源码地址 ):
package main import ( "github.com/micro-in-cn/XConf/client/source" "github.com/micro/go-micro/v2/config" "github.com/micro/go-micro/v2/util/log" ) func main() { c, err := config.NewConfig( config.WithSource( source.NewSource("app", "dev", "test", source.WithURL("http://xconf.mogutou.xyz")))) if err != nil { panic(err) } log.Info("read: ", string(c.Get().Bytes())) // Watch 返回前 micro config 会调用 Read 读一次配置 w, err := c.Watch() if err != nil { panic(err) } for { // 会比较 value,内容不变不会返回 v, err := w.Next() if err != nil { panic(err) } log.Info("watch: ", string(v.Bytes())) } }
XConf 当前还在持续开发中,欢迎大家的加入 👏👏
管理页面截图:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于