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对这些代理管理的组件。
架构图。
上边是数据平面 一系列的代理组成。
下边是控制平面
proxy支持很多协议。serviceA 之间通信是通过proxy之间转发。
Pilot 指挥干活。 客户端连接,传输数据给Pilot。Pilot分发出去
Mixer 策略,集群访问控制。 遥测 ,数据收集和汇报,收集服务之间流转的数据。 分为: istio-telemetry 和istio-policy ,分别处理遥测数据的收集和策略的执行。
Adapter 适配器, 接收adapter汇报的数据 。 常见的:prometheus等
Galley 校验配置,相当于后勤的工作。
Citadel 安全相关的,服务到服务之间授权rbac。
Istio解决的问题
故障排查
- 这个请求在拿失败的?A有调用C吗?
- 为什么用户的请求/页面 ka住了?
- 为什么系统这么慢?哪个组件慢?
应用容错性
- 客户端没有实质timeout导致应用卡住。
- 没有重试机制,某个服务偶尔出现的异常导致用户页面错误。
- 某些节点异常(如load高),导致应用响应变长。
应用升级发布
- 新版本一次性升级,一旦出错影响范围很大
- 无法进行A/B测试,根据用户属性访问不通版本
- 服务版本的依赖关系处理不当导致的服务不可用
系统安全
- 服务都是HTTP的而非HTTPS
- 没有流量限制,任何人都可以对服务发起攻击
本文来自博客园,作者:王竹笙,转载请注明原文链接:https://www.cnblogs.com/edeny/p/14721115.html