有赞是一家主要从事零售科技 SaaS 服务的企业,帮助商家进行网上开店、社交营销、提高留存复购,拓展全渠道新零售业务。在今年,有赞技术中台开始设计实现新的云原生 PaaS 平台,希望通过一套通用模型来进行各种应用的发布管理和微服务相关治理。而 Apache APISIX 在其中起到了非常关键的作用。
为什么需要流量网关
有赞 OPS 平台
在传统架构中是没有网关的,那么通用功能该如何复用?这里的通用功能指业务无关的一些特性,比
有赞 OPS 平台是前期基于 FLASK 的单体应用,主要以支持业务为主。后来逐渐上线了很多业务,部署了很多业务端代码,进入容器化阶段。网关在当时只是内部 FLASK 应用的一部分功能,且没有一个明确的网关概念,仅作为业务应用的流量转发功能使用。下图展示的就是当时的网关 1.0 业务结构。
由于前期整个体系主要着重于业务方向,所以没有产生太多的动力去进行改造。从 2018 年开始,通过内部交流我们发现,如果没有一个很好的网关层治理,对后续产品功能的实现和业务接入度上会带来越来越明显的瓶颈。
没有网关层治理出现的问题
问题一:性能方面
- 每次新增后端服务,都需要进行编码变更
- 流量转发的代码用 Python 简单实现,未按“网关”要求进行设计
- Flask 框架的性能限制,单机 QPS 范围局限在 120-150
- 重复造轮子:不同的业务需求都生产一套对应入口
- 管理麻烦,运维复杂
基于这个问题,我们的行动方向是:专业的工作交给专业的系统去做。
问题二:内部业务方面
- 需要管理的内部服务数量非常多(上百)
- 部分服务未对接 CAS 实现鉴权
- 新的服务对接 CAS 存在对接成本,重复开发耗时耗力
- 所有服务直接配置在接入层,没有内部服务的规范及最佳实践
带着以上这两方面问题,我们就开始对网关类产品进行了相关的调研。