AIGP蛋白质生成平台
Java 开发工程师
2024年03月 - 2024年07月
项目地址:https://aigp.biomap.com
项目简介:AIGP平台是一款基于其自研的AI大模型“xTri-mo”开发的、能帮助解决生命科学问题的工具。简单说,这就
像一个能生成蛋白质的ChatGPT,根据用户给定的参数和功能,给出各种蛋白质、酶、细胞等的设计方案。设计的初衷是帮
助研究者提供一些生命科学技术的基础版本,让研究者可以在基础版本上进行创造,节约了一定的实验时间和实验费用。
技术栈:Java 17、Spring Boot、MySQL、MyBatis Plus、Redis、LiteFlow、RabbitMQ、S3、Bos
主要工作:
1. 负责数据集模块的开发,编写设计文档,进行数据库表设计及业务代码的开发,实现了用户数据集文件的上传、下
载、列表展示、模糊查询等功能。
2. 封装自定义组件,使用 LiteFlow 规则引擎,实现提交任务后自动将用户数据集信息入库到数据库,提高了代码的复
用率。
3. 参与平台多云部署,根据合规要求,用户隐私数据存储在特定区域,底层服务调用和文件处理做切分,进行服务拆
分,负责 file-handler 的开发。
4. 参与用户数据加密开发,为用户颁发用户粒度的 AES256 密钥,利用 KMS 加密管理用户的秘钥,实现用户数据的全
密态加密。
5. 负责平台层数据大盘的开发,开发定时任务服务,根据合规要求,实现业务数据库与数据大盘的解耦,对接 Grafana,实现大盘数据实时展示。
6. 负责 Model Booster 模块 storage 服务的开发,通过调用脚本实现用户 Cfs 磁盘的挂载及磁盘使用空间的实时监
控,用于平台计费,实现用户 storage 初始化、容量计算等功能。
7. 负责用户注册免授权白名单的开发与维护,实现白名单用户注册后免授权功能。
8. 负责 Model Booster 模块自定义镜像模块开发,底层依赖于 AI 工程组,异步构建镜像并将结果回调,根据结果发
送邮件通知。
项目难点:
1. 分布式ID:由于需求中文件 id 要对用户展示,雪花算法得到的 id 过长,不适合向用户展示,升级为 6 位 62 进制字
符串,解决分布式ID问题。
2. 组件化开发:项目中每个 model 的业务逻辑可能存在差异,并且随着项目的发展,后续可能会新增更多的model,
采用了LiteFlow规则引擎,将业务逻辑模块化,并根据不同的 model 动态加载和执行相应的规则,降低代码耦合度,
增加可扩展性。
3. 优化工具方法:原生 File 对象得不到文件夹的真实大小,现有工具类使用递归方式计算文件夹大小,存在一定风险,
通过迭代方式优化,降低时间复杂度,避免栈溢出风险。
4. 优化基因序列处理:由于基因序列的特殊性(每个序列是一个较长的字符串),采用传统哈希表进行存储的各项操作
性能受限制,利用前缀树这种数据结构进行优化。
5. 数据库死锁:开发数据集模块时,对数据库进行 CURD 时,数据库出现死锁,对照 InnoDB 错误日志依次排查,发
现原有某个接口开启事务未提交,所以滚成一个大事务,最终死锁。