Viper for Nacos 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Viper for Nacos 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Viper for Nacos 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Viper for Nacos 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Viper for Nacos 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 yoyofx
适用人群 未知
收录时间 2021-05-10

软件简介

目前 Viper 支持的 Remote 远程读取配置如 etcd, consul;目前还没有对Nacos进行支持。Viper for Nacos 是一个开源的 Nacos 的 Viper 支持库,实现这个仓库的主要目的是为了,最终集成到我们的 yoyogo 框架中。

Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。

它支持以下特性:#

  • 设置默认值
  • 从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息
  • 实时监控和重新读取配置文件(可选)
  • 从环境变量中读取
  • 从远程配置系统remote(etcd或Consul)读取并监控配置变化
  • 从命令行参数读取配置
  • 从buffer读取配置
  • 显式配置值

读取本地文件#

viper.SetConfigFile("./config.yaml")   // 指定配置文件路径
viper.SetConfigName("config")          // 配置文件名称(无扩展名)
viper.SetConfigType("yaml")            // 如果配置文件的名称中没有扩展名,则需要配置此项
viper.AddConfigPath("/etc/appname/")   // 查找配置文件所在的路径
viper.AddConfigPath("$HOME/.appname")  // 多次调用以添加多个搜索路径
viper.AddConfigPath(".")               // 还可以在工作目录中查找配置
err := viper.ReadInConfig()            // 查找并读取配置文件
if err != nil {                        // 处理读取配置文件的错误
	panic(fmt.Errorf("Fatal error config file: %s \n", err))
}

本篇文章重点着重于remote部分,Nacos的支持.

Viper remote#

在Viper中启用远程支持,需要在代码中匿名导入viper/remote这个包。

import _ "github.com/spf13/viper/remote"

通过remote,Viper将支持读取从Key/Value存储( 例如etcd或Consul或本文中的Nacos ).

Viper加载配置值的优先级#

磁盘上的配置文件 > 命令行标志位 > 环境变量 > 远程Key/Value存储 > 默认值 。

Nacos 支持#

引用我们的开源库 https://github.com/yoyofxteam/nacos-viper-remote

import (
	"github.com/spf13/viper"
	remote "github.com/yoyofxteam/nacos-viper-remote"
)

在项目中使用:

runtime_viper := viper.New()
// 配置 Viper for Nacos 的远程仓库参数
remote.SetOptions(&remote.Option{
   Url:         "localhost",            // nacos server 多地址需要地址用;号隔开,如 Url: "loc1;loc2;loc3"
   Port:        80,                     // nacos server端口号
   NamespaceId: "public",               // nacos namespace
   GroupName:   "DEFAULT_GROUP",        // nacos group
   Config: 	remote.Config{ DataId: "config_dev" }, // nacos DataID
   Auth:        nil,                    // 如果需要验证登录,需要此参数
})

err := remote_viper.AddRemoteProvider("nacos", "localhost", "")
remote_viper.SetConfigType("yaml")

_ = remote_viper.ReadRemoteConfig()             //sync get remote configs to remote_viper instance memory . for example , remote_viper.GetString(key)
_ = remote_viper.WatchRemoteConfigOnChannel()   //异步监听Nacos中的配置变化,如发生配置更改,会直接同步到 viper实例中。

appName := remote_viper.GetString("key")   // sync get config by key

fmt.Println(appName)

// 这里不是必须的,只为了监控Demo中的配置变化,并打印出来
go func() {
    for {
        time.Sleep(time.Second * 30) // 每30秒检查配置是否发生变化 
        appName = config_viper.GetString("yoyogo.application.name")
        fmt.Println(appName)
    }
}()

最后#

实现这个仓库的主要目的是为了,最终集成到我们的yoyogo框架中。

本文提及的开源库地址:#

nacos-viper-remote#

https://gitee.com/yoyofx/nacos-viper-remote

yoyogo#

https://gitee.com/yoyofx/yoyogo

🦄🌈 YoyoGo is a simple, light and fast , dependency injection based micro-service framework written in Go. Support Nacos ,Consoul ,Etcd ,Eureka ,kubernetes.

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2019/03/10 18:51

Go之viper配置

这个模块功能强大,读取配置,命令行,监听配置改变。 堪称多面手,在k8s,docker中,都多有应用。 这套应用,主要包括cobra,pflag,viper三件套。 了解得差不多啦。。。:) package main import (   "context"   "fmt"   "github.com/fsnotify/fsnotify"   "github.com/spf13/pflag"   "github.com/spf13/viper" ) type CompanyInfomation struct {   Name string   MarketCapitalization int64   Emp...

0
0
发表于开发技能专区
01/08 08:00

viper 源码分析

库目录: github.com/spf13/viper 什么是Viper? Viper是Go应用程序的完整配置解决方案,包括12-Factor应用程序。它旨在在应用程序中工作,并可以处理所有类型的配置需求和格式。它支持: 设置默认值 从JSON,TOML,YAML,HCL和Java属性配置文件中读取 实时观看和重新读取配置文件(可选) 从环境变量中读取 从远程配置系统(etcd或Consul)读取,并观察变化 从命令行标志读取 从缓冲区读取 设置显式值 Viper可以被认为是所有应...

0
0
发表了博客
2020/01/20 08:18

Go 每日一库之 viper

## 简介 上一篇文章介绍 [cobra](https://darjun.github.io/2020/01/17/godailylib/cobra/) 的时候提到了 [viper](https://github.com/spf13/viper),今天我们就来介绍一下这个库。 viper 是一个配置解决方案,拥有丰富的特性: * 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件; * 可以设置监听配置文件的修改,修改时自动加载新的配置; * 从环境变量、命令行选项和`io.Reader`中读取配置; * 从远程...

0
0
发表于开发技能专区
2016/06/01 17:43

PhalGo-Viper获取配置

#PhalGo-Viper获取配置 ![](http://i.imgur.com/8ahAJXa.png) **viper项目地址:**[https://github.com/spf13/viper](https://github.com/spf13/viper "https://github.com/spf13/viper") ##什么是viper viper是国外大神**spf13**编写的开源配置解决方案,viper拥有一下功能以及特性如下: - 设置默认值 - 从JSON,toml YAML,HCl,和java属性配置文件 - 从环境变量env读取值 - 读缓冲区 - 远程读取配置文件 - key不区分大小写 ##为...

0
5
发表了博客
2020/08/02 18:16

Go viper 配置文件读取工具

viper github API Viper-Go一站式配置管理工具 安装 go get github.com/spf13/viper 简单例子 /* 目录 - main.go - config.yaml */ func main(){ viper.SetConfigName("config") // 设置配置名称 viper.SetConfigFile("config.yaml") // 设置配置文件路径 // 读取配置 if err := viper.ReadInConfig(); err != nil{ log.Fatal(err) } // 获取配置数据...

0
0
发表于云计算专区
2020/07/01 14:53

Viper解析&加载配置

# Viper解析&加载配置 ### 1 Viper是什么 Viper是一个方便Go语言应用程序处理配置信息的库。它可以处理多种格式的配置。它支持的特性: - 设置默认值 - 从JSON、TOML、YAML、HCL和Java properties文件中读取配置数据 - 可以监视配置文件的变动、重新读取配置文件 - 从环境变量中读取配置数据 - 从远端配置系统中读取数据,并监视它们(比如etcd、Consul) - 从命令参数中读物配置 - 从buffer中读取 - 调用函数设置配置信息 ### ...

0
0
发表了博客
2020/01/20 08:18

Go 每日一库之 viper

简介 上一篇文章介绍 cobra 的时候提到了 viper,今天我们就来介绍一下这个库。 viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件; 可以设置监听配置文件的修改,修改时自动加载新的配置; 从环境变量、命令行选项和io.Reader中读取配置; 从远程配置系统中读取和监听修改,如 etcd/Consul; 代码逻辑中显示设置键值。 快速使用 安装: $ go get github.co...

0
0
发表于云计算专区
2020/07/01 15:01

Viper解析&加载配置

# Viper解析&加载配置 ### 1 Viper是什么 Viper是一个方便Go语言应用程序处理配置信息的库。它可以处理多种格式的配置。它支持的特性: - 设置默认值 - 从JSON、TOML、YAML、HCL和Java properties文件中读取配置数据 - 可以监视配置文件的变动、重新读取配置文件 - 从环境变量中读取配置数据 - 从远端配置系统中读取数据,并监视它们(比如etcd、Consul) - 从命令参数中读物配置 - 从buffer中读取 - 调用函数设置配置信息 ### ...

0
0
发表了博客
2019/08/16 15:15

Nacos(一):Nacos介绍

前言 6月份阿里开源的Nacos出了1.0.1版本,从去年7月份第一个release版本到现在一直在默默关注 官方的版本规划为:Nacos从0.8.0开始支持生产可用,1.0版本可大规模生产可用,2.0版本接入k8s、SpringCloud、ServiceMesh、ServerLess 公司目前的项目都是Springcloud,由于eureka2.X的断更、以及Nacos面世,所以自然而然最近就进行了一次试水爬坑,虽然过程艰苦,但是最终效果似乎还不错。 本文主要从以下几点来带大家熟悉下Nacos...

0
2
2015/08/07 17:27

用 VIPER 构建 iOS 应用架构(2)

**【编者按】本篇文章由 Jeff Gilbert 和 Conrad Stoll 共同编写,通过构建一个基础示例应用,深入了解 VIPER,并从视图、交互器等多个部件理清 VIPER 的整体布局及思路。通过 VIPER 构建 iOS 应用架构,提升应用质量,迎接应用构建的新机遇!本文系 [OneAPM](http://oneapm.com/index.html?utm_source=Common&utm_medium=Articles&utm_campaign=TechnicalArticles&from=matefiseco) 工程师编译整理,这是本系列的第 2 篇文章。...

0
15
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
3 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部