微服务架构愈演愈烈,但是社区一直缺少一个部署简便,高可用的配置中心。 XConf
是一个基于 go-micro 微服务框架构建的分布式配置中心,提供配置的管理与发布、实时推送。
配置中心底层存储采用 MySQL 数据库,主要分为三个服务:
配置中心本身就是一个“读多写少”的服务,所以在 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 当前还在持续开发中,欢迎大家的加入
管理页面截图: