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 官方四大功能中两个基于Mixer实现(Control、Observe)
Mixer在Istio中角色
- 功能上:负责策略控制和遥测收集
- 架构上:提供插件模型,可以扩展和定制
Mixer的功能和设计
没有Mixer的时候
Mixer的Adapter机制
- Mixer 处理不同基础设施后端的灵活性是通过使用通用插件模型实现的,这种插件称为Adapter。
- Mixer通过它们与不同的基础设施后端连接,这些后端可提供核心功能,提供日志、监控、配额、 ACL 检查等
Mixer完整视图
解耦、中介、运维时配置
Mixer的处理流程
- Envoy生成属性上报Mixer
- 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 配置模型2:实例( Instance)
Mixer 配置模型3: 规则( Rule)
Request的属性处理流程
接收属性
补充属性,
处理属性
Mixer Adapters
Mixer 的 Check Adapter
Mixer的高可用设计
- 无状态
- 高可以用
- 缓存和缓冲
Mixer 的 Batch Report
Mixer的典型应用
Mixer典型应用1: 华为云应用服务网格
https://console.huaweicloud.com/Istio/
Mixer典型应用2: Google Apigee
- https://docs.apigee.com/api-platform/istio-adapter/concepts
- https://istio.io/docs/reference/config/policy-and-telemetry/templates/analytics/
Mixer实践1
实践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 config3. 根据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.go5. 配置并使用新创建的adapter。 #在testdata目录下创建使用该adapter的配置,即handler, instance, rulle。
mkdir $MIXER_REPO/adapter/mysampleadapter/testdata
#确认两个文件attributes.yaml和mysampleadapter.yaml6. 启动mixer 服务端
pushd $ISTIO/istio && make mixs
$GOPATH/out/linux_amd64/release/mixs server --configStoreURL=fs://$(pwd)/mixer/adapter/mysampleadapter/testdata7.启动一个客户端,模拟上报数据
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实践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收集自定义的遥测数据:效果
Istio:Mixer功能架构与实践相关推荐
- Istio入门:架构原理及在k8s部署
1. 简介 在本教程中,我们将介绍服务网格的基础知识,并了解它如何实现分布式系统架构. 我们将主要关注Istio,它是服务网格的一种具体实现.在此过程中,我们将介绍Istio的核心架构. 2. 什么是 ...
- 【云驻共创】华为云云原生之Istio控制面架构深度剖析
文章目录 前言 一.Istio的基本概念 1.Istio诞生背景 2.Istio的定义 3.Istio优势 二.Istio整体架构及工作原理 1.Istio整体架构 1.1 控制面Istiod 1.1 ...
- 服务网格规模化应用下的Istio Sidecar配置管理挑战与实践|IstioCon 2022
服务网格是服务间通信的基础设施层, 服务网格 Istio 近期已经宣布了加入云原生计算基金会(CNCF)的意向,今后会得到更多开发者的信任和应用.阿里云内部很早就开始调研并实践 ServiceMesh ...
- 《App架构师实践指南》:移动开发的进阶指南
文章主要内容: 什么是 app 架构师 这本书主要内容 读完感受 什么是 App 架构师 成为"架构师"是许多程序员的梦想,当然也包括我,在工作的几年里,我见过很多架构师,他们在设 ...
- 架构师实践日 · 6.30 杭州站 | 视觉 AI 技术如何助力行业提升?来西子湖畔与业内大咖面对面交流!
伴随内容形式的变迁(文字 → 图片 → 视频),目前视觉 AI 技术不仅被应用到传统领域的升级革新中,还作为最重要的基础人工智能技术渗透到前沿技术的创新研究中. 七牛架构师实践日第二十九期将以视觉 A ...
- DotNET企业架构应用实践-企业管理软件架构(计算)的历史与发展(上)
企业管理软件是计算机软件应用的一个重要领域,在今天计算机软件除面向科学计算之外应用最广阔的也是企业管理应用,可以说计算机技术的发展推动着企业应用发展,企业管理需要也一方面影响着计算机技术的发展,今天, ...
- 互联网高并发架构技术实践
一.什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求. 高并发相关常用的一些指标有响应时间( ...
- 黄东旭:Cloud-Native 的分布式数据库架构与实践
19 日,我司 CTO 黄东旭同学在全球云计算开源大会上,发表了<Cloud-Native 的分布式数据库架构与实践>主题演讲,以下为演讲实录~~ 大家好,今天我的题目是 Cloud-Na ...
- DotNET企业架构应用实践-企业管理软件架构的历史与发展(中)- 分布式系统
在前几天的DotNET企业架构应用实践-企业管理软件架构(计算)的历史与发展(上)一文中,介绍了在企业管理软件架构发布中的主机-终端结构.以及客户机-服务器结构.浏览器-服务器结构,本文今天向大家介绍 ...
- 一套高可用、易伸缩、高并发的IM群聊架构方案设计实践
一.引言 要实现一整套能用于大用户量.高并发场景下的IM群聊,技术难度远超IM系统中的其它功能,原因在于:IM群聊消息的实时写扩散特性带来了一系列技术难题. 举个例子:如一个2000人群里,一条普通消 ...
最新文章
- 函数计算的是什么_【Excel函数教程】3个例子让你彻底玩转EDATE函数
- mysql集群2台linux_安装配置基于两台服务器的MySQL集群(2)
- String.format System.out.printf的用法-简单
- AI硬件碎片化难题,英特尔想用“一个API”解决,还推出新的编程语言DPC++
- [bzoj2186]沙拉公主的困惑
- jsp 使用base标签 没有作用_JSP学习篇
- k8s Service之LoadBalancer和ExternalName
- PAT甲级 -- 1148 Werewolf - Simple Version (20 分)
- 好语言,就该善用它——《C++语言的设计与演化》读书笔记
- 关于HbSrv.exe
- 这5种员工,千万不能重用
- 1-物联网开发标配方案(预期方案使用说明和演示)
- 如何提高web应用的响应速度(性能)
- 2021-03-09了解示隐式接口和编译时多态
- 对CSRF(跨站请求伪造)的理解
- windows bat脚本实现快速配置JDK 环境变量
- 傅立叶变换的深入理解(转帖)
- 【测试报告】模板:性能测试报告 2
- oracle 恢复dmp数据,Oracle数据库使用DMP文件恢复数据
- 嘉立创 PCB 生产流程
热门文章
- Verilog学习 | 数字下变频与脉冲压缩的综合仿真与硬件实现
- 【学生个人网页设计作品】使用HMTL制作一个超好看的保护海豚动物网页
- install在python里什么意思_“pip install”和“python-m pip install”有什么区别?
- 【每日一题】(D0723)strcpy 智能指针
- Mac各种问题的万能解决方法:重置SMC与重置NVRAM(PRAM)
- latex插入参考文献--BibTex格式
- NPM_出现 ETIMEDOUT
- R如何导入带有分隔符号的文件
- 弘辽科技:抖加投放后会增粉吗?有什么技巧?
- CAJ是什么格式怎样在线转换为PDF格式