FydeOS

云服务与应用生态

面向上万名个人与企业用户的云服务,应用商店、文件共享、社区论坛。

时间
2019 — 2023
角色
全栈开发(远程)
技术栈
Node.jsGoMongoDBPostgreSQLReactWebRTCDiscourseDockerGrafana

关键数字

项目背景

FydeOS 是基于 ChromiumOS 的操作系统,面向国内个人与企业用户进行本土化和二次开发定制。系统装好之后,个人用户需要使用日常应用、提高生产力、设备间共享文件;企业用户还需要账号认证、同步偏好设置、绑定设备等等云服务。

FydeOS 应用商店首页
FydeOS 应用商店

我做了什么

  • 应用商店:面向国内用户的 Chrome 应用镜像商店。通过爬虫持续抓取并重新签名打包 1000 多款网页应用和浏览器扩展。商店支持应用浏览、搜索和版本更新;管理后台供运营维护应用信息、版本和上架状态。后来还加入了直接从商店安装安卓应用的功能。
  • FyDrop:基于 WebRTC 的浏览器端文件共享,同一网络下不登录账号就能在设备间互传文件。集成进 FydeOS 文件管理器,成为系统内置功能。
  • 社区论坛:基于 Discourse 定制的论坛。处理上游版本升级的兼容问题。开发多语言切换、订阅绑定和工单系统等插件。
  • 企业管理平台:参与后端从 Node.js / MongoDB 到 Go / PostgreSQL 的重构。
FyDrop 文件传送中
FydeOS 社区论坛的话题列表
FydeOS 社区论坛的话题列表

技术细节

账号与同步服务重构: 账号服务和同步服务原本是两个独立的 Node.js 服务,后又加入企业管理后端,三套服务各自对外提供接口。重构时把账号服务和同步服务用 Go 重写,后端服务统一用 gRPC 定义接口,前面加一层 APISIX 网关统一对外。除了编程语言,数据库也从 MongoDB 迁移到 PostgreSQL,优化数据结构,配合联合索引和分片,重构后的同步服务数据库查询耗时降低 50%。

后端重构:账号和同步服务用 Go 重写,经 APISIX 网关和 gRPC 统一接口

FyDrop 点对点连接: 浏览器通过 WebSocket 连上信令服务器,按公网 IP 把同网络下的设备分进一个房间。文件经 RTCDataChannel 在设备之间直接传输,全程加密。文件切成小块按顺序发送,每发完一段等接收方确认再继续,避免缓冲区堆积。用 STUN 发现公网 IP,考虑到在某些复杂的 NAT 环境下会失败,所以另外部署了 TURN 服务器中继兜底。