---
title: 为什么 Istio 需要 Mixer?
weight: 1
---

Mixer 为 Istio 组件和基于 Istio 的服务之间提供了丰富的中介层。Mixer 作为基础设施后端服务可用于访问控制检查控制和遥测数据采集。Mixer 提供的中介层可在不修改服务二进制的情况下，帮助运维人员获得对服务内部机制的洞悉力和控制力。

Mixer 被设计为独立组件，这与 Envoy 不同。这样的设计有很多好处：

- *可伸缩性* 。
Mixer 和 Envoy 的功能在本质上有很大不同，这也导致了它们各自对于可伸缩性要求不同。保持组件分离可以实现独立的组件适当伸缩。

- *资源使用* 。
Istio 依赖于能够被部署的代理实例，因此最小化每个代理实例的成本是非常重要的。将 Mixer 的复杂逻辑移动到独立的组件中让 Envoy 保持轻量和灵活变为可能。

- *可靠性* 。
Mixer 及其开放式扩展性模型代表了数据路径处理流水线最复杂部分。之所以在 Mixer 而不是在 Envoy 中实现此功能，是因为这样可以创建不同的故障域，使得 Envoy 即使在 Mixer 发生故障的情况下也能继续运行，从而避免了宕机。

- *隔离性* 。
Mixer 在 Istio 和 基础设施后端之间提供了一定程度的隔离。每个 Envoy 实例都可配置为在非常小范围内进行交互操作，从而限制了潜在攻击的影响。

- *可扩展性* 。
必须设计一个简单的可扩展性模型，使得 Istio 尽可能广泛地与后端进行交互操作。由于其设计和语言选择，Mixer 比 Envoy 具备更好的扩展性。功能点的分离也使得 Istio 策略和遥测处理的功能可以采用不同的代理一起实现，例如 Envoy 和 NGINX 的混合。

Envoy 实现了复杂的缓存，批处理和预取策略，从而在很大程度上减轻了在请求路径上与 Mixer 交互的延迟影响。
