Consul vs. Istio

Consul vs. Istio

Istio是一个连接,管理和保护微服务的开放平台。

要启用Istio的全部功能,必须部署多个服务。对于控制平面:必须部署Pilot,Mixer和Citadel,并为数据平面部署Envoy边车。此外,Istio还需要来自Kubernetes,Consul,Eureka或其他公司的第三方服务目录。最后,Istio需要一个外部系统来存储状态,通常是etcd。至少,必须配置三个Istio专用服务以及至少一个独立的分布式系统(除了Istio)以使用Istio的全部功能。

Istio为基于路径的路由,流量整形,负载平衡和遥测提供第7层功能。可以针对第7层和第4层属性配置访问控制策略,以根据服务标识控制访问,路由等。

Consul是一个提供服务器和客户端功能的单一二进制文件,包括服务目录,配置,TLS证书,授权等所有功能。虽然Consul可选择支持诸如Vault之类的外部系统来增强行为,但不需要安装其他系统来使用Consul。这种架构使Consul可以轻松安装在任何平台上,包括直接安装在机器上。

Consul使用基于代理的模型,其中集群中的每个节点都运行Consul客户端。此客户端维护从服务器有效更新的本地缓存。因此,所有安全服务通信API都以微秒为单位进行响应,不需要任何外部通信。这允许我们在边缘进行连接实施,而无需与中央服务器通信。 Istio将请求流向中央Mixer服务,并且必须通过Pilot推送更新。这大大降低了Istio的可扩展性,而Consul能够有效地分发更新并在边缘执行所有工作。

Consul的数据平面是可插拔的。它包括一个内置代理,具有更大的性能折衷,易于使用。但您也可以使用第三方代理,如Envoy。对作业使用正确代理的能力允许灵活的异构部署,其中不同的代理对于他们代理的应用程序可能更正确。

除了第三方代理支持,应用程序还可以本地与Connect协议集成。因此,引入Connect的性能开销可以忽略不计。这些“Connect-native”应用程序可以与任何其他支持Connect的服务进行交互,无论它们是使用代理还是Connect-native。

Consul仅对第4层强制执行授权和身份 - 可以建立TLS连接,也可以不建立。我们认为服务标识应该与第4层绑定,而第7层应该用于路由,遥测等。我们鼓励用户使用可插拔数据平面层来使用支持集群所需的第7层功能的代理。 Consul将在未来添加更多第7层功能。

Consul实现自动TLS证书管理,并提供轮换支持。叶子和根证书都可以在大型Consul集群中自动轮换,而不会中断连接。证书管理系统可通过Consul中的代码更改进行插件,并将很快作为外部插件系统公开。这使得Consul可以使用任何PKI解决方案。

由于Consul的服务连接功能“Connect”是内置的,因此它继承了Consul的操作稳定性。 Consul自2014年以来一直在为大型公司生产,并且已知在单个集群中部署多达50,000个节点。

这种比较基于我们对Istio的有限使用以及与Istio用户交谈。如果您觉得此比较中有不准确的陈述,请点击此页面页脚中的“编辑此页面”并提出修改建议。我们力求技术准确性,并将尽快审查和更新此帖子的不准确之处。

你可能感兴趣的:(Consul)