19.png
服务网格所强调的另外一个功能,是动态配置不用重启,实际上是重启的,它会启动一个新的进程,然后在这进程之上进行新的策略,还有一些初始化,这时候再请求,之前那个进程的 socket 副本。当老的关闭链接以及退出之后,它才会接收新的,这时候就实现了对用户没有感知的重启。
这就是它的 xDS,如图,可以看到它的密度是非常细的,
20.png
终端发现服务(EDS),实际上就是服务的发现服务;
集群发现服务(CDS)是为了发现集群;
路由发现服务(RDS)是为了对路由进行一些处理;
器(LDS)来动态地添加、更新、删除器,包括过滤链的一些管理、维护。
另外还有刚才说到的健康检查(HDS),
还有聚合(ADS)是对于监控指标进行聚合的接口;
另外一个密钥发现(KDS)是和安全相关的。
首先,如果来了一个请求,会到刚才所说的工作线程里面去,工作线程会有器,收到之后进行一些处理,然后要往外发,这时会调用路由的发现功能,然后再找到相应的集群,再通过这个集群找到相应的服务,一层一层的往下面调用。运维体系 实时计算平台
2、控制面板Pilot
接下来介绍的是控制面板的三大组件,第一个就是 Pilot。
22.png
Pilot 是运行时的代理配置,刚才所说的 xDS,就是用 Pilot 来进行调用,负责把相应的一些策略,失败恢复的特性派发下去。Pilot 是负责管理所有的这些代理,代理和管理就通过 Pilot 来完成,是平台无关的一个拓扑模型。目前主要支持的是 K8S。
23.png
Pilot 是一层抽象的独立于底层平台的模型,因为这里有个代理,对于多平台或多样性的管理架构,即适配器的架构。平台特定的适配器负责适当填充这些规范,要通过具体平台的适配器形成一些规范,和通用的模型结合,生成必须要往 Envoy 下发的数据,并且配置、推送都是由 Pilot 来完成的。


Pilot 的整个服务发现和负载均衡,如图,Pilot 是Kubernetes DNS提供的域名进行访问,首先调用 Service B 的url,这时候 Envoy 会进行截获并处理,处理完之后会找到相应的负载均衡的池子挑选一个进行流量下发。Pilot 目前支持的这种负载均衡的方法,规划了很多种。但目前只实现了三种,前两种还是随机和轮循,多了一个最小请求的负载均衡算法。它能找到这些 Pilot 里面哪个被调用的最少,然后进行调用。
Pilot 的一些规则配置,可以看到基本是负责规则的管理以及下发。
路由规则。
目的地策略。主要包含负载均衡的算法,以及对于负载均衡算法抽象的策略预演。
出站规则。
把这些规则分了三类,好处是对这三类都会生成一些模板。
image.gif
流量的拆分可以看到是基于标签的流量拆分,这里配置的如版本,环境,环境类型,它根据这个规则来进行流量的派发。比如说99%都发给之前版本,新版本先1%先测一下,类似于A/B测试。
另外一个比较高级的是基于内容,因为它是L7的这种过滤,可以基于内容来过滤,并且支持表达式,这种将iPhone的流量全部导到新的服务里面去,并且有标签,版本必须得是金丝雀版本。
3、混合器Mixer
28.png
Mixer 是在应用代码和基础架构之间提供一个中间层,来隔离 Enovy 和后台基础设施,这里的后台是指 Promethus,ELK 这些。
Mixer 有三个核心特性:
先决条件检查。负责白名单以及 ACL检测;
配额管理。负责这种使用频率上的控制;
遥测报告。
总共分为两类,在生成配置模板的时候它是有两类的,第一类就是负责检查check,第二类就是负责报告reporter。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66285-4.html
为什么歌还要唱得这么好