Tikrok Services — 第八代微服务平台
新网站 tikrok.cc 陆续更新中 基于 gRPC + Gin 的微服务平台,采用 Go 多模块工作区 (go.work) 架构, 通过 gen/ 接口隔离层 实现 RPC 客户端与服务端实现解耦,共 15 个独立模块。
第八代更新了什么
与第七代相比,第八代主要围绕「内容交付」补齐了三个关键拼图:
1. 独立图片处理微服务
从零搭建了 Image Service ( HTTP :9006 + gRPC :9056 ),基于 Go 原生 imaging 库实现生产级图片实时处理。支持裁剪、缩放、格式转换,本地 LRU 磁盘缓存( 7 天 TTL ),信号量限流并发。Nginx 侧做了 proxy_cache 直连路由,图片直接走 nginx 缓存层,不经过 Gateway 。Markdown 内容中的 ref:media_id 引用自动解析为图片 URL——论坛帖子和教程终于能正常显示配图了。
2. TUS 协议大文件分段上传 新增独立 TUS Upload Service ( HTTP :9007 ),支持断点续传、并发分片。前端上传大文件时中断了可以从断点继续,不用重新传。上传完成自动写入媒体资源库并触发 S3 归档。软件版本发布也改为 TUS 上传驱动——上传完成即发布。
3. QUIC 网关合并进 tunnel 服务 之前 QUIC 数据平面是独立的 tikrokd-server ,维护两套部署太痛苦了。第八代将 QUIC 网关完整合并进 tunnel 服务,UDP listener 、HTTP/3 、TLS ALPN 协商( h3/h2/http1.1/tikrok )、流量统计、证书管理( Let's Encrypt 自动签发)、速率限制全部整合在一个进程中。部署少一个组件,监控少一套指标。
配套还补了开发者注册审核流程、管理员升级接口、20+ 个 Swagger API 文档更新、4 个数据库迁移。
第八代的核心思路:内容上传( TUS )→ 内容存储( S3 + 媒体资源管理)→ 内容消费( Image Service 实时处理 + Nginx 缓存加速) 这条链路终于完整了。