Istio从入门到精通——Istio 能做什么?
Istio 能做什么?
下面通过一个天气预报应用展示 Istio 的服务访问形式。其中有两个服务:forecast 和 recommendation。forecast 由 Node.js 开发而成,recommendation 由 Java 开发而成。这两个服务之间通过最简单的服务名进行调用,在代码中只实现最简单的业务处理,不包含额外的服务访问管理逻辑,两个服务也都不感知 Istio 的存在。
我们看看那 Istio 在其中都做了什么。Istio 的 Sidecar 在 forecast 访问 recommendation时,可以完成如下的功能:
- 进行服务发现,获取 recommendation 实例列表,并根据负载均衡策略选择服务实例,发送请求。
- 隔离 recommendation 的故障实例,提高服务的韧性。
- 限制 recommendation 的最大连接数、最大请求数等进行服务保护。
- 执行对 recommendation 的访问超时,快速失败。
- 对 recommendation 或者服务某个接口的访问进行限流。
- 在访问 recommendation 失败时自动重试。
- 动态修改 recommendation 请求的头域信息。
- 在访问中注入故障,模拟 recommendation 失败。
- 将对 recomendation 的访问重定向。
- 对 recommendation 进行灰度发布,根据请求内容或权重比例切分流量。
- 对 forecast 和 recommendation 服务双方进行透明双向认证和通道加密。
- 对 recommendation 进行细粒度的访问授权。
- 自动记录服务访问日志,记录服务访问细节。
- 自动调用链埋点,构造分布式追踪。
- 生成服务访问指标,形成完整的应用访问拓扑。
- ……
所有这些功能,都不需要用户修改代码,用户只需要在 Istio 的控制面做对应的配置即可,并且都可以动态生效。