《Edith网关——面向小红书亿级DAU的网关大规模实践-陈华昌.pdf》由会员分享,可在线阅读,更多相关《Edith网关——面向小红书亿级DAU的网关大规模实践-陈华昌.pdf(42页珍藏版)》请在三个皮匠报告上搜索。
1、EdithEdith网关-面向小红书亿级DAU的大规模实践小红书/陈华昌(空古)02.架构与设计01.背景03.核心功能实践04.稳定性实践05.未来展望目录历史总是惊人的相似1.背景混乱的过去Edith网关Edith 网关于 2021 年 9 月底 MVP 版本上线,同年 11 月上线正式版。Edith 命名来源:钢铁侠送给蜘蛛侠的人工智能系统名为Edith,中文译作伊迪斯。这是继星期五、贾维斯后的第三代人工智能。目前成果:经过一年多的旧业务治理,覆盖全司业务路由的 99.6%,社区业务的 96%+,电商业务的 100%。新业务 100%接入 Edith 网关。选择适合自己的2.架构与设计架
2、构与设计南北向架构Edith网关架构设计产品化设计南北向架构旧:链路层深、私拉乱接、规范职责不清。北向接入点以 kong 为主,定制化能力不高。南向 kong 依赖 Ingress,不能跨区服务发现。路由和 API 散落,且发布风险大。新:利用 nginx+lua 代替北向 kong,Edith 网关代替南向 kong。形成统一出口,标准管理路由和API资源。可跨区服务发现,发布链路安全可控。旧新Edith架构-全局视角实行多租户多集群策略,根据业务属性进行精细化拆分。(隔离性)各区建立 pop 点,核心业务实行跨云多活部署。(高可用)Edith架构-单机视角预加载:从 Etcd 中拉取对应网
3、关集群所需要的所有元数据。并导入到字典树中,生成对应的前缀匹配树。插件:通过标准规范形成通用组件,并支持业务个性化定制开发。统一至插件市场,反哺所有业务。泛化调用:主要包含协议转化、Context 处理、熔断、降级、异常处理等能力。数据库:Etcd 充当着配置中心的角色,MySQL 主要负责控制面数据管理。管理端:主要负责三个方面管理,数据、发布、稳定性处置。产品设计逻辑重视稳定性稳定性限流、熔断、降级、隔离、变更管控重视易用性易用性可视化UI交互,一切皆可点点点操作。推行一键式操作,例如生成 API、发布、回滚等。兼顾通用和可扩展性通用和可扩展性插件市场,通用和个性化并存。OpenAPI,可
4、集成至自己的业务平台。来源于业务,赋能于业务。3.核心功能实践核心功能实践元数据管理插件泛化调用实验分流路由生命周期元数据管理-热更新全量更新灰度更新为什么选择 Etcd?减少过多外部依赖,选取轻量化可控的 kv 类型,贴合 K8S 生态。Etcd本身的 watch、租约特性非常符合网关的数据面需求,且基于 Raft 算法的分布式一致性,具有很好的高可用性。元数据管理-版本管理为了保障数据安全,针对 API 元数据进行了多个阶段的设计,包含草稿、快照、生产版本、可回滚版本。优势:数据安全隔离,职责单一稳定。解决数据状态管理的复杂性,使得操作方便。元数据管理-呈现元数据管理-灰度能力百分比灰度,
5、1-100%。按照 pod 维度进行推送灰度数据,控制爆炸半径。高风险业务强制必须灰度和间隔时间。举例:API API 灰度发布能力灰度发布能力-通过上报和下发指定业务集群 pod 数据,实现数据面元数据的灰度能力。插件-标准化、市场化通用类型的插件由网关团队统一提供。例如:验签、权限校验、反爬风控等。支持 API 维度的个性化配置,可视化一键开启和配置。开发者可定制化开发,反哺公司业务。插件给网关提供了一种灵活的机制,使得开发者能在网关上添加额外的行为。插件-WASM,更优雅的解决方案WASM-全称WebAssembly,新型的低级字节码,性能好、可移植性高。WASM 主要解决了跨语言和跨平
6、台运行的问题,实现了 build once,run everywhere。Go 1.21 版本将增加对 WASI WASI 的支持。泛化调用-构建动态Thrift报文在不使用 Thrift 编译器生成的代码情况下,进行 rpc 调用,实现 rpc 接口的热插拔功能。通过导入的动态 IDL 定义获取 thrift rpc 接口的请求和响应的数据结构定义(元数据一部分),然后根据数据结构模拟发送和读取 thrift 的二进制报文。实验分流机房分流机房分流:业务将服务变更代码部署至三地机房中的一处,然后在网关配置指定实验分组分流至指定机房,进行实验验证。服务分流服务分流:业务将新的变更代码部署成一个