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. web-view和wx.navigateback

    web-view 我们先来了解一下官方的东西 web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面.个人类型与海外类型的小程序暂不支持使用. 属性名 类型 默认值 说明 src ...

  2. thinkphp 多表事务处理

    try{ $this->user = D('User'); $this->user->startTrans(); //开始事务 $res = $this->user->S ...

  3. 关于centos7下/etc/sysconfig/目录没有iptables问题

    在新买的centos7服务器中想打开防火墙,采用传统centos6的方式用service iptables restart/stop/status 之后报错: 而在/etc/sysconfig/目录下 ...

  4. 剑指Offer——字符串的排序

    Question 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描 ...

  5. 找回J2EE 之再学习打卡记录

    由于之前准备专心搞前端,就把一些java知识闲置了很久.导致...现在有点艰难. 所以!我决定,要找回他. 这是篇打卡记录.(每天一小时.监督自己!) Day1(2017-10-8.)

  6. Spring初学之使用外部配置文件dataSource

    一.在Spring的基础上还要另外导入c3p0包和mysql的驱动包. 二.配置文件, jdbc.propertices:这里只做了一些简单配置 user=root password=123 driv ...

  7. 做一个完整的Java Web项目需要掌握的技能

    最近自己做了几个JavaWeb项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收获,列举出在做项目的整个过程中,所需要用到的技能和知识点,带给还没有真正接触过完整Java Web项 ...

  8. R中读取EXCEL 数据的方法

    最近初学R语言,在R语言读入EXCEL数据格式文件的问题上遇到了困难,经过在网上搜索解决了这一问题,下面归纳几种方法,供大家分享: 第一:R中读取excel文件中的数据的路径: 假定在您的电脑有一个e ...

  9. androidstudio与unity进行交互

    参考地址:http://blog.csdn.net/yangxuan0261/article/details/52427119 http://www.360doc.com/content/17/032 ...

  10. asp.net 服务器控件 JS验证

    ` //使用 OnClientClick="return checkselect()" function checkselect() { //验证下拉必选 var value = ...