12 ServiceMesh代表作istio-----12-1 ServiceMes、Istio架构原理

什么是ServiceMesh?

  • 服务网格
  • 是概念,不是产品
  • 解决网络层面的问题

Linkerd

  • 始于2016年的CNCF官方项目
  • 1.x基于节点(物理机、虚拟机)
  • 2.x基于kubernetes(源自Conduit)

Istio

  • Google、IBM、Lyfy发起的开源项目
  • 2017年退出,2018年7月发布1.0
  • 多平台支持

对比

  • 都是基于sidecar模式
  • 都分为数据层和控制层
  • Istio更受欢迎

https://github.com/istio/istio   # 地址

Istio架构和原理

https://istio.io/latest/zh/     # 官网

核心就是一个代理

 

  一个pod共享网络代理,接管pod网络。让服务的进出流量都经过代理。有Istio对这些代理管理的组件。

架构图。

上边是数据平面   一系列的代理组成。

下边是控制平面

serviceA 之间通信是通过proxy之间转发。 proxy支持很多协议。

Pilot  指挥干活。 客户端连接,传输数据给Pilot。Pilot分发出去

Mixer  策略,集群访问控制。       遥测 ,数据收集和汇报,收集服务之间流转的数据。   

Adapter 适配器, 接收adapter汇报的数据 。 常见的:prometheus等

Galley  校验配置,相当于后勤的工作。

Citadel 安全相关的,服务到服务之间授权rbac。

Istio解决的问题

故障排查

  • 这个请求在拿失败的?A有调用C吗?
  • 为什么用户的请求/页面  ka住了?
  • 为什么系统这么慢?哪个组件慢?

应用容错性

  • 客户端没有实质timeout导致应用卡住。
  • 没有重试机制,某个服务偶尔出现的异常导致用户页面错误。
  • 某些节点异常(如load高),导致应用响应变长。

应用升级发布

  • 新版本一次性升级,一旦出错影响范围很大
  • 无法进行A/B测试,根据用户属性访问不通版本
  • 服务版本的依赖关系处理不当导致的服务不可用

系统安全

  • 服务都是HTTP的而非HTTPS
  • 没有流量限制,任何人都可以对服务发起攻击
原文地址:https://www.cnblogs.com/edeny/p/14721115.html