分布式应用中,经常需要修改配置属性,例如:更新数据库连接字符串、更新缓存地址等。如果应用不多的话,可以手动修改,一旦应用比较多的话,分布式配置就显得非常重要,本文讲解 .net/c# 基于 Consul 实现分布式配置之Key/Value存储架构。
安装 Consul
简介
Consul是一个服务发现和注册的工具,其具有分布式、高扩展性能特点。
Consul主要包含如下功能:
- 服务发现: 支持 http 和 dns 两种协议的服务注册和发现方式。
- 监控检查: 支持多种方式的健康检查。
- Key/Value存储: 支持通过HTTP API实现分布式KV数据存储。
- 多数据中心支持:支持任意数量数据中心。
安装
下载地址:
超链接登录可见。
本文使用 Windows 10 x64 作为测试环境。
下载解压后,使用cmd命令运行,代码如下:
dev表示开发模式运行,使用-client 参数可指定允许客户端使用什么ip去访问,例如-client 127.0.0.1 表示可以使用,开发模式下,不会持久化数据。
(dev模式,生产环境建议cluster模式)
可以访问: http://127.0.0.1:8500/ui/dc1/services 查看,如下图:
KV 接口
api文档地址:
超链接登录可见。
首先,我使用在线网页,新建了一个key/value键值对。
通过 GET 请求 /v1/kv/:key 路径获取值。
http://127.0.0.1:8500/v1/kv/test
[
{
"LockIndex": 0,
"Key": "test",
"Flags": 0,
"Value": "aXRzdnNlLmNvbQ==",
"CreateIndex": 194,
"ModifyIndex": 194
}
]
- CreateIndex 是表示条目创建时间的内部索引值。
- ModifyIndex是修改此密钥的最后一个索引。该索引对应X-Consul-Index于响应中返回的标头值,并且可以通过设置?index查询参数将其用于建立阻塞查询。您甚至可以针对KV商店的整个子树执行阻塞查询:如果?recurse提供了查询,则返回的值X-Consul-Index对应ModifyIndex于前缀中的最新值,使用阻塞查询 ?index将等待直到该前缀中的任何键被更新。
- LockIndex是已成功获取锁中密钥的次数。如果持有锁,则Session密钥将提供拥有该锁的会话。
- Key 只是条目的完整路径。
- Flags是一个不透明的无符号整数,可以附加到每个条目。客户可以选择使用此选项,但是对于他们的应用来说很有意义。
- Value 是base64编码的数据Blob。
.NET/C# Key/Value 读写
首先,新建一个.net 4.6.1的项目,使用nuget安装必要的包,如下:
代码如下:
效果图如下:
- key键区分大小写
- 重复的key,value值会被覆盖
(完) |