Mixer在应用程序和基础架构后端之间提供通过中介层。它的设计将策略决策移出应用层,用运维人员能够控制的配置取而代之。

Mixer的设计目的是改变层次之间的边界,以此降低总体复杂性。从服务代码中剔除策略逻辑,改由运维人员进行控制。

Mixer提供三个核心功能:

  • 前提条件检查:服务在响应在处理请求前验证一些前提条件。
  • 配额管理
  • 遥测报告:服务能上报日志和监控。

这些机制是基于一组属性的,每个请求都会将这些属性呈现给Mixer。在Istio中,这些属性来之与Sidecar代理的每一次请求。

适配器

  Mixer是高度模块化和可扩展的组件。他的一个关键功能就是把不同后端的策略和遥测系统的细节抽象出来,让Envoy以及基于Istio的服务能够独立于这些后端,从而保证可移植性。

配置状态

  Mixer的核心运行时方法check和report都接受来自输入的一组属性。Mixer的当前配置会根据输入属性决定每个方法的工作内容。为此服务运维的工作:

  • 配置一组Handler。 Handler是配置完成的Adapter。
  • 基于属性和常量。为Mixer配置一组instance,instance表达了一套提供给Adapter处理的数据。
  • 配置一套Rule。 Mixer在每次请求时都会执行这些Rule。Rule由匹配表达式和对应的Action构成。Action中设置了需要生成的Instance和处理这些instance所需要的Handler。

需要上述配置状态才能让Mixer知道如何处理传入的属性并分发到适当的基础设置后端。

请求阶段

  请求进入Mixer时,处理阶段:

  • 生成补充属性
  • 决议
  • 属性处理
  • 适配器调度

Mixer配置

  Mixer的配置模式可以利用其所有功能和灵活性。主要功能:

  • 专为运维人员设计:运维人员通过操纵配置资源来控制Mixer部署中的所有操作和策略切面。
  • 灵活:配置模型围绕Istio的属性构建,
  • 健壮:
  • 扩展:  

Mixer概念

  Mixer是一种属性处理机器。请求到达Mixer时带有一组属性,基于这些属性,Mixer会生成对各种基础设施的调用。这些后端包括频率限制、访问控制、策略实施等各种系统。该属性集确定Mixer为给定的请求用哪些参数调用哪些后端。为了隐藏后端的细节,Mixer使用称为适配器的模块。

Mixer的配置有几个中心职责:

  • 描述哪些适配器正在使用以及他们的操作方式。
  • 描述如何将请求属性映射到适配器参数中。
  • 描述使用特定参数调用适配器的时机。

配置基于适配器和模板来完成:

  • 适配器封装了Mixer和特定基础设施后端之间的接口
  • 模板定义了从特定请求的属性到适配器输入的映射关系。一个适配器可以支持任意数量的模板。

配置使用YAML格式表示,围绕几个核心抽象构建:  

  • Handler: 就是一个配置完成的适配器。
  • 实例:一个请求实例就是请求属性到一个模板的映射结果。
  • 规则:规则确定了何时使用一个特定的模板配置来调用一个Handler.

 Hanler

  适配器封装了Mixer和特定外部基础设施后端进行交互的必要接口

实例:

  

四 Mixer的更多相关文章

  1. 转载——用Mixer API函数调节控制面板的音频设置

    关键词:Mixer函数,控制面板,音频设备调节 如果你用过windows的音频设备,比如播放音乐或者录音,聊天,调节麦克或者声音的大小,以及设置静音,都可以通过控制面板中的音频设置面板来调节,你对于下 ...

  2. 从零开始学习PYTHON3讲义(十四)写一个mp3播放器

    <从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...

  3. 云原生 - Istio可观察性之监控(四)

    作者:justmine 头条号:大数据与云原生 微信公众号:大数据与云原生 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 为了方便阅读,微信公众号已按分类排版,后续的文 ...

  4. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  5. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  6. 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

    阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...

  7. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  8. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  9. “四核”驱动的“三维”导航 -- 淘宝新UI(需求分析篇)

    前言 孔子说:"软件是对客观世界的抽象". 首先声明,这里的"三维导航"和地图没一毛钱关系,"四核驱动"和硬件也没关系,而是为了复杂的应用而 ...

随机推荐

  1. MySQL性能优化-内存参数配置

    Mysql对于内存的使用,可以分为两类,一类是我们无法通过配置参数来配置的,如Mysql服务器运行.解析.查询以及内部管理所消耗的内存:另一类如缓冲池所用的内存等. Mysql内存参数的配置及重要,设 ...

  2. idel 中 生成 jar包 和项目中自己需要的包

    一.首先在自己的项目中创建一个类类中创建一个构造方法构造方法中传入一个字符串参数(这个字符串参数是为了传入路径) 在方法体内通过file类创建文件夹(换而言之就是项目中的包) 二 .就是对这个项目中的 ...

  3. flsk-SQLALchemy

    SQLALchemy 一.介绍     SQLALchemy是一个基于Python实现的ORM框架.该框架是建立在DB API之上,使用关系对象映射进行数据库操作     简言之便就是:将类和对象转换 ...

  4. value optimized out的问题

    看redis源码,查看某个变量的值的时候出现:value optimized out 变量被编译优化掉了,看不到了. 解决方法: 在编译redis的时候,make添加参数.0表示编译的时候不对代码进行 ...

  5. Spring Boot入门——多文件上传大小超限问题解决

    多文件上传中遇到上传文件大小的问题 org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededExcepti ...

  6. MDX跨cube查询——lookupcube

    关于SSAS中从多个cube中查询数据 前提:涉及的cube在同一数据库中,维度共享(最好) SSAS中提供一条mdx语句同时从多个cube中查询数据的功能 实现该功能的就是lookupcube函数, ...

  7. Ubuntu16.04 安装wine下的QQ

    下载连接 wine-qqintl http://www.ubuntukylin.com/application/show.php?lang=cn&id=279 安装步骤 安装依赖库 sudo ...

  8. Postman工具——请求与响应

    两个内容: Request 请求和 Response 响应,下面就开始了. 一.Request 请求 Request 请求,我们只介绍常用的四种:GET.POST.PUT.DELETE,其他类型的就不 ...

  9. iostream,iostream.h差异

    1. 不加.h的是现在C++中规定的标准,目的在于使C++代码用于移植和混合嵌入时不受扩展名.h的限制, 避免因为.h而造成的额外的处理和修改而加.h的是c语言的用法,但是在c++中也支持这种用法, ...

  10. 浅谈 C# CLR 执行模块

    前言: 买了这本 CLR via C# 已有些日子了,但是一直没有认真翻过这本书,以前学的知识点都忘光了. 趁着现在下着雨的周末,大体记录一下今天了解的笔记,也好弥补一下 C# 知识上的一些盲点.   ...