Istio:Mixer功能架构与实践

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: Istio:Mixer功能架构与实践

目录

大纲

Istio架构回顾&Mixer介绍

Istio 官方四大功能中两个基于Mixer实现(Control、Observe)

Mixer在Istio中角色

Mixer的功能和设计

没有Mixer的时候

Mixer的Adapter机制

Mixer完整视图

Mixer的处理流程

Mixer的配置模型

Mixer 配置模型概述

Mixer 配置模型1: Handler

Mixer 配置模型2:实例( Instance)

Mixer 配置模型3: 规则( Rule)

Request的属性处理流程

Mixer Adapters

Mixer 的 Check Adapter

Mixer的高可用设计

Mixer 的 Batch Report

Mixer的典型应用

Mixer典型应用1: 华为云应用服务网格

Mixer典型应用2: Google Apigee

Mixer实践1

实践1 从0开发并运行一个Mixer Adapter: 原理

实践1 从0开发并运行一个Mixer Adapter:两个角色

实践1 从0开发并运行一个Mixer Adapter: 步骤

实践1 从0开发并运行一个Mixer Adapter:效果

Mixer实践2

实践2 通过Mixer收集自定义的遥测数据:目标

实践2 通过Mixer收集自定义的遥测数据:步骤

实践2 通过Mixer收集自定义的遥测数据:效果


大纲

Istio架构回顾&Mixer介绍

Mixer的功能和设计

Mixer的配置模型

Mixer的典型应用

Mixer实践1和2


Istio架构回顾&Mixer介绍

  • Pilot -- 配置管理,在Istio中相当于一个大管家,还有服务发现--管理Proxy和Service运行时的配置
  • Mixer-- 守护神,负责管理相对静态的配置
  • Adapter是一个模板,Handler是一个实现

Istio架构回顾


Istio 官方四大功能中两个基于Mixer实现(Control、Observe)


Mixer在Istio中角色

  • 功能上:负责策略控制和遥测收集
  • 架构上:提供插件模型,可以扩展和定制


Mixer的功能和设计

没有Mixer的时候


Mixer的Adapter机制

  • Mixer 处理不同基础设施后端的灵活性是通过使用通用插件模型实现的,这种插件称为Adapter。
  • Mixer通过它们与不同的基础设施后端连接,这些后端可提供核心功能,提供日志、监控、配额、 ACL 检查等


Mixer完整视图

解耦、中介、运维时配置


Mixer的处理流程

Mixer的处理流程

  1. Envoy生成属性上报Mixer
  2. Mixer 调用对应后端处理属性

参考:https://istio.io/docs/reference/config/policy-and-telemetry/attribute-vocabulary/


Mixer的配置模型

Mixer 配置模型概述

  • Handler: 创建 Handler,即配置Mixer适配器
  • Instance: 从 Istio 属性中生成 instance。
  • Rule: 配置一组规则,这些规则描述了何时调用特定适配器及哪些实例。


Mixer 配置模型1: Handler

Mixer 配置模型1: Handler


Mixer 配置模型2:实例( Instance)

Mixer 配置模型2:实例( Instance)


Mixer 配置模型3: 规则( Rule)

Mixer 配置模型3: 规则( Rule)


Request的属性处理流程

接收属性

补充属性,

处理属性

Request的属性处理流程


Mixer Adapters

Mixer Adapters


Mixer 的 Check Adapter

Mixer 的 Check Adapter


Mixer的高可用设计

  • 无状态
  • 高可以用
  • 缓存和缓冲

Mixer的高可用设计


Mixer 的 Batch Report

Mixer 的 Batch Report


Mixer的典型应用

Mixer典型应用1: 华为云应用服务网格

https://console.huaweicloud.com/Istio/

Mixer典型应用1: 华为云应用服务网格


Mixer典型应用2: Google Apigee

Mixer典型应用2: Google Apigee


Mixer实践1

实践1 从0开发并运行一个Mixer Adapter: 原理

实践1 从0开发并运行一个Mixer Adapter: 原理


实践1 从0开发并运行一个Mixer Adapter:两个角色

实践1 从0开发并运行一个Mixer Adapter:两个角色


实践1 从0开发并运行一个Mixer Adapter: 步骤

1.创建独立的Adapter目录,并开发Adapter的代码开发Adapter代码

cd $MIXER_REPO/adapter && mkdir mysampleadapter && cd mysampleadapter

#创建mysampleadapter .go文件定义处理逻辑

2. //配置config.proto,描述配置的定义。 #创建config.proto文件,描述adapter的配置参数

mkdir config

3. 根据proto生成go的配置,并在adapter代码中使用

go generate ./...

go build ./...

4.在Mixer中注册这个新的Adapter。 # 在inventory.yaml 中注册adapter,

mysampleadapter: "istio.io/istio/mixer/adapter/mysampleadapter"

go generate $MIXER_REPO/adapter/doc.go

5. 配置并使用新创建的adapter。 #在testdata目录下创建使用该adapter的配置,即handler, instance, rulle。

mkdir $MIXER_REPO/adapter/mysampleadapter/testdata

#确认两个文件attributes.yaml和mysampleadapter.yaml

6. 启动mixer 服务端

pushd $ISTIO/istio && make mixs

$GOPATH/out/linux_amd64/release/mixs server --configStoreURL=fs://$(pwd)/mixer/adapter/mysampleadapter/testdata

7.启动一个客户端,模拟上报数据

pushd $ISTIO/istio && make mixc

$GOPATH/out/linux_amd64/release/mixc report -s destination.service="svc.cluster.local" -t request.time="2019-01-10T20:00:00Z"

8.查看结果输出

tail $ISTIO/istio/out.txt


实践1 从0开发并运行一个Mixer Adapter:效果

Mixer服务端

模拟客户端


Mixer实践2

实践2 通过Mixer收集自定义的遥测数据:目标

  • 编写自定义的Metric模板
  • 在Istio中创建自定义Metric、 Prometheus Handler和Rule
  • 认识Prometheus Adapter
  • 实践Prometheus 的主要能力


实践2 通过Mixer收集自定义的遥测数据:步骤

--1. 创建配置,包括prometheus的handler、 metric和rule

kubectl apply -f double-request.yaml

--2. 查看创建的对象

kubectl get metrics.config.istio.io -nistio-system

kubectl get rules.config.istio.io -nistio-system

kubectl get prometheus.config.istio.io -nistio-system

-- 3. 发起对服务的访问,生成访问metric数据

--4.通过Prometheus查看metric数据
--4.1 查看doublereques的metric

http://49.4.84.29:9090/graph?g0.range_input=1h&g0.expr=istio_double_request_count&g0.t

ab=1

--4.2 通过prometheus检索特定目标的metric

istio_double_request_count{destination="details-v1"}


实践2 通过Mixer收集自定义的遥测数据:效果

Instance定义

Prometheus检索



相关文章
|
5天前
|
数据采集 监控 API
移动端性能监控探索:iOS RUM SDK 技术架构与实践
阿里云 RUM SDK 作为一款性能体验监控采集工具,可以作为辅助 App 运维的强有力助手,提升您的问题排查效率。
|
7天前
|
存储 SQL 消息中间件
从 ClickHouse 到 StarRocks 存算分离: 携程 UBT 架构升级实践
查询性能实现从秒级到毫秒级的跨越式提升
|
8天前
|
设计模式 前端开发 Java
《深入理解Spring》:Spring MVC架构深度解析与实践
Spring MVC是基于Spring框架的Web开发核心模块,实现Model-View-Controller设计模式。它通过DispatcherServlet统一调度请求,结合注解驱动的控制器、灵活的数据绑定与验证、丰富的视图支持及拦截器、异常处理等机制,提升开发效率与系统可维护性,助力构建高性能、易测试的现代Web应用。
|
12天前
|
存储 运维 分布式计算
零售数据湖的进化之路:滔搏从Lambda架构到阿里云Flink+Paimon统一架构的实战实践
在数字化浪潮席卷全球的今天,传统零售企业面临着前所未有的技术挑战和转型压力。本文整理自 Flink Forward Asia 2025 城市巡回上海站,滔搏技术负责人分享了滔搏从传统 Lambda 架构向阿里云实时计算 Flink 版+Paimon 统一架构转型的完整实战历程。这不仅是一次技术架构的重大升级,更是中国零售企业拥抱实时数据湖仓一体化的典型案例。
|
1月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
边缘计算 Kubernetes 物联网
Kubernetes 赋能边缘计算:架构解析、挑战突破与实践方案
在物联网和工业互联网快速发展的背景下,边缘计算凭借就近处理数据的优势,成为解决云计算延迟高、带宽成本高的关键技术。而 Kubernetes 凭借统一管理、容器化适配和强大生态扩展性,正逐步成为边缘计算的核心编排平台。本文系统解析 Kubernetes 适配边缘环境的架构分层、核心挑战与新兴解决方案,为企业落地边缘项目提供实践参考。
156 0
|
1月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
Kubernetes 安全 容器
77 0
|
1月前
|
数据采集 存储 运维
MyEMS:技术架构深度剖析与用户实践支持体系
MyEMS 是一款开源能源管理系统,采用分层架构设计,涵盖数据采集、传输、处理与应用全流程,支持多协议设备接入与多样化能源场景。系统具备高扩展性与易用性,结合完善的文档、社区、培训与定制服务,助力不同技术背景用户高效实现能源数字化管理,降低使用门槛与运维成本,广泛适用于工业、商业及公共机构等场景。
73 0
|
1月前
|
前端开发 Java 开发者
MVC 架构模式技术详解与实践
本文档旨在全面解析软件工程中经典且至关重要的 MVC(Model-View-Controller) 架构模式。内容将深入探讨 MVC 的核心思想、三大组件的职责与交互关系、其优势与劣势,并重点分析其在现代 Web 开发中的具体实现,特别是以 Spring MVC 框架为例,详解其请求处理流程、核心组件及基本开发实践。通过本文档,读者将能够深刻理解 MVC 的设计哲学,并掌握基于该模式进行 Web 应用开发的能力。
241 1