服务网格(Service Mesh): 用于描述构成应用程序的微服务网络以及它们之间的交互。服务网格包括服务发现、负载均衡、故障恢复、指标收集和监控以及运维需求,例如A/B测试()、金丝雀发布、限流、访问控制和端到端认证等。


(补充:
         A/B测试:AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用;

         金丝雀发布(灰度发布):灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀部署也就是灰度发布的一种方式
        
         蓝绿部署:不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本

         Rolling update(滚动发布):一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用。周而复始,直到集群中所有的实例都更新成新版本)



 istio: 是一个完整的解决方案,在服务网络中统一提供许多关键功能:

  • 流量管理:控制服务之间流量和API调用的流向。
  • 可观察性:了解服务之间的依赖关系。
  • 策略执行:执行策略,资源良好分配。
  • 服务身份和安全

  这些功能极大的减少了应用程序代码,底层平台和策略之间的耦合。

 架构:

  istio服务网格逻辑上分为数据面板控制面板

  数据面板:由一组智能代理(Envoy)组成,代理部署为边车,调解和控制微服务之间所有的网络通信

  控制面板:负责管理和配置代理来路由流量,以及在运行时执行策略。

asdoc和estabb asdoc和estabb区别_测试

 Envoy: istio使用Envoy代理的扩展版本,用C++开发的高性能代理,调解服务网格中所有服务所有入站和出站流量。Envoy的许多内置功能被istio发扬光大,例如动态服务发现,负载均衡,TLS终止,HTTP/2&个RPC代理,熔断器,健康检查,流量拆分...

Envoy被部署为边车,和对应服务在同一个Kubernetes pod中。这允许Istio将大量关于流量行为的信号作为属性提取出来,而这些属性又可以在Mixer中用于执行策略决策,并发送给监控系统,以提供整个网格行为的信息。

边车代理模型还可以将istio的功能添加到现有部署中而无需重写代码(因为边车和业务是隔离的?)

Mixer: 负责在服务网格上执行访问控制和使用策略,并从Envoy代理和其他服务收集遥测数据。代理提取请求级属性,发送到Mixer进行评估。

Pilot: 负责收集和验证配置并将其传播到各种istio组件。它从Mixer和Envoy中抽取环境特定的实现细节,为他们提供用户服务的抽象表示,独立于底层平台。流量管理规则(即通用4层规则和7层HTTP/gRPC路由规则)可以在运行时通过Pilot进行编程。

Istio-Auth: 提供强大的服务间认证和终端用户认证,使用交互TLS,内置身份和证书管理。