《Istio 大咖说》第 7 期:基于 Envoy/Istio 的云原生 API 网关 —— 开源项目 Hango 的设计与实现

讲师简介

韩佳浩,网易数帆资深研发工程师,主导 Hango 网关开源研发及设计,负责网易数帆轻舟 API 网关集团内部大规模落地及产品化建设。具有三年网关相关研发及大规模实践经验。

话题介绍

云原生架构演进下,更多的业务着重于 API 的统一暴露,API 网关便成为 API 统一接入的必备组件。本次分享主要从云原生概念出发,探讨云原生模式下 API 网关的选型之道;介绍网易研发的高性能、可扩展,功能丰富的云原生 API 网关 Hango 的设计之道以及落地实践。

问答

  1. Envoy体系学习图谱,现在是整体文档都看完有用到时再翻文档

    答:可以关注社区动态,学习思路路线上可以根据自己想对 Envoy了解的程度按照以下线路进行:了解 Envoy 基本架构 -> 使用 Envoy 常用特性 -> 尝试扩展 envoy -> 对 Envoy 做深度定制,另外 Tetrate 即将推出免费的 Envoy 教程,敬请关注。

  2. Hango项目与网易轻舟项目是什么关系?开源版么?

    答:网易轻舟项目包含轻舟微服务、轻舟API网关、轻舟容器等产品,轻舟API网关是Hango项目的商业版。

  3. Ingress Controller与API Management是否有必要合为一个产品? 就是 k8s 资源,意思两个产品位置是否需要合一?

    答:具体需要看网关的定位,如果作为微服务网关的话,不建议合为一个产品;如果承担ingress功能,可以合一。

  4. 使用 Envoy 以网关的形式和以 Sidecar 的形式做服务治理有什么区别,使用场景分别是什么呢?以网关的形式做东西南北向流量的服务治理的方案可行吗?

    答:网关主要做南北流量治理;Sidecar承担集群东西流量治理。在大规模场景下,不建议网关作为东西流量治理;服务调用关系简单,API规模有限可以。

  5. Hango必须配合Istio一起使用吗?

    答:推荐使用Istio, 仅单独使用网关数据面丧失网关动态配置能力,自身静态配置复杂度也大大提高。

  6. 接问题5,如果是可以独立使用,在k8s内额外创建一个网关,这个网关目的是什么,这在集群内服务之间互访的时候等于破坏了Kubernetes本身的svc特性,consumer服务找这个网关所注册的服务?能否举例一个具体的场景。

    答:不推荐独立使用,网关的功能对外统一暴露集群内API。网关暴露的意义,一部分是代理,另一部分是丰富的治理功能以及多维度的指标监控。

  7. 加载 Lua后性能有下降吗?

    答:简单的插件,性能基本在20%损失。

  8. 边缘网关有哪些场景?看到ppt里有写,但是没有讲。

    答:类似集群中的统一API暴露,只是不需要额外的用户配置。

  9. 性能没太看懂,9wqps是几台机器?几c?

    答:容器:8c8g 物理机:56c256g

  10. lua 怎么保证脚本安全?隔离性怎么样?写个while true 会不会把整个网关搞崩?

    答:lua的插件链的异常不会导致主线程crash,异常后跳过逻辑,执行之后的插件链。

  11. 大规模场景下,踩过哪些坑

    答:升级的平滑度以及线上规模的预估。

  12. 可以认为是在Istio gateway + virtualservice的一个升级版么? 是不是用了这个网关我就可以不用Istio gateway了?

    答:是的