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

2020-02-10 10:27:06 +08:00
 xuxu555

Github 项目地址 | 线上 demo

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

Github 项目地址 | 线上 demo


管理页面截图:

3185 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/643378

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX