Istio从入门到精通——Istio 能做什么?

发布时间 2023-11-20 09:50:56作者: 左扬

Istio 能做什么?

  下面通过一个天气预报应用展示 Istio 的服务访问形式。其中有两个服务:forecast 和 recommendation。forecast 由 Node.js 开发而成,recommendation 由 Java 开发而成。这两个服务之间通过最简单的服务名进行调用,在代码中只实现最简单的业务处理,不包含额外的服务访问管理逻辑,两个服务也都不感知 Istio 的存在。

  我们看看那 Istio 在其中都做了什么。Istio 的 Sidecar 在 forecast 访问 recommendation时,可以完成如下的功能:

    1. 进行服务发现,获取 recommendation 实例列表,并根据负载均衡策略选择服务实例,发送请求。
    2. 隔离 recommendation 的故障实例,提高服务的韧性。
    3. 限制 recommendation 的最大连接数、最大请求数等进行服务保护。
    4. 执行对 recommendation 的访问超时,快速失败。
    5. 对 recommendation 或者服务某个接口的访问进行限流。
    6. 在访问 recommendation 失败时自动重试。
    7. 动态修改 recommendation 请求的头域信息。
    8. 在访问中注入故障,模拟 recommendation 失败。
    9. 将对 recomendation 的访问重定向。
    10. 对 recommendation 进行灰度发布,根据请求内容或权重比例切分流量。
    11. 对 forecast 和 recommendation 服务双方进行透明双向认证和通道加密。
    12. 对 recommendation 进行细粒度的访问授权。
    13. 自动记录服务访问日志,记录服务访问细节。
    14. 自动调用链埋点,构造分布式追踪。
    15. 生成服务访问指标,形成完整的应用访问拓扑。
    16. ……

  所有这些功能,都不需要用户修改代码,用户只需要在 Istio 的控制面做对应的配置即可,并且都可以动态生效。