什么是配置中心

配置中心,顾名思义,将配置中心化,说白了就是将配置从应用中抽取出来,统一管理,优雅的解决了配置的动态变更、权限管理、持久化、运维成本等问题。

配置与应用程序隔离开,单独管理配置。 总得来说,配置中心就是一种统一管理各种应用配置的基础服务组件。

  • 配置集中管理、统一标准
  • 配置与应用分离
  • 实时更新
  • 高可用

配置中心对比

功能点优先级ctrip apolloalibaba nacos
静态配置管理支持支持
动态配置管理支持支持
统一管理支持支持
多环境支持支持
本地配置缓存支持支持
配置生效时间支持(HTTP长轮询1s内)支持(HTTP长轮询1s内)
版本管理支持支持
权限管理支持不支持
灰度发布支持不支持
配置回滚支持支持
监听查询支持支持
多语言主流语言,Open API主流语言,Open API
配置格式校验支持支持
配置界面统一界面统一界面
业务系统侵入性侵入性弱侵入性弱
单机读(QPS)900015000
单机写11001800
集群读(QPS)3机2700045000
集群写 3机33005600

apollo逻辑图

apollo架构图

apollo源码

apollo 控制台

代码示例

apollo.go

/**
 * Createby GoLand
 * User xzw jsjxzw@163.com
 * Date 2021/4/26
 * Time 下午2:53
 */

package apollo

import (
    "github.com/apolloconfig/agollo/v4"
    "github.com/apolloconfig/agollo/v4/agcache/memory"
    "github.com/apolloconfig/agollo/v4/component/log"
    "github.com/apolloconfig/agollo/v4/env/config"
)

var client *agollo.Client

func init() {
    // apollo配置
    c := &config.AppConfig{
        AppID:          "G02-go-test",
        Cluster:        "default", // 一次限制一个集群数据
        NamespaceName:  "redis,application",
        IP:             "http://d-apollo.yundasys.com:30224",
        IsBackupConfig: false,
    }
    agollo.SetCache(&memory.DefaultCacheFactory{})
    agollo.SetLogger(&log.DefaultLogger{})
    // 创建客户端
    cli, err := agollo.StartWithConfig(func() (appConfig *config.AppConfig, err error) {
        return c, nil
    })
    if err != nil {
        panic(err)
    }
    client = cli
}

func GetClient() *agollo.Client {
    return client
}

main.go

/**
 * Createby GoLand
 * User xzw jsjxzw@163.com
 * Date 2021/4/26
 * Time 下午2:51
 */

package main

import (
    "github.com/gin-gonic/gin"
    "imooc.com/ccmouse/learngo/apollo/apollo"
)

func main() {

    r := gin.Default()
    client := apollo.GetClient()


    r.GET("/", func(c *gin.Context) {
        cache := client.GetConfigCache("redis")
        val,_ := cache.Get("host")
        c.JSON(200, gin.H{"message": val})
    })
    r.Run()
}

Scroll to Top