为什么通信双方需要代理 \ 传统代理的作用?
- 选择性的拦截某些流量
- 流量都经过代理,代理就可以统计分析这些访问
- 代理可以缓存数据(通信双方可能有多层代理,如果两方比较远,可以选择近的代理得到数据)----》cdn
- 分发流量,负载均衡----》nginx
- 通信双方不能直接通信的情况----》科学·上网
- 添加信息----》广·告注入
Service Mesh是什么?
可以看做在TCP层之上的一个特殊的网络代理(代理可以是嵌套的,也就是说通信双方中间可以多多层代理),特殊点在于
- Service Mesh中每一个应用都跟着一个代理(分布式代理)。
- Service Mesh知道整个集群的所有应用信息
- Service Mesh额外添加了热更新、注入服务发现、降级熔断、认证授权、超时重试、日志监控等功能(具有业务逻辑)
- 由于代理是分布式的,所以需要有一个管理这些代理配置的控制中心
Istio 是什么?
- 官方解释:连接、安全加固、控制和观察服务的开放平台
- 是Service Mesh的一种实现
- 对比Service Mesh的特殊点:对Service Mesh中的控制中心做了细分(分成了 Pilot、Mixer 和 Citadel)
Istio的功能?
- 连接(Connect):自动地服务发现、负载均衡、流量控制等,能够实现灰度升级、AB 测试和红黑部署等功能
- 安全加固(Secure):自动为服务之间的调用提供认证、授权和加密。因为所有的流量都是通过代理的,那么代理接收到不加密的网络流量之后,可以自动做一次封装,把它升级成安全的加密流量。
- 控制(Control):用户可以配置各种规则(比如 RBAC 授权、白名单、Rate Limit 或者 Quota 等),当代理发现服务之间的访问不符合这些规则,就直接拒绝掉。
- 观察(Observe):查看服务运行期间的各种数据,比如日志、监控和 tracing,了解服务的运行情况。
Istio解决什么痛点?
- 由于微服务多,之间协调工作,出问题的话,很难排查,引入Istio,可以监控到链路中哪个部分响应慢,快速定位到哪个调用出现了问题。
- 节点出现异常,可以把流量分发到其他可用节点,提高集群容错性
- 因为可配置访问地址,所以方便AB测试
- 服务之间的认证、限流、授权等方式通常是一致的,使用Istio,就可以不需要每个服务之间重复实现这些功能
控制中心Pilot、Mixer 和 Citadel各自负责什么?
- Pilot:为 Envoy 提供了服务发现,流量管理和智能路由(AB 测试、金丝雀发布等),以及错误处理(超时、重试、熔断)功能。 用户通过 Pilot 的 API 管理网络相关的资源对象,Pilot 会根据用户的配置和服务的信息把网络流量管理变成 Envoy 能识别的格式分发到各个 Sidecar 代理中。
- Mixer:为整个集群执行访问控制(哪些用户可以访问哪些服务)和 Policy 管理(Rate Limit,Quota 等),并且收集代理观察到的服务之间的流量统计数据。
- Citadel:为服务之间提供认证和证书管理,可以让服务自动升级成 TLS 协议。
官方介绍:
https://istio.io/docs/concepts/what-is-istio/
istio搭建:
https://blog.csdn.net/luanpeng825485697/article/details/84500612
详细介绍:
https://www.sohu.com/a/270131876_463994
网友评论