BasicAI 标注规范AI 的三大基石是算法、算力和数据,BasicAI 作为一个 AI 数据标注平台,能够为 AI 模型训练提供丰富和多样的标注数据,这些数据大多是半结构化的 JSON,本文描述了 BasicAI 标注平台对外导入/导出时所涉及到的各类数据的格式规范,包括 Dataset、Data、Classification、Class、Annotation Object、Labelmap 等,以便算法工程师参考。
BasicAI 技术架构BasicAI 全面遵循云原生架构原则,采用容器化运行方式,并使用 Kubernetes 来编排容器和屏蔽底层基础设施差异,以保障服务性能的可扩展性,部署规模的可弹性,以及在故障情况下的服务韧性。前后端均按功能模块拆分为了多个独立服务,每个服务均可独立升级,还可根据客户需求灵活组合。应用服务均设计为无状态,结合 Kubernetes 的自动扩缩容机制,能够依据当前负载情况自动调整资源用量。数据库、消息队列和缓存等基础服务均选择了开源且云原生友好的分布式或支持集群模式的开源软件,可应对海量数据的存储和查询。基于 GitLab CI 的 DevOps 支持从代码提交,到软件包和镜像构建,直至发布到对应 Kubernetes 集群(开发/测试/生产)的整个发布过程的全自动化,使得开发人员可以专注于代码编写,同时也显著减少了重复性的运维工作。
云原生 Java 微服务应用开发手册云原生环境的 Java 应用开发与传统的非容器化方式有许多不同之处,尤其是在构建和运行环节,传统方式需要构建 Jar 包,而云原生环境需要构建镜像,传统方式应用直接运行在操作系统之上,而云原生环境应用在容器内运行,传统方式应用只能在单机上运行,而云原生环境下借助于 Kubernetes 这样的容器编排工具,应用可以自动地被调度到任意的单个或多个节点上运行,更具弹性和容错性,本文将分享一些在云原生环境下开发一个真实的 Java 微服务应用的经验。
干净架构最佳实践干净架构(The Clean Architecture)是 Bob 大叔在 2012 年提出的一种适用于复杂业务系统的软件架构方式。干净架构的理念非常精炼,其中最核心的就是向内依赖原则。由于其并没有规定实施细节,因此采用不同语言和框架的软件系统都可以采用这种架构方式。这带来了很大的灵活性,但同时也增加了开发人员的实践难度。本文以一个 Java 语言(Spring Boot 框架)开发的 API 服务,以及一个 Dart 语言(Flutter 框架)开发的移动应用为例,来阐述干净架构的具体实施,期望对大家理解干净架构有所帮助。