主要观点:公司 API 出现可扩展性问题,CEO 要求 Turso Cloud 在 12 个月内扩展到能托管 10 亿个数据库,通过用 Go 语言结合 AI 重写 API 部分来解决,同时介绍了 Turso Cloud API 的相关情况、选择 Go 语言的原因、API 架构以及遇到的问题和解决办法,还提到未来的工作方向。
关键信息:
- Turso Cloud 是基于 SQLite 的托管数据库解决方案,能支持快速创建数据库,满足 AI 等多种使用场景,导致数据库创建数量暴增引发可扩展性危机。
- 选择 Go 语言写 API 层是因为其适合处理 API 调用和序列化等,且能避免“为何不用 Rust”的质疑。
- API 分为核心和代理层,两者对数据库映射的需求不同导致问题,如代理启动时的引导过程会给核心 API 带来巨大压力,通过流和分页等解决,还通过内联等优化减少内存使用。
- 虽有改进但仍无法满足 CEO 预期,下一步将在代理层添加持久状态,如使用 SQLite 数据库,采用 LRU 缓存等,未来还计划利用 Turso 的嵌入式副本等进行优化。
重要细节: - 代理层将数据库 URL 转换为物理位置,核心和代理层都需保存数据库映射,但需求不同。
- 内存优化前,代理启动时引导过程会使用大量内存,通过分块处理解决;存储路由时存在重复字符串,通过内联优化节省内存。
- 新的持久状态方案能解决引导问题,减少内存使用,还可利用嵌入式副本等进行后续优化,如对组织名称进行字典编码等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。