AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

istio 组件 mixer 初学篇

  • 2019-11-18
  • 本文字数:1455 字

    阅读完需:约 5 分钟

istio组件mixer初学篇

随着项目代码量的不断增加,冗余的代码量就像屋里的杂物越积越多,项目的维护和交接变得越来越困难。微服务的思想油然而生,未来微服务的数量将会非常庞大,如何治理微服务也变得非常重要。本文作者将带领大家对微服务管理工具 istio 进行初探,并对其组件 mixer 进行了详细分析。


我们现在正在尝试将业务微服务化,对现在热门的微服务治理 istio 也开始研究并试用。今天我们就对 istio 的 mixer 组件做一些初步的学习介绍。


既然是初学篇,先简单说一下 istio 的由来。

1 背景简介

单体应用的历史悠长,我们尝过它的优势,也吃过它的苦头。在业务不太大的时候,人力也有限的情况下。 单体应用只用一个 tar 包就可以搞定所有。mvc 是经典的模式。 但是随着项目的扩大,人员的更替。项目的代码量不断增加,接替的人员更容易写新的逻辑,冗余的代码量就像屋里的杂物,越积越多。导致后来,没人敢大胆的修改代码,将修改的代码上线也是异常惊心的旅程。所以我们想用微服务从根本上解决这样的问题,它轻便,松耦合,不限技术栈,给我们带来了希望。


当然我们知道采用微服务化,未来微服务的数量将会庞大。所以需要一个得力的工具能帮助我们治理微服务,就好比现在的 k8s 对容器。我们经过调研,最终选择 istio 做尝试。



我们今天主要学习 mixer 组件,采用拨洋葱的方式分析 mixer 和监控的那点关系。

2 mixer 主要有两个作用

  • 策略:每次请求来,需要 check 是通过还是拒绝。

  • 遥测: 每次请求的状态相关数据上报。

3 mixer 使用

策略对应 pod 的名字是 Policy,可以登陆容器,看一下进程的启动参数。


策略的优势明显,缺点也明显,即损失性能。 因为 Envoy 会在每次请求发送前向 Mixer Policy 发送 Check 请求,检查该请求是否受策略限制或者配额限制。


解决方式:


1.一种是关闭 check,不用每次请求都 check 一下。–set global.disablePolicyChecks=true 可以关闭策略检查。


2.一种是官方策略:mixer cache。


遥测对应 pod 的名字是 telemetry,可以登陆容器,看一下进程的启动参数,和 policy 的差别。


遥测的优势明显,收集到所有的数据。也有一个缺点,即负载问题。 因为 Envoy 每次请求接收后会向 Mixer Telemetry 上报本次请求的基本信息,如调用是否成功、返回状态码、耗时数据。


解决方式:


1.telemetry 起多个 pods,分担压力。


2.官方策略:Envoy report 采用异步模式,Envoy 会向 Mixer 上报日志、监控(log、metrics)等原始数据。

4 mixer 原理

策略缓存的原理

缓存结构定义:



  • referenced_map 用来保存哪些属性组合已经被缓存,比如 {“k1”: “a,b,c”} 这样表示当前只有一个属性组合”a,b,c”被保存。

  • cache 用来保存输入的签名(简单理解为有效输入内容”a=1,b=2,c=3”的 hash 结果)和 check 结果(简化为 true/false 表示是否通过),比如 { “a=1,b=2,c=3”: “true” }。

  • 引入一个重要概念:absence key。 第一层缓存 referenced_map 可以为 {“k1”: “a,b,c”, “k2”: “a,b,c 不存在” }。


更详细的缓存过程,后面会有一篇单独的文章讲它。

遥测上报监控原理

上报的结构体定义。



通过日志查看,上报的数据格式为一些原始的属性值。



数据到达 mixs 端。再做一些加工处理。



然后把数据分发对应的 Template 里。Flush 再让 logentry 和 Metric 等调用各自的 adapter 对数据进行处理,由于各自的 adapter 没有依赖关系,所以这里使用了 golang 的协程进行异步处理。



这时候,登陆 istio 自带的 grafana,就能看到 istio 系统的监控。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/V-NEmnEZ5ZYKRpRevMzQJQ


2019-11-18 11:251385

评论

发布
暂无评论
发现更多内容

吼吼科技:在智能制造领域的合作与创新之路

极客天地

埋点系统技术选型-自研还是开源?

ClkLog

开源 数据分析 埋点 用户行为分析 客户画像

《重塑AI应用架构》系列: Serverless与MCP融合创新,构建AI应用全新智能中枢

华为云开发者联盟

,华为云 华为开发者空间

意图框架事件推荐方案,精准匹配用户需求

HarmonyOS SDK

harmoyos

通过阿里云Milvus与通义千问VL大模型,快速实现多模态搜索

阿里云大数据AI技术

大数据 阿里云 向量检索 多模态 Milvus

捷途纵横G700品鉴会:潮改共创,解锁豪华越野的无限可能

科技热闻

代币经济学赋能社区自运营:构建Web3时代的永动飞轮

区块链软件开发推广运营

dapp 交易所开发 链游开发 公链开发 代币开发

开发认为测试不及时,测试吐槽工作量太大?

禅道项目管理

DevOps 软件开发 效能管理 测试人员 测试效率

企业AI成功落地的关键:生产级AI应用背后的“脏活累活”

UniverAI智宇苍穹

开发平台 企业 AI 应用 AI落地 AI 大模型 企业级AI工程化

浅析金仓数据库KingbaseES的Query Mapping:无需改代码的 SQL 优化神器

金仓技术

KingBase 金仓数据库

干货:如何成为AI产品经理?

科技热闻

业内首次! 全面复现DeepSeek-R1-Zero 数学、代码能力,训练步数仅需R1-Zero 1/10

快手技术

LLM

加密叙事危机:当「传说」构建让位于营销狂欢

TechubNews

什么是公链?公链项目有哪些?公链项目开发

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

马蹄链DAPP代币合约流动性挖矿分红系统开发详细及方案

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合

阿里巴巴云原生

阿里云 云原生 MCP

赋能车联网 | 智能地铁物联系统,让出行更顺畅

KaiwuDB

数据库 赋能 kwdb

深入研究:Shopee商品详情API接口详解

tbapi

Shopee shopee API shopee商品详情接口

打破"沙漏“现象→提高生成式搜索/推荐的上限

京东零售技术

如何做到供应链的协同管理?

积木链小链

数字化转型 智能制造 供应链管理

新加坡见!快手11篇论文入选人工智能领域顶会ICLR 2025

快手技术

人工智能 Iclr

从 “码农” 到 “架构师”:AI 工具如何助力职业跃迁?

飞算JavaAI开发助手

动态更新技术重构中国互联网:前端热更新的效率革命与生态演进

xuyinyin

企业为什么要用私有化的视频会议软件?BeeWorks Meet支持私有化

BeeWorks

即时通讯 IM 私有化部署 企业级应用

企业办公即时通讯软件BeeWorks,私有化安全防泄密

BeeWorks

IM 即时通讯IM 私有化部署 企业级应用

78%开发者已用AI工具:飞算JavaAI「完整工程代码生成」能否改写职场规则?

飞算JavaAI开发助手

高防IP是如何防护DDoS攻击和CC攻击的

网络安全服务

IP 带宽 高防服务器 高防IP DDoS 攻击

什么是商业分析报告,怎么制作?AI智能体使用攻略盘点!

职场工具箱

人工智能 项目分析报告 AIGC AI智能体 AI 智能体

生成式 AI 引爆广告效率革命,揭秘京东大模型应用架构的实践之道

京东零售技术

与智者同行:京东零售技术人的成长书单

京东零售技术

Markdown 所见即所得(WYSIWYG)编辑器的研究

yuanyxh

前端 Typora Markdown 编辑器

istio组件mixer初学篇_服务革新_袁小花_InfoQ精选文章