云原生API网关 – 开源项目Hango网关设计与实践 原 荐

原生溯源

什么是原生

CNCF(云原生计算基金会)对云原生的定义是:云原生是一种架构模式,有利于各组织在公有云、私有云和混合云等动态环境中,构建和运行可弹性扩展的应用。代表技术包括,容器、微服务、不可变基础设施和声明式API

从云原生的定义可以看出,云原生具备快速集成,拥有良好的Istio扩展性及高可用性。得益于Kubernetes的发展,云原生技术蓬勃发展,已然迈入istio原理新时代。

AEnvoyPI网关的意义

随着容器技术以及微服务理念的发展,更多的产品组织着重于暴露开放API,用于客户端进行交互。API网关充当API代理的功能,网关接收请求,将请求进行统一路由转发至后端服务。网关作为抽象层,为整个微服务系统或集群提供统一接入层。

除了代理功能外,API网关为微服务集群提供统一的安全、响应转换、熔断、降kubernetes官网级和监控等多维度功能,确保流量安全可Istio靠。

随着云原生理念引领微服务进行演进,应用迭代频率以及交付速度会加快,API网关的出现可以使得业务开发更加专注于自身业务逻辑的设计,提升研发敏捷性。在云原生的架构下,API网关也在向云原生演进,Hango网关便是云原生设计下催生的优秀网关产品。

云原生API网关特点

进入云原kubernetes怎么读生时代,行业用户除了关注传统API网关提供的请求代理,流量治理等常规功能外,更多的开始关注云原生兼容性,支撑场景的多样以及更优异的性能。

相较于传统API网关,在云原生模式下笔者认为API网关应该具备的一些思考:

  • 服务发现方式:与传统网关服务发现需要手动指定upstream,云原生网关在服务发现上需要动态感知业务变envoy什么意思中文化。istio架构和原理
  • 更高的性能追求:随着Kubeenvoy是什么牌子rnetes以及容器将云原生带入新时代以及微服务理念的发展,API网关的卓越性能可以减少整个链路的RT。
  • 云原生架构兼容/整合:网关的部署架构是否能够和云原生架构进行兼容,能否和容器以及服务网格进行无缝对接。
  • 动态配置能力:传统的反向代理无法实现动态配置加载能力,云原生模式下的代理配置更新变化较频繁,动态配置下发能力显得尤istio发音为关键。
  • 部署形态及架构:网关部署架构能否满足弹性扩展,是否支持从业务混部到独立部署的平滑迁移。
  • 监控/链路追踪:云原生架构中,良好的监控和链路追踪能力可以kubernetes pdf便于运维人员进行服务观测以及问题定位。

Hango API 网关设envoy代理

随着istio原理集团内业务大规模进行容器化改造,业务对网关的诉求也愈发强烈。我们团队着手于建设新一代高性能API网关,目的是替换集团内部envoy是什么牌子较多的采用Java的异步网关、Zull, 同时满足业务逐渐上云的南北向流量治理需求。

在选型方面,我们选择Envoy作为云原生网关kubernetes中文文档实践的关键基础组件,具备丰富的特性,包括:

  • 原生功能丰富:相较于Ngikubernetes集群nx,HAProxy等流量代理所需的基本功能,Envoy本身基于C+envoy是什么牌子+实现了相当多的高级治理功能,包括负载均衡、熔断、限流、故障注入等。更为丰富的功能使得Envoy 天生具备多场景。
  • 丰富的可观察行:Envoy具备灵活的日志配置、丰富的指标数据以及开箱即用的多种Tracing能力。
  • 灵活的扩展性:Envoy提供了L4/L7 Filter机制,可以让开发者在不侵入Envoy主干的前提下对Envoy进行扩展与增强。同时,xDS协议的kubernetes中文文档提出,使得Envoy几乎所有的配置都可以动态下发、加载、生效,而无需重新加载进程。

同时,Envoy在行业内的发展趋势也非常迅猛,2istio书籍020年云原生报告显示,Envoy 在行业内使用量上升明显,去年排名第四的Envenvoy什么意思中文oy,超过F5和HAProxy 从15%的份kubernetes与docker的关系额增长到29%。

架构设计

基于istio原理以上典型特性,秉承云原生的理念,envoy是什么牌子通过大量内部积累实践经验,我们开源了Hango API 网关。Hango 中文名“函谷”,是一个高性能,可扩展,功能丰富的云原生API网关。

Hango网关基于Envoy及Istio构建。数据面基于Envoy扩展,增强插件链;控制面基于Istio进行扩展。具体架构如下:

云原生API网关 - 开源项目Hango网关设计与实践
                                                原
                                                    荐

控制面组件包括Hango Portal, Hango API Plane, Slime以及Istiod。Hango API Plane生成Gateway、DestinationRule、VirtualService等CRD以及EnvoyPlugin等Slime CRD;通过Slimkubernetes与docker的关系e进行扩展,将Slime CRD动态转化为EnvoyFilter,对数据面envoy进行扩展。envoy翻译

下图展示Hango网关插件链的数据流,通过创建EnvoyPlugin CR,Slime动态监听聚合生envoy网关成对kubernetes部署应的EnvoyFilter,完成对Envoyenvoy网关 filter chainkubernetes中文文档的动态kubernetes集群扩展。

高性能

和传统API网关相比,在云原生模式下,业务开发更加敏捷,业务拆分更加细致。这envoy读音样会使得业务每一跳之间的时延更加istio架构和原理敏感。网关承接整个微服务集群的流量代理,良好的性能是业务是否选择网关的必envoy使者备条件。

Hango API网关采用Envoy作为核心数据面,众多核心功能kubernetes部署通过原生C++实现,相较于Nginx、HAProxy等通过扩展脚本实现主要功能的方式,性kubernetes集群能优势更envoy网关为明显。

同时,在实际落地过程,我们也对网关做了一定的性能优化,包括:

  • 配置过滤: 通过对集群svc以及DestinationRule 资源的配置过滤,减少envoy cluster 数量。
  • 插件配置:提供全局插件开关以及路由维度的插件开关,减少非必要插件逻辑对性能的开销。

通过优化,基于20个cluster,500条route配置规模,kubernetes我们对envoy使者Hango进行了梯度测试,在容器网络下,500条route配置规模,Hango RPS可以envoy意思达到9.5w。

多场景

Hano API网关具备支撑微服务网kubernetes与docker的关系关、七层负载均衡、Kubernetes Ingress等多场景能力kubernetes中文文档。 作为业envoy是什么牌子务上云的南北流量入口,Hango网关具备以下特性:

  • 灵活路由配置:支持不限于请求Path,Header、Method、Query等进行灵活路由配置。
  • 多注册方式:支持Kubernetes注册中心动态感知业务集群变化,满足业务平滑扩缩容场景;支持传统逻辑部署,使得业务可以kubernetes与docker的关系平滑迁移。
  • 多场景治理:支持多维度限流、熔断、降级、重试等多场景流量治理。
  • 多协议支持:支持HTTP、gRPC、Websocket等多协议接入。
  • 多维度安全:支持多维度黑白kubernetes pdf名单、外部认证等多种认证方式。

同时,作为通用网关,Hango同样可以被用于L7 负载均衡器,Kubernenvoy读音etes 边缘网kubernetes与docker的关系关等通用场景。

可扩展

功能扩展

Hango网关开源Rider 模块,用于功能envoy翻译扩展。用户可以通过简单的教程进行可插拔插件的形式的动态扩展网关功能。

Rider作为Hango API网关开源的module,提供插件开发的SDK,使得用户可以通过Lua扩展的方式编写自定义插件,通过简单的配置即可以动态扩展envoy L7 filters,使得Lua 插件可以像其他Native Http filteenvoy读音r一样在运行时进行配置。

可以参考Hango Github 网页Rider自定义插件教程 ,这里提供一个简单的开箱即用的UA黑白名单插件,读者可以进行自定义插件学习。

弹性伸缩

Hango网关支持容器化部署,提供基于Kubernetes的部署架构。建立在数据面和控制面隔离istio和k8s区别的基础上,数据面节点基于无状态的envoy进行部署。 基于xDS协议的动态下发设计,数据面可以进行动态横向扩展,在业务大促或流量增长时进行平滑伸缩。

容错性

Hangistio发音o网关可以实现业务配置隔离,增加业务容错性,对于重点业务可以单独区分网关集群进行部署,提升整个网istio发音关产品可用性。

Hango网关设计之初便可以完成对业务配置的隔离,基于Istio的模型,在Hango网关最istio架构初在规kubernetes pdf模实践就考虑到了增强Istio的能力,通过对DestinationRule 相关CR增加对应的Gateway label。通过label匹配的方式控制cluster资源的下发,起到配置隔离作用。

Istio社区也在版本演进过程中(&envoy是什么牌子gt;Istio1.7),提出了一种解决envoy意思思路,cluster的获取可以依赖VirtualService(VS)中的host配置,通过VS资源route host与DestinationRule资源进行映射 ,生成对应kubernetes中文文档的cluster, 下发至指定的Proxy。这样kubernetes部署可以确保不同网关之间的cluster配置隔离,减少不同配置相互影响,提升服务稳定性;同时,大大减少线上cluster的数量,进一步提升proxy性能。

如下所示,通过配置隔离,kubernetes集群a-hango 网关集群仅能收到app1的cluster。通过此可以实现线上配置隔离,提升产品稳定性,同时进一步提升网关性能。istio教程

易操作

Hango网关提供从控制界面以及API的方式提升用户操作体验。

控制平面

提供简单的控制面,用户可以通过可视化操作进行服务和路由的生命周期管理。具体可以参考:Hango网关控制面操作流程

OpenAPI

为了便于企业用户接口Hango, Hango提供了标准的Restful API,便于企业用istion户完成对已有网关产品向Hango的平滑kubernetes怎么读迁移。

Hango API 网关规模落地

在网易集团内部,kubernetes面试题基于Hango网关构建的轻舟网关已经大规模落地时间,承担网易istio书籍集团每日百亿级流量。本文主要istio书籍从平滑纳管、灰度发布以及可观测实践三个角度介绍Hango网关在网易集团内istio书籍部的落地实践。

平滑纳管

基于Hango网关规模落地中,我们对容器服务,裸金属服务等kubernetes pdf实现Istio平滑纳管以及平滑迁移,为业务上云提kubernetes pdf供了便利接入,打消了业务上云无法平滑的顾虑。

在网易集团内部,针对不同的业务划分不同的网关集群,从业务上进行配置隔离,提升网关可靠性。

灰度发布

在实践过程中,灰度主要涉及两方面,一方面是业务容器化改造过程中kubernetes集群的灰度迁移istio架构,另一方面kubernetes官网便是网关产品自身的灰度策略。

业务容器灰度

业务在容器化改造过程中,存在多版本上线场景,需要根据不同版本进行灰度发布。Hango网关提供根据业务不同版本进行灰度的istio和k8s区别过程,envoy代理通过对服务打label的形式,在路由的过程中,kubernetes怎么读选择不同的label进行灰度权重配置。

网关灰度

作为微服务集群的入口,网关的稳定运行关系着整个集群流量的稳定及可靠。在实地落地过程中,建立一整套网关自身灰度envoy翻译体系istio架构非常有必要,Hango网关在网易集团内部落地过Envoy程采用四层LB进行灰度envoy什么意思中文体系构建,通过对Hango数据kubernetes与docker的关系面打label的形式,控envoy读音制网关自身灰度。

可观测

基于Envoy良好的观测性,kubernetes教程Hango网关在网易集团内部进行规模落地过kubernetes怎么读程中,istio安装结合服务网格场istio 翻译景,提供丰富的观测能力,整体架构如下:

  • 日志

    Enkubernetes部署voy中事件的详istio架构细记录,Hango网关基于Envoy进行数据面扩kubernetes翻译展,提供了灵活易配置的Akubernetes面试题ccessLog,支持自定义格式,自定义顾虑规则以及输出。

    基于fiEnvoylebeat以及elastic的能力,构建一体化日志审计平台。

  • 监控

    基于Envoy cluster merticistio教程等信息,利用Promethues构建网关/服务等多维envoy读音度指标体系。同时,针对网关容器化部署模式,基于Kubernetes 容器对应的 metrics构建容器维度的指标监控,涵盖CPU/内存/带宽等多维度监控。

  • 链路追踪

    istio书籍于Envoy开箱即用的多种tracing接入,拓展力强,目前已完成线kubernetes教程上SkyWalking等tracing的接入。

    写在最后

    Hango作为一名开源istio发音领域的新生儿,我们会秉承拥抱云原生的理念,继续跟进Istio/Envoy的演进,发挥更大的领域价值。下一阶段istio 翻译,我们会在多语言扩展,LB融合等多场envoy代理景进行发力,也期待更多关注云原生、API网关的同学能够加入Hango开源社区建设。

    诚挚的欢迎大家关注Hango Gateway

    参考文档

    云原生(Cloud Native)的定义

    云原生关乎文化,而不是容器

    Hango 开源解读:云原生网关实Envoy践,为何要选择 Envoy ?

    作者kubernetes与docker的关系简介

    韩佳浩,开源项目 Hango 核心开发者,网易数帆资深研发工程师,主导 Hango 网关开源研发及设计,envoy代理负责网易数帆轻舟 Akubernetes与docker的关系PI 网关在网易内部大规模落地及产品化建设。具有三年网关相关研发及大规模实践经验。

    分享预告

    9月9日20:00,Hango 项目核心开发者,网易数帆技术专家王佰平将在 InfoQ 公开课envoy网关分享《如何基于开源Envoy,构建高性能云原生微服务网关》,从网易数帆开源 API 网关项目 Hango 实践出发,介绍如何基于开源 Envenvoy读音oy 构建高性能、易扩展、可观察的云原生微服务网关。敬请点击这里报名预约观看!