总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
一、简介
1、什么是consul
Consul是HashiCorp公司推出的开源工具,用于实现 分布式系统的服务发现与配置。 Consul是分布式的、高可用的、可横向扩展的。
架构图如下:
总结如下:
1、CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到SERVER【通过HTTP和DNS接口请求server】,本身是不持久化这些信息。
2、SERVER表示consul的server模式,表明这个consul是个server,这种模式下,功能和CLIENT都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。
3、SERVER-LEADER:中间那个SERVER下面有LEADER的字眼,表明这个SERVER是它们的老大,它和其它SERVER不一样的一点是,它需要负责同步注册的信息给其它的SERVER,同时也要负责各个节点的健康监测。
2、etcd、Zookeeper 和 Consul对比
特性/工具 | etcd | zookeeper | Consul |
---|---|---|---|
一致性模型 | 强一致性 (Raft) | 强一致性 (ZAB) | 最终一致性 (可配置为强一致性) |
扩展性 | 良好,适合大量键值对 | 良好,但在大量数据时可能遇到性能瓶颈 | 可能遭受高延迟和内存压力 |
功能和易用性 | API 简洁,易于使用 | 功能强大,支持多种高级特性 | API 设计友好,易于集成 |
服务发现 | 支持服务发现 | 支持服务发现 | 专门设计用于服务发现 |
健康检查 | 不直接支持 | 不直接支持 | 支持健康检查 |
安全性 | 支持TLS或者启用用户身份认证 | 支持ACL | 支持 TLS 和 ACL |
多数据中心 | 支持多数据中心配置 | 支持多数据中心配置 | 原生支持多数据中心配置 |
语言和生态 | 使用 Go 语言,广泛的客户端库支持 | 使用 Java 编写,适合 Java 应用程序 | 使用 Go 语言,支持多种语言的客户端库 |
社区和生态 |