BasicAI SaaS 技术架构

BasicAI SaaS 是一个以数据为中心的 MLOps 平台,可用于快速开发和迭代 AI 模型,功能覆盖从数据集管理、数据标注、数据治理、模型训练,直到模型推理的整个 AI 生命周期,支持点云、图片、文本、音频、视频等各类数据标注。

BasicAI SaaS 技术架构

BasicAI SaaS 全面遵循云原生架构原则,以保证服务性能的可扩展性,部署规模的可弹性,以及在故障情况下的服务韧性。前后端均按功能模块拆分为了多个独立服务,每个服务均可独立升级,还可根据客户需求灵活组合。应用服务均设计为无状态,结合 Kubernetes 的自动扩缩容机制,能够依据当前负载情况自动调整集群规模。数据库、消息队列和缓存等基础服务均选择了开源且云原生友好的分布式或支持集群模式的开源软件,可应对海量数据的存储和查询。基于 GitLab CI 的 DevOps 支持从代码提交,到软件包和镜像构建,直至发布到对应 Kubernetes 集群(开发/测试/生产)的整个发布过程的全自动化,使得开发人员可以专注于代码编写,同时也显著减少了重复性的运维工作。

整体架构

basicai-architecture

从上到下,整个系统可划分为五层,分别是接入层(Access Layer)、应用服务层(Application Service)、基础服务层(Base Service)、容器抽象层(Kubernetes)和基础设施层(Infrastructure)。
接入层
接入层接收外部的请求并转发给相应的服务,其中又包含了四层(TCP)和七层(HTTP)负载均衡。接入层对外隐藏了内部服务运行细节,只对外暴露 Web 前端、API 网关、WebSocket 等少量需要公开访问的服务,保障了内部服务的安全性。
应用服务层
应用服务包含前端、后端服务,以及各种模型推理服务。前端服务除了主应用,由于标注工具类应用的技术栈跟主应用差别较大,因此各类标注工具独立成为了单独的应用,比如图片标注工具、点云标注工具等。后端服务采用微服务架构,按业务模块划分微服务,各微服务通过 API 网关统一对外提供服务,这样还能在网关里集中实施认证、鉴权、限流等操作。
基础服务层
基础服务层包含数据库、消息队列、缓存、对象存储等支撑服务。考虑到 SaaS 服务对性能水平可扩展性的要求,数据库和消息队列均采用了新兴的分布式系统 TiDB 和 Pulsar。缓存使用了 Redis,也支持集群模式。对象存储使用了兼容 AWS S3 的开源对象存储系统 MinIO,同样支持分布式。
容器抽象层
为了屏蔽底层基础设施的差异性,引入了 Kubernetes 容器抽象层,这样无论是在什么样的软硬件环境,上层服务的部署方式都是统一的。
基础设施层
基础设施层提供计算、存储、网络等硬件资源,可以是各大公有云,也可以是自建私有云。

请求路由

basicai-request-routing

整个系统宏观来看,包含给用户使用的前台应用(APP)、给内部使用的管理后台(Admin),以及给开发者使用的 API 开放平台(Open)三个子系统。各个子系统通过不同的域名对外提供服务,由于认证鉴权方式不一样,因此拥有各自的 API 网关(Admin API Backend 兼具网关作用),但各个子系统会共享业务微服务,这样能最大程度复用业务代码,同时还能降低开发和运维的成本。