大猫OPC

技术选型:CI4 + MySQL 单库,放弃了什么

阅读 0 更新于 2026-10-27

先说结论

技术选型的本质是"放弃"。我选 CodeIgniter 4 + MySQL 单库,放弃了队列、微服务、SPA,换来的是:客户在任何一台普通 LNMP 机器上都能跑。

为什么是 CI4

候选 优势 放弃原因
Laravel 生态最全 对共享主机/低配 VPS 偏重,客户环境不可控
Symfony 架构严谨 学习与维护成本高,一个人扛不住
WordPress 上手快 多语言要靠插件,改不到"翻译队列"这一层
CI4 轻、PSR 规范、文档够用 生态小,很多轮子要自己写

关键约束:交付给客户后,我没有服务器权限。所以框架必须能在 PHP 8.2 标准环境跑,不依赖 Redis、队列、Supervisor。

单库的理由

  • 备份简单:一个 SQL 文件 + uploads 目录
  • 事务简单:不用考虑跨库一致性
  • 迁移简单:客户换服务器就是导库 + 拷文件

代价是数据量上限低。按当前内容模型,单库支撑几十万条内容没问题。

放弃的东西

  1. 队列:翻译任务用数据库状态机(pending/failed/done),不用 Redis
  2. 微服务:翻译服务中心是独立进程,但通过 HTTP 同步调用 + 重试,不做消息总线
  3. SPA:后台用服务端渲染 + Alpine.js,首屏快、无构建依赖
  4. 多租户:一站一部署,不做 SaaS

得到的性质

  • 部署 = 上传 + 装库 + 跑向导,30 分钟
  • 升级 = 覆盖文件 + 跑迁移
  • 排障 = 看日志文件,不需要分布式追踪

对"一个人维护、卖给中小企业"这个场景,这些性质比技术先进性重要得多。

2C4G 机器上,首页 100 并发 P95 约 200ms,500 并发开始出现排队。放弃的具体方案是 Laravel + Redis 队列:客户环境经常没有 Redis,装不上就等于系统不可用。

本页内容对你有帮助吗? 感谢反馈(演示按钮,暂未接入后端)