Tikrok v6.0 新的生产级架构,成本不变,但是部署复杂略有增加

1 小时 57 分钟前
 5wunian

Tikrok — 第 6 代内网穿透平台

关键词: QUIC 内网穿透 | 多协议隧道 | gRPC 微服务 | Go 多模块 | Docker 全栈

Tikrok 是第 6 代内网穿透平台——基于 QUIC 协议,数据面与控制面分离架构,支持 TCP/HTTP/UDP 多协议隧道转发,具备完整的用户认证、流量计费、配额管理和监控体系。


项目概况

解决的问题

传统内网穿透工具(如 frp 、ngrok )存在协议老旧( TCP 长轮询)、单端口多协议支持弱、缺少企业级功能(计费/配额/SSO )等问题。Tikrok 从零开始,围绕 QUIC 协议构建了一套完整的数据面+控制面分离的内网穿透平台。

六代演进

现状

维度 状态
QUIC 隧道( TCP/HTTP/UDP ) 生产可用
微服务网关 + 5 gRPC 服务 生产可用
用户认证( JWT/API Key ) 生产可用
流量计费( 30s 上报 + 原子递增) 生产可用
产品/订单/支付( Jeepay ) 生产可用
Casdoor SSO 集成 功能完成,待灰度
管理后台 API 功能完成,前端对接中
E2E 验证( 36 项检查) 全部通过
单元测试覆盖 14 个核心包 82%-100%
Kubernetes 部署 实验阶段

架构总览

设计哲学

数据面与控制面分离 — 这是 Tikrok 区别于 frp/ngrok 的核心设计决策:

数据面 (Data Plane):      控制面 (Control Plane):
  QUIC 隧道转发              HTTP API + gRPC 微服务
  高性能、低延迟              灵活扩展、独立部署
  无状态(路由信息查询控制面)   有状态( MySQL/Redis/etcd )

数据面专注做一件事——快速转发字节流;控制面处理所有业务逻辑(认证、计费、配额)。两层之间通过 gRPC 通信。

                    ┌──────────────────────┐
                    │  tikrok client CLI    │
                    │  (QUIC 隧道连接)      │
                    └──────────┬───────────┘
                               │ QUIC
                               ▼
┌──────────────────────────────────────────────────────┐
│              tikrokd-server (QUIC 数据面)               │
│  443/UDP: QUIC | 443/TCP: TLS (h3/h2/http/1.1/tikrok)│
│  DNS/SNI 路由 → 隧道直接转发                            │
└──────┬───────────────────────────────────────┬────────┘
       │ gRPC (API Key 验证/配额检查)            │ 字节计数
       ▼                                        ▼
┌──────────────────────┐            ┌──────────────────────┐
│  tikrok-services     │            │ TrafficReporter      │
│  Gin Gateway (:8088) │◄───────────│ 每 30s 上报流量      │
│  5 × gRPC 微服务     │            └──────────────────────┘
│  etcd/MySQL/Redis    │
└──────────────────────┘

多模块工作区

为何选择 Go 多模块而非单体仓库?

  1. SDK 独立发布tikrok-sdk 是核心 QUIC 协议栈,独立版本号,可被外部项目引用
  2. 服务端/客户端独立构建tikrokd-server 部署在服务器,tikrok CLI 分发给用户,两者没有共享代码的直接依赖
  3. 微服务独立演进tikrok-services 是完整的微服务平台,使用自己的 go.mod 管理依赖

演进方向是成为平台级产品,同时方便制作成开放平台,方便引入三方协作开发。毕竟一个人可以完成的有限,微服务化后,可以分包给不同的开发者。

108 次点击
所在节点    Go 编程语言
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1212802

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX