Istio:Mixer功能架构与实践

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 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检索



相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
目录
相关文章
|
16天前
|
运维 负载均衡 监控
深入探索微服务架构的核心要素与实践策略
在当今软件开发领域,微服务架构已成为构建灵活、可扩展企业级应用的首选模式。本文旨在剖析微服务架构的设计理念,通过实例阐述其核心组件如服务注册与发现、配置管理、熔断机制等如何协同工作,以提升系统的敏捷性和维护性。同时,探讨了在实践中应对分布式系统复杂性的最佳策略,包括负载均衡、服务监控和日志聚合等关键技术,旨在为后端开发者提供一套完整的微服务实施指南。
32 1
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
【9月更文挑战第4天】赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
|
3天前
|
Cloud Native 持续交付 微服务
云原生时代的微服务架构实践
【9月更文挑战第30天】随着云计算技术的不断进步,云原生已经成为现代软件开发的重要趋势。本文将通过深入浅出的方式,介绍如何在云原生环境下设计并实施微服务架构,以及如何利用容器化技术和自动化工具来提升服务的可维护性和可扩展性。我们将一起探讨微服务架构的核心原则、优势,以及在云平台中部署和管理微服务的最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将成为你探索云原生和微服务世界的一盏明灯。
|
6天前
|
监控 Cloud Native 持续交付
云原生时代的微服务架构设计原则与实践
【9月更文挑战第27天】本文深入探讨了在云原生环境下,如何高效地实施微服务架构。通过分析微服务的基本概念、设计原则和关键技术,结合实际案例,指导读者理解并应用微服务架构于云计算项目之中。文章旨在为软件开发者和架构师提供一条清晰的路径,以实现更加灵活、可扩展且易于维护的系统。
|
10天前
|
设计模式 Cloud Native API
云原生时代的微服务架构实践
【9月更文挑战第23天】在这篇文章中,我们将深入探讨云原生环境下的微服务架构设计原则、优势以及实施策略。文章不仅涉及理论概念,还结合具体的代码示例,帮助读者理解如何在实际项目中应用微服务架构。通过阅读本文,你将获得构建、部署和管理微服务的实用知识,为你的云原生项目奠定坚实的基础。
|
8天前
|
存储 运维 负载均衡
后端开发中的微服务架构实践与思考
本文旨在探讨后端开发中微服务架构的应用及其带来的优势与挑战。通过分析实际案例,揭示如何有效地实施微服务架构以提高系统的可维护性和扩展性。同时,文章也讨论了在采用微服务过程中需要注意的问题和解决方案。
|
13天前
|
缓存 NoSQL 数据库
构建高效后端服务:从架构设计到性能优化的实践之路
本文旨在探讨如何通过合理的架构设计和性能优化策略,构建一个既稳定又高效的后端服务。文章首先概述了后端服务开发中常见的挑战和误区,随后详细介绍了微服务架构、缓存机制、数据库优化、服务器配置以及代码审查等关键技术和方法。通过深入浅出的案例分析和实用建议,本文将为后端开发者提供一套系统化的指导方案,助力其打造出高性能的后端服务体系。
|
8天前
|
运维 持续交付 API
深入理解并实践微服务架构:从理论到实战
深入理解并实践微服务架构:从理论到实战
32 3
|
11天前
|
人工智能 Cloud Native Java
新趋势、新开源、新实践|云栖大会 AI 原生应用架构专场邀您参会
新趋势、新开源、新实践|云栖大会 AI 原生应用架构专场邀您参会
|
11天前
|
消息中间件 缓存 NoSQL
构建高效后端服务:微服务架构的深度实践
本文旨在探讨如何通过采用微服务架构来构建高效的后端服务。我们将深入分析微服务的基本概念、设计原则以及在实际项目中的应用案例,揭示其在提升系统可维护性、扩展性和灵活性方面的优势。同时,本文还将讨论在实施微服务过程中可能遇到的挑战,如服务治理、分布式事务和数据一致性等问题,并分享相应的解决策略和最佳实践。通过阅读本文,读者将能够理解微服务架构的核心价值,并具备将其应用于实际项目的能力。 ##
下一篇
无影云桌面