XConf : Golang 构建的开源分布式配置中心 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xuxu555
V2EX    分享创造

XConf : Golang 构建的开源分布式配置中心

  •  
  •   xuxu555
    Allenxuxu 2020-02-10 10:27:06 +08:00 3541 次点击
    这是一个创建于 2077 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Github 项目地址 | 线上 demo

    微服务架构愈演愈烈,但是社区一直缺少一个部署简便,高可用的配置中心。 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 当前还在持续开发中,欢迎大家的加入

    Github 项目地址 | 线上 demo


    管理页面截图:

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2536 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 10:39 PVG 18:39 LAX 03:39 JFK 06:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86