其他分享
首页 > 其他分享> > istio组件mixer初学篇

istio组件mixer初学篇

作者:互联网

 袁小花 360云计算

女主宣言

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

PS:丰富的一线技术、多元化的表现形式,尽在“360云计算”,点关注哦!

图片


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

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


1

背景简介

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

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

图片

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


2

mixer主要有两个作用

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原理

策略缓存的原理


缓存结构定义:

image.png

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

遥测上报监控原理


上报的结构体定义。

image.png

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

image.png

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

image.png

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

image.png

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


标签:缓存,请求,Envoy,istio,mixer,初学,check
来源: https://blog.51cto.com/15127564/2666787