golang consul tools 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
golang consul tools 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
golang consul tools 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
golang consul tools 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
golang consul tools 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache-2.0
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 国产
投 递 者 xxjwxc
适用人群 未知
收录时间 2021-04-28

软件简介

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)
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2019/12/08 19:09

consul golang

服务注册: package main import (   "log"   "github.com/gin-gonic/gin"   consulapi "github.com/hashicorp/consul/api"   "fmt"   "net/http" ) func main() {   // 服务注册   registerServer()   r := gin.Default()   r.GET("/ping", heathCheck)   r.Run() } // consul 服务注册 func registerServer() {   // 创建consul客户端   config := consulapi.DefaultConfig()   config.Address = "172.16.30.129:8500"   client, e...

0
1
发表于开发技能专区
2020/03/05 17:08

Golang 通过 Consul 实现分布式锁

# Golang 通过 Consul 实现分布式锁 # Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议...

0
0
2018/09/16 12:02

Golang 微服务 - 03 以 consul 方式注册服务

安装 Install Consul 下载地址 https://www.consul.io/downloads.html,解压后,将 consul_1.2.3_windows_amd64\consul.exe 拷贝到 GOBIN 目录下(比如:C:\Users\your-host-name\go\bin) Run the Agent 使用 Git Bash Here,输入如下命令,会看到相应日志 $ consul agent -dev ==> Starting Consul agent... ==> Consul agent running! Version: 'v1.2.3' Node ID: '542fc5d7-cb10-22e7-54bc-3c124...

0
0
发表了博客
2018/07/26 09:21

基于consul构建golang系统分布式服务发现机制

原文地址-石匠的Blog: http://www.bugclosed.com/post/5 在分布式架构中,服务治理是一个重要的问题。在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进行服务关系管理,遇到服务关系变化或者增加服务的时候,人肉配置极其麻烦且容易出错。 之前在一个C/C++项目中,采用ZooKeeper进行服务治理,可以很好的维护服务之间的关系,但是使用起来较为麻烦。现在越来越多新的项目采用consul进行服务治理,各方面的评...

0
0
2019/01/02 08:00

TiDB-Tools golang 开发实践

张学程 / PingCAP 核心开发工程师,前网易游戏高级开发工程师。 目前主要从事 TiDB-Tools 的设计与开发工作,专注于数据库、分布式等技术领域。 前言 大家下午好!我叫张学程,现在是 PigCAP 核心开发工程师。主要做 TiDB-Tools 设计和开发的工作,之前也在网易游戏做一些手游开发。首先感谢一下主办方,很开心今天给大家做这个分享。 本次分享将从这3个方面来介绍 TiDB-Tool Golang 开发实践: 一、TiDB 与 TiDB-Tools 简介 二...

0
0
2019/09/16 12:07

Consul

概述 官方网站https://www.consul.io/ 架构 (https://technologyconversations.files.wordpress.com/2015/09/etcd-registrator-confd2.png) 通过这张架构图,可以看出来使用Consul实现应用外服务注册和发现主要依靠三个重要的组件: Consul:注册中心的服务端,实现服务注册信息的存储,并提供注册和发现服务。 Registrator:一个开源的第三方服务管理器项目,它通过监听服务部署的Docker实例是否存活,来负责服务提供者的注册...

0
0
2020/03/23 13:29

Consul

官网地址: https://www.consul.io/intro/index.html spring cloud 集成consul : https://www.springcloud.cc/spring-cloud-consul.html consul的启动安装 下载文件,解压,启动命令 consul agent -dev 访问地址: http://localhost:8500/ SpringCloud 整合 Consul 1 导入pom文件 <!--SpringCloud consul-server 注册中心consul--> <dependency> <groupId>org.springframework.cloud</groupId> ...

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