Consul vs. SmartStack

Consul vs. SmartStack

SmartStack是一种解决服务发现问题的工具。它有一个相当独特的架构,有4个主要组件:ZooKeeper,HAProxy,Synapse和Nerve。 ZooKeeper服务器负责以一致且容错的方式存储集群状态。然后,SmartStack集群中的每个节点都运行Nerves和Synapses。 Nerve负责对服务运行运行状况检查并向ZooKeeper服务器注册。 Synapse为服务提供商查询ZooKeeper并动态配置HAProxy。最后,客户与HAProxy交谈,HAProxy在服务提供商之间进行健康检查和负载均衡。

Consul是一个更简单,更包含的系统,因为它不依赖于任何外部组件。 Consul使用集成的gossip协议来跟踪所有节点并执行服务器发现。这意味着与SmartStack不同,服务器地址不需要在更改时进行硬编码和更新。

Consul和Nerves的服务注册都可以使用配置文件完成,但Consul还支持API来动态更改正在使用的服务和检查。

对于发现,SmartStack客户端必须使用HAProxy,要求Synapse预先配置所有所需的端点。相反,Consul客户端使用DNS或HTTP API,而无需事先进行任何配置。 Consul还提供“tag”抽象,允许服务提供可用于过滤的版本,主要/次要名称或不透明标签等元数据。然后,客户端只能请求具有匹配标记的服务提供者。

系统在管理健康检查方面也有所不同。神经以类似于Consul代理的方式执行本地健康检查。但是,Consul维护着单独的目录和健康系统。这种划分允许操作员查看每个服务池中的哪些节点,并提供对失败检查的深入了解。Nerve只是在失败的检查中取消注册节点,提供有限的操作洞察力。 Synapse还配置HAProxy以执行其他运行状况检查。这会导致所有潜在的服务客户端检查是否活跃。对于大型舰队,这种N-to-N风格的健康检查可能非常昂贵。

Consul通常提供更丰富的健康检查系统。 Consul支持Nagios风格的插件,可以使用大量的检查目录。 Consul允许进行服务级和主机级检查。甚至还有一个“死人的开关”检查,允许应用程序轻松集成自定义健康检查。最后,所有这些都集成到健康和目录系统中,通过API使操作员能够深入了解更广泛的系统。

除了服务发现和运行状况检查之外,Consul还提供了一个集成的键/值存储,用于配置和多数据中心支持。虽然可以为多个数据中心配置SmartStack,但中央ZooKeeper集群将严重阻碍容错部署。

猜你喜欢

转载自blog.csdn.net/longgeqiaojie304/article/details/85258878