Consul


Consul由HashiCorp 开发,本站内容来源于Consul官方网站,是其英文介绍和文档的非官方中文翻译。

  • 让服务发现和配置管理更容易。
  • 分布式、高可用、跨数据中心。

服务发现

Consul让服务注册和服务发现(通过DNS和HTTP接口)更加简单,甚至对于外部服务(例如SaaS)注册也一样。

故障检测

通过健康检查,服务发现可以防止请求被路由到不健康的主机,并且可以使服务容易断开(不再提供服务)。

多数据中心

Consul不需要复杂的配置即可简便的扩展到多个数据中心,查找其它数据中心的服务或者只请求当前数据中心的服务。

键值存储

灵活的键值存储,提供动态配置、特征标记、协作、leader选举等功能,通过长轮询实现配置改变的即时通知。


DNS查询接口

使用Consul内置的DNS Server查找服务,支持现有的基础设施而不需要任何代码上的修改。

admin@hashicorp: dig web-frontend.service.consul. ANY
; <<>> DiG 9.8.3-P1 <<>> web-frontend.service.consul. ANY
;; global options: +cmd
 
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29981
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
 
;; QUESTION SECTION:
;web-frontend.service.consul. IN	ANY
 
;; ANSWER SECTION:
web-frontend.service.consul. 0 IN	A	10.0.3.83
web-frontend.service.consul. 0 IN	A	10.0.1.109
admin@hashicorp:  

键值存储

Consul提供一个分层的键值存储,通过一个简单的HTTP API进行访问,管理配置从来没有如此简单。

admin@hashicorp: curl -X PUT -d 'bar' http://localhost:8500/v1/kv/foo
true
admin@hashicorp: curl http://localhost:8500/v1/kv/foo
[
	{
	   "CreateIndex": 100,
	   "ModifyIndex": 200,
	   "Key": "foo",
	   "Flags": 0,
	   "Value": "YmFy"
	}
]
admin@hashicorp: echo "YmFy" | base64 --decode
bar
admin@hashicorp: