中小工厂 PMC 系统怎么选?聊聊本地部署与多机同步这条路
一款面向 0-500 人中小工厂的本地部署 PMC 系统,为什么选择「本地优先 + 局域网同步」的技术路线?本文用实测数据,说明这套方案的能力与边界。
如果你是一家 0-500 人的离散制造厂,生产数据主要在厂区里产生,电脑数量 2-10 台,不希望上云、不希望交年费、断网也想继续干活——本地部署 + 局域网多机同步,是一条非常务实的技术路线。
本文不讨论功能,只讲一件事:这套架构的性能到底怎样、适合多大规模的工厂、不适合什么场景。如果你正在选型,这篇文章可以帮你判断它是否匹配你的工厂。
一、为什么中小工厂更倾向本地部署
我们接触过几十家中小工厂,一个非常明显的共性是:绝大多数生产数据,都在局域网内产生和消费。仓库入库、车间报工、采购下单、销售发货——全部在厂区里完成。把这类数据搬到公网云端,会带来几个实际问题:
- 网络抖动:中小工厂宽带有限,云端系统响应经常 3-5 秒
- 断网停摆:制造业断网很常见,云端系统一旦连不上就全员停工
- 数据焦虑:老板不希望自己的生产数据放在别人服务器上
- 年费压力:一套云端 ERP 每年续费几万元,中小工厂很难接受
所以,「本地部署 + 局域网多机协作」这种看起来「不那么时髦」的架构,在中小工厂场景下反而是务实的选择。
二、多机同步主流方案对比
PMC 系统要实现多台电脑协作,市面上主流有三种做法:
方案 1:中心服务器
方案 2:全量同步
方案 3:增量同步
轻排 PMClite 采用的是「写方向增量推送 + 读方向增量拉取」的混合方案:
- 客户端 → 主机:客户端本地算出变化,只推几十条,几十 KB
- 主机 → 客户端:主机维护变更日志,客户端按序号拉增量
- 首次连接:走一次全量快照,之后全部走增量
三、三步优化,让多机同步真正"丝滑"
第一步:推送增量(客户端 → 主机)
客户端每次保存时,不是推整张表,而是对比内存里的当前数据和上次的快照,算出变化的几十条,只把这几十条推给主机。
效果:一次保存的同步数据量,从「几十 MB」降到「几十 KB」。
第二步:拉取增量(主机 → 客户端)
主机每次收到变化后追加到变更日志(change_log)。客户端轮询时先问主机「现在到第几号了」,比自己本地进度新的部分才拉取。离线太久(日志被清理)时,自动降级为一次全量。
效果:客户端每次同步的数据量,从「完整快照」降到「变化的那几十条」。
第三步:客户端只更新变化的部分
这是最容易忽略、但收益最大的一步。很多「增量同步」方案只解决了网络传输问题,但客户端收到增量后,还是把整个内存里的数据全部重载一遍——结果一样慢。
轻排 PMClite 的做法是:增量写到本地数据库后,只更新内存里对应那几行,只重建受影响表的索引和缓存,只重绘当前正在看的那一页。
效果:客户端每次同步的内存处理,从 3-5 秒降到 100-300ms,10 倍级收益。
四、实测数据:优化前后差多少
测试环境(普通办公配置):Intel i5-10400(2020 年主流)、16 GB 内存、SATA SSD、千兆交换机局域网。
测试数据集(一个中型电子厂 1-2 年的累积量):
单次同步耗时对比
| 场景 | 优化前(全量) | 优化后(增量) |
|---|---|---|
| 客户端收到 1 条变化 | 3-5 秒 | 50-100 ms |
| 客户端收到 10 条变化 | 3-5 秒 | 80-150 ms |
| 客户端收到 100 条变化 | 3-5 秒 | 150-300 ms |
网络传输量对比
| 场景 | 优化前 | 优化后 |
|---|---|---|
| 主机变更 → 单个客户端 | 约 44 MB | < 50 KB |
| 10 台客户端一天总流量 | 数百 MB | < 20 MB |
多客户端并发体验
| 客户端数量 | 优化前 | 优化后 |
|---|---|---|
| 2-5 台 | 流畅 | 流畅 |
| 5-10 台 | 卡顿 | 无感 |
| 10-20 台 | 明显卡顿 | 可用 |
| 20-30 台 | 不可用 | 有压力但能跑 |
五、明确的适用边界
我们不吹「能支撑一切规模」。这是这套架构的真实边界:
- 员工 0-500 人,离散制造(电子、机械加工、五金、塑胶、食品贴牌)
- 单一厂区,同一局域网,2-10 台电脑协作
- 物料 5000-30000 条,年订单 1-5 万单
- 有千兆交换机(百兆也能跑,但建议客户端 ≤3 台)
- 对数据安全有要求、不愿上云、断网也要能用
- 有跨厂区、跨网络协作需求
- 50 台以上电脑同时操作
- 需要手机、平板、外网访问
- 需要作为全功能 ERP(本系统定位是 PMC 辅助工具)
- 流程制造(化工、冶炼、制药——工艺路线复杂且连续)
市面上能做到「本地部署 + 局域网多机同步 + 增量同步」的中小工厂 PMC 系统并不多。大多数产品要么是重型云 ERP(贵、断网不可用),要么是轻量单机版(不能多机)。轻排 PMClite 选择的是中间那条路——把「本地优先」做到极致,同时保持多机协作能力。
六、常见疑问
Q1:为什么不做 WebSocket 实时推送?
WebSocket 可以做到毫秒级同步,但引入的复杂度很高(异步编程、断线重连、心跳保活),维护成本大。对中小工厂的 PMC 场景,5 秒轮询已经完全够用——你录入订单后 5 秒内出现在同事屏幕上,业务上没有任何影响。
Q2:为什么用 SQLite 不用 MySQL?
中小工厂的单机协作场景有四个特点:单文件可备份、零运维、加密存储、断网可用。SQLite + SQLCipher 的组合,比 MySQL 更适配这四点。代价是不支持高并发写——所以方案上限是 20 台客户端,超过需要换架构。
Q3:两个人同时改一条数据怎么办?
当前是「最后写入者赢」的语义,和云 ERP 一致:后提交的覆盖先提交的。对 PMC 场景的绝大多数操作(订单状态变更、工单进度上报、库存调整),这个语义已经足够。
Q4:主机坏了怎么办?
主机是单点。主机重启后所有客户端自动恢复(数据在主机磁盘上)。如果需要真正的高可用,得走向分布式架构——但那超出了中小工厂的需求范围。建议定期用系统自带的「备份数据库」功能,把数据库备份到 U 盘或另一块硬盘。
Q5:数据安全怎么保证?
数据库用 SQLCipher 加密,密钥从本机机器码派生(绑定硬件);授权文件用 Ed25519 签名;数据库文件离开本机无法解密。即使有人拷贝走你的数据文件,没有这台电脑的硬件指纹也打不开。
Q6:和云端 ERP 最大的区别是什么?
云端 ERP 是「瘦客户端 + 中心数据库」:客户端什么都不存,一切都靠网络。轻排 PMClite 是「胖客户端 + 本地优先」:客户端有自己的加密数据库,日常操作不依赖网络,只有数据变化才同步。
好处:断网可用、响应本地化、数据自己持有。代价:同步逻辑更复杂、单机存储占用更大。
七、写在最后
做中小工厂的生产管理系统这么多年,最深的一个体会是:没有「最强」的架构,只有「最匹配场景」的架构。
云端 ERP 有它的场景——跨地域、多组织、强管控的中大型企业。本地部署 + 增量同步也有它的场景——单一厂区、2-10 台电脑协作、不愿上云的中小工厂。
轻排 PMClite 就是在这个场景里,把技术做到位的一款产品:
- Tauri + Rust + SQLite 的本地优先架构
- 增量推送 / 增量拉取 / 客户端增量应用三层优化
- 5000 物料规模下单次同步 100-300ms
- 支持 5-10 台电脑舒适协作
我们不追求「什么都能做」,而是追求「在这个规模区间,做得比其他方案更好、更稳、更匹配」。
诚实比吹牛更能帮到你。本文所有实测数据均基于普通办公配置(i5-10400 / 16 GB / SATA SSD),测试数据集接近中型电子厂 1-2 年累积量。轻排 PMClite 为独立产品。