选型的核心原则
技术选型不是选「最好」的技术,是选最适合你的技术。
对于一人公司做50个平台,我的选型标准是:
- 生态成熟:文档完善、社区活跃
- 上手简单:不需要太多学习成本
- 运维省心:出了问题容易排查
- 成本可控:能免费就不花钱
后端:Node.js + TypeScript
为什么选 Node.js
| 对比项 | Node.js | Python | Go | Java |
|---|---|---|---|---|
| 前后端统一语言 | ✅ | ❌ | ❌ | ❌ |
| 生态丰富度 | ★★★★★ | ★★★★★ | ★★★ | ★★★★★ |
| 异步IO性能 | ★★★★ | ★★★ | ★★★★★ | ★★★★ |
| 部署简单度 | ★★★★★ | ★★★★ | ★★★★★ | ★★★ |
| 运维成本 | 低 | 低 | 极低 | 中 |
选 Node.js 的核心理由:前后端统一 TypeScript,代码可以复用。
为什么用 TypeScript
// 类型安全让重构成本极低
// 当你有50个平台时,这一点至关重要
interface PlatformConfig {
name: string;
domain: string;
modules: string[];
theme: ThemeConfig;
}
// 一个类型定义,50个平台复用
const configs: Record<string, PlatformConfig> = {
mishimao: { /* ... */ },
zhaofangtong: { /* ... */ },
// ...
};
数据库:PostgreSQL
为什么选 PostgreSQL
- PostGIS:50个平台中有20+需要地理位置功能
- JSONB:灵活的数据结构,适合快速迭代
- Schema隔离:一个实例支持多平台
- 成熟稳定:跑了18个月,零数据丢失
不选 MySQL 的原因
MySQL也完全可以用,但我需要 PostGIS 做地理空间查询。如果不需要地理功能,MySQL也是好选择。
不选 MongoDB 的原因
早期我用过 MongoDB,但遇到几个问题:
- 事务支持不如关系型数据库
- 数据一致性更难保证
- 当数据量大了以后,迁移成本极高
前端:React + Vite + Tailwind
为什么选 React
- 生态最成熟,组件库最多
- 团队/社区支持最好
- 对于50个平台,组件复用是刚需
为什么选 Vite
- 启动速度极快(<1秒)
- HMR 热更新丝滑
- 构建产物小
为什么选 Tailwind
- 不用写CSS文件,直接在组件里写
- 原子化CSS,天然适合组件复用
- 配合 shadcn/ui,组件开发效率翻倍
缓存:Redis
没什么好纠结的。Redis 是缓存的事实标准。
使用场景:
- Session 存储
- 排行榜
- 限流
- 分布式锁
- 消息队列(轻量场景)
部署:Docker + Nginx
Docker
每个服务一个容器,通过 docker-compose 编排。
优点:
- 环境一致性
- 扩容方便
- 回滚简单
Nginx
做反向代理和负载均衡,50个平台的域名都指向同一台服务器,通过 Nginx 路由到不同的后端服务。
# Nginx 配置示例
server {
listen 443 ssl;
server_name mishimao.com;
location / {
proxy_pass http://localhost:3001; # 觅食猫前端
}
location /api/ {
proxy_pass http://localhost:4001; # 觅食猫API
}
}
server {
listen 443 ssl;
server_name zhaofangtong.com;
location / {
proxy_pass http://localhost:3002; # 找房通前端
}
location /api/ {
proxy_pass http://localhost:4002; # 找房通API
}
}
CDN:CloudFlare
- 免费版就够用了
- 全球CDN加速
- 免费SSL证书
- DDoS防护
- DNS管理
省了买CDN和SSL的钱。
监控:Prometheus + Grafana
自己搭的,零成本。
监控指标:
- CPU / 内存 / 磁盘
- 请求量 / 响应时间 / 错误率
- 数据库连接数 / 慢查询
- Redis 内存使用
消息队列:RabbitMQ
不是所有平台都需要。但有些场景必须用:
- 异步发短信
- 通知推送
- 数据同步
不用的技术
| 技术 | 不用的原因 |
|---|---|
| Kubernetes | 太重了,50个平台用不上 |
| 微服务框架 | 简单的HTTP路由就够了 |
| GraphQL | RESTful 完全够用 |
| MongoDB | 数据一致性需求高 |
| AWS | 国内服务器更便宜 |
总结
后端:Node.js + TypeScript + Express
数据库:PostgreSQL + Redis
前端:React + Vite + Tailwind + shadcn/ui
部署:Docker + Nginx
CDN:CloudFlare
监控:Prometheus + Grafana
没有银弹,只有适合的弹。 技术选型的核心是匹配你的业务场景和团队能力。
对于一人公司:简单 > 优雅,稳定 > 先进。