当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

golang consul tools

操作 consul 键值的工具
授权协议 Apache-2.0
开发语言 Google Go
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 曹君墨
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

golang consul tools 的一个操作 consul 键值的工具,支持结构体整体打包查询及更新。

使用

安装

go get -u github.com/xxjwxc/consult@master

新建一个连接

import (
	"github.com/xxjwxc/consult/consulkv"
)

conf := consulkv.NewConfig()

or

With Options

conf := consulkv.NewConfig(
    consulkv.WithPrefix(prefix),             // consul kv 前缀
    consulkv.WithAddress(address),           // consul 地址
    consulkv.WithAuth(username, password),   // cosul 用户密码
    consulkv.WithToken(token),               // cousl token
    consulkv.WithLoger(loger),               // loger
)

Init

if err := conf.Init();err !=nil {
    return err
}

Put

if err := conf.Put(key, value);err !=nil {
    return err
}

Delete

if err := conf.Delete(key);err !=nil {
    return err
}

Get

// scan
if err := conf.Get(key).Scan(x);err !=nil {
    return err
}

// get float
float := conf.Get(key).Float()

// get float with default
float := conf.Get(key).Float(defaultFloat)

// get int
i := conf.Get(key).Int()

// get int with default
i := conf.Get(key).Int(defaultInt)

监听

conf.Watch(path, func(r *Result){
    r.Scan(x)
})

停止监听

// stop single watcher
conf.StopWatch(path)

// stop multiple watcher
conf.StopWatch(path1, path2)

// stop all watcher
conf.StopWatch()

通过tag自动获取/自动更新

  • 定义变量时添加consul:""标签进行自动注册及获取
import (
	"github.com/xxjwxc/consult"
)

type Info struct {
    Port  string  `yaml:"port" consul:"port"` // 端口号
}

var info Info
consult.AutoLoadConfig(conf, &info) //  自动加载

consult.AutoSetConfig(conf, &info, false) // 执行一次自动更新

完整例子

import (
	"fmt"
	"testing"

	"github.com/xxjwxc/consult/consulkv"
    "github.com/xxjwxc/consult"
)

type Config struct {
	MySQLInfo    MysqlDbInfo `yaml:"mysql_info" consul:"mysql_info"`
	Port         string      `yaml:"port" consul:"port"`                   // 端口号
}

// MysqlDbInfo mysql database information. mysql 数据库信息
type MysqlDbInfo struct {
	Host     string `validate:"required" consul:"host"`     // Host. 地址
	Port     int    `validate:"required" consul:"port"`     // Port 端口号
	Username string `validate:"required" consul:"username"` // Username 用户名
	Password string `consul:"password"`                     // Password 密码
	Database string `validate:"required" consul:"database"` // Database 数据库名
	Type     int    // 数据库类型: 0:mysql , 1:sqlite , 2:mssql
}

func main() {
	conf := consulkv.NewConfig(
		consulkv.WithPrefix("service/servername"),      // consul kv prefix
		consulkv.WithAddress("192.155.1.150:8500"), // consul address
	)
	if err := conf.Init(); err != nil {
		mylog.Error(err)
		return
	}

	var config Config
	consult.AutoLoadConfig(conf, &config) //  自动加载
	fmt.Println(config)

	consult.AutoSetConfig(conf, &config, false) // 执行一次更新
	fmt.Println(config)
}
  •   go-micro的简介: 可插入RPC分布式系统开发的框架,支持json,proto -rpc的编码方式,可使用consul或者其它方式的服务发现,默认是consul提供随机散列的负载均衡。      1.服务发现  2.编码解码 3.服务端,客户端 4.发布订阅消息   以下是详情说明下: 1.安装 micro install $ go get -u github.com/micro/mic

  • consul 介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。使用起来也较 为简单。Cons

  • golang和java by Harshavardhana 通过Harshavardhana 比较Go和Java的早期 (Comparing early days of Go and Java) In the last 2 years Golang (or simply ‘Go’) has raised to the ranks of mainstream programming language

 相关资料
  • whistle的操作值可以分两类,字符串和JSON对象。 如果字符串不包含空格,可以直接写到配置里面: pattern opProtocol://(strValue) # 有些操作值不能放到本地文件,则可以不用括号,如:proxy、referer等等,具体参见协议列表 pattern opProtocol://strValue 如果字符串里面包含空格,则可以把操作值先放到whistle界

  • 外键操作 Phinx 支持创建外键限制数据表。下面是一个外键创建例子 <?php use Phinx\Migration\AbstractMigration; class MyNewMigration extends AbstractMigration { /** * Migrate Up. */ public function up() {

  • 应用程序具有上下文路径-->/spring-form-simple-project 因此,为了访问,我使用: 这个控制器又返回student.jsp,当提交这个student.jsp时,它用-->@RequestMapping(value=“/AddStudent”,method=RequestMethod.post)调用controller 任何关于这通常如何工作的指示都将是有帮助的。 谢谢!

  • 本文向大家介绍C#获取注册表指定键值操作,包括了C#获取注册表指定键值操作的使用技巧和注意事项,需要的朋友参考一下 某些程序必须依赖指定运行环境。那么读取注册表来判断此电脑是否有执行环境是个很不错的办法。因为每个软件安装之后都会在注册表中注册对应的键值,并且有些键值是独一无二的。 那么首先就需要找到那个具体的独一无二的键值,以便程序在运行之前能够去读取以判断。 代码如下: 现在查找含有E:\Arc

  • 我有Spark 1.5.0的代码。 案例类myCaseClass(user\u id:String,description:String) 这是我的自定义项 这是我生成数据帧的地方 现在,我想对这个有两列(都是字符串)的DF执行redueByKey操作。我的user\u id不是唯一的,我希望包含给定user\u id的所有值/描述条目。 我怎样才能做到这一点? 我可以做这样的事情: 但是我如何在

  • 装饰器 # functools_partial.py import functools def myfunc(a, b=2): "Docstring for myfunc()." print(' called myfunc with:', (a, b)) def show_details(name, f, is_partial=False): "Show deta

  • 编码和解码简单数据类型 # json_simple_types.py import json data = [{'a': 'A', 'b': (2, 4), 'c': 3.0}] print('DATA:', repr(data)) data_string = json.dumps(data) print('JSON:', data_string) # json_simple_types_d

  • UUID 1 - IEEE 802 MAC Address # uuid_getnode.py import uuid print(hex(uuid.getnode())) # uuid_uuid1.py import uuid u = uuid.uuid1() print(u) print(type(u)) print('bytes :', repr(u.bytes)) print(