写点什么

Istio 组件 Mixer 介绍

作者:阿泽🧸
  • 2022 年 7 月 15 日
  • 本文字数:1153 字

    阅读完需:约 4 分钟

Istio组件Mixer介绍

Mixer 是负责提供策略控制和遥测统计的 Istio 组件。


一、Mixer 基本概念

Mixer 处理不同基础设施后端的灵活性是通过使用通用插件模型实现的。每个插件都被称为 Adapter,通过通用插件模型可以方便地扩展新的基础设施后端,通过配置可以指定运行时使用的具体适配器。Mixer 当前内置了不少 Adapter,常见的有 Fluentd、Prometheus、Statsd、Redis Quota 等。


属性是 Mixer 中一个非常重要的基础概念,用于描述服务请求的特征,具体包含请求内容和请求环境相关的一些参数,比如请求大小、请求头、请求的来源 IP 地址、目标产生响应的时间戳、响应的状态码等。绝大多数属性数据由 Envoy 负责生成,但也有一些 Mixer 适配器会生成属性数据。


Mixer 的属性有一个显著特点,属性是固定的,当前均由 Mixer 指定,不能随意设定。Mixer 当前定义了 50 多个通用属性,具体可以查看 Istio 官方文档的属性词汇(Attribute Vocabulary)。Mixer 整体架构和功能逻辑都是围绕属性处理展开,Mixer 中的每个 Adapter 会配置自身关注的属性,Mixer 接收到 Envoy 发过来的请求时,会根据请求对应的属性列表,根据一定的匹配规则,调用匹配的 Adapter。


Istio 通过 Mixer 提供统一的抽象层,屏蔽基础设施后端的差异,提供强大的插件化扩展能力,基于 Mixer 可以非常方便地增加新的基础设施后端,同时由于 Mixer 仅仅提供机制,而不负责具体的实现策略,使得 Mixer 架构稳定后的变化比较少,可用性会比较高,通过 Mixer 提供的缓存机制,不仅可以减少调用后端基础设施的频率,减少延迟,同时在后端基础设施无响应的时候也能继续工作,一定程度上屏蔽了后端基础设施的故障,保证了系统的整体稳定性。


通过引入 Mixer,解决了 Istio 策略控制和遥测统计方面的扩展性问题,通过 Mixer 可以在不影响 Envoy 核心架构的基础上,灵活方便地支持新的插件和策略,但 Mixer 的引入也带来了实实在在的性能问题,Mixer 采用的通用属性匹配策略,并且几乎每次请求都需要和 Mixer Server 进行交互,都会带来一定的性能损耗。Mixer 虽然在性能改进方面做了大量的工作,截至目前为止,仍然没有交出一份满意的答卷,这也导致不少对性能有很高要求的场景无法使用 Mixer。


二、Mixer 基本功能

具有如下几个功能:

(1)调用前置检查 Envoy 将请求透传给下游服务前,会通过调用 Mixer 判断该请求是否满足一定的前置条件,具体比如黑名单检查,访问权限校验等。


(2)配额检查配额检查调用时机和前置检查类似,由 Envoy 调用下游服务前调用 Mixer 进行检查,不同的是配额检查聚焦资源的管理,以实现对资源的有效管理,具体比如限流、连接数检查等。


(3)统计观测信息上报服务处理完请求后,Envoy 将请求相关的统计信息上报到 Mixer,Mixer 及其 Mixer 相关的基础设施,会基于上报数据进行监控、性能分析等,也可以基于对数据的精细化分析,产生相应的策略对链路进行管控,具体的上报信息包含 Log、Metric 和 Trace 等。

发布于: 刚刚阅读数: 5
用户头像

阿泽🧸

关注

还未添加个人签名 2020.11.12 加入

还未添加个人简介

评论

发布
暂无评论
Istio组件Mixer介绍_istio_阿泽🧸_InfoQ写作社区