文档
平台架构概览
平台架构概览
了解 Postion 的多租户架构、路由系统和核心技术基础设施。面向开发者和高级用户的技术深度解析。
技术基础
Postion 基于现代、高性能的技术栈构建,专为可扩展性、安全性和开发体验而设计。本文档提供我们平台架构的概览。
本文档面向开发者、技术用户以及对 Postion 底层原理感兴趣的读者。
核心技术栈
我们的平台采用行业领先的技术:
| 层级 | 技术 | 用途 |
|---|---|---|
| 框架 | Next.js 14 | 全栈 React 框架,使用 App Router |
| 语言 | TypeScript | 类型安全的开发 |
| 数据库 | PostgreSQL + Prisma | 关系型数据库 + 类型安全 ORM |
| 支付 | Stripe | 订阅与 Connect 提现 |
| 存储 | AWS S3 / R2 | 媒体文件存储 |
| 邮件 | Resend + Mailgun | 事务性与营销邮件 |
| AI | Google Gemini | AI 辅助写作 |
多租户架构
Postion 采用 多租户架构,每个用户可以创建多个独立的站点(出版物)。这是我们「用户 → 站点 → 内容」层级结构的基础。
工作原理
┌─────────────────────────────────────────────────────┐
│ 用户账户 │
│ (计费、个人资料、全局设置) │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 站点 A │ │ 站点 B │ │ 站点 C │ │
│ │ (技术博客) │ │ (作品集) │ │ (Newsletter) │ │
│ ├─────────────┤ ├─────────────┤ ├─────────────┤ │
│ │ • 文章 │ │ • 文章 │ │ • 文章 │ │
│ │ • 页面 │ │ • 页面 │ │ • 页面 │ │
│ │ • 模板 │ │ • 模板 │ │ • 模板 │ │
│ │ • 订阅者 │ │ • 订阅者 │ │ • 订阅者 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
关键特性
🌐 独立域名
每个站点可以拥有自己的子域名 (blog.postion.app) 或自定义域名 (yourblog.com)。
👥 独立订阅者
订阅者列表按站点隔离。订阅站点 A 的用户不会自动订阅站点 B。
💳 统一计费
虽然站点是独立的,但计费和 Stripe Connect 设置在用户账户层面统一管理。
🎨 独立品牌
每个站点拥有自己的模板、配色、字体和外观设置。
路由架构
我们基于中间件的路由系统根据主机名智能处理请求。
请求流程
flowchart TD
A[传入请求] --> B{检查主机名}
B -->|postion.app| C[主平台路由]
B -->|其他域名| D[租户站点路由]
C --> E{路径检查}
E -->|/dashboard, /login, /site, /post| F[需认证路由]
E -->|/sso-bridge, /sso-logout| G[SSO 处理]
E -->|其他| H[重写到 /home/*]
D --> I[重写到 /domain/*]
I --> J[渲染租户站点]路由分类
| 类别 | 路径 | 说明 |
|---|---|---|
| 需认证 | /dashboard, /site/*, /post/* | 需要用户登录 |
| SSO | /sso-bridge, /sso-logout | 单点登录处理 |
| 公开平台 | /home/*, /blog, /pricing | 营销和公开页面 |
| 租户站点 | *.postion.app, 自定义域名 | 用户创建的出版物 |
内容安全
我们非常重视内容保护。Postion 内置了反盗版功能来保护你的付费内容。
安全功能
水印:可在付费内容上动态添加水印,显示查看者身份。
复制保护:可选的复制/粘贴和右键保护,用于敏感内容。
截图威慑:视觉指示器,阻止截图分享。
访问日志:追踪谁在何时查看了你的内容。
注意: 内容安全功能适用于 Premium 方案。可以在设置中按文章或全站开启。
数据库架构
我们的数据库围绕 42+ 个模型设计,按逻辑领域组织:
核心领域
| 领域 | 关键模型 | 用途 |
|---|---|---|
| 用户系统 | User, Account, Session, UserProfile | 认证与档案 |
| 站点系统 | Site, Template, TemplatePricing | 多租户出版物 |
| 内容 | Post, Page, Tag, Series | 内容管理 |
| 订阅 | Plan, Subscription, Transaction | 变现 |
| 邮件 | Subscribe, EmailCampaign, EmailSend | 营销自动化 |
| CRM | FanRelationship, FanTag, FanSegment | 粉丝管理 |
| API | ApiKey, ApiUsage, Webhook | 开发者平台 |
数据关系
erDiagram
USER ||--o{ SITE : owns
SITE ||--o{ POST : contains
SITE ||--o{ PLAN : offers
PLAN ||--o{ SUBSCRIPTION : has
SUBSCRIPTION ||--o{ TRANSACTION : generates
POST ||--o| POST_PRICING : has
POST ||--o{ POST_PURCHASE : has
USER ||--o| STRIPE_ACCOUNT : connectsStripe 集成
支付处理完全通过 Stripe 完成,使用两个核心功能:
Stripe Subscriptions
用于订阅者的经常性收入:
- 月付和年付计费周期
- 自动支付重试
- 订阅管理门户
Stripe Connect
用于创作者提现:
- 直接存入创作者银行账户
- 自动扣除平台费(5%)
- 全球提现支持
- 税务表单生成
了解更多支付设置请查看 Stripe Connect 指南。
存储基础设施
媒体文件使用云对象存储:
- 主存储:AWS S3,可靠、可扩展
- CDN:全球内容分发,快速加载
- 格式:支持图片、视频、文档等
存储配额因方案而异。详情请查看 存储配额 文档。
性能与可扩展性
Postion 为高性能和大规模而构建:
⚡ 边缘运行时
中间件在边缘运行,全球延迟最小化。
📦 智能缓存
智能缓存静态内容和 API 响应。
🔄 自动扩缩
基础设施根据流量需求自动伸缩。
需要更多技术细节?
- 公开 API 文档:使用 REST API 构建集成
- Webhooks 指南:接收实时事件通知
- 自定义域名:连接你自己的域名