汽修维修管理系统SaaS的技术选型复盘:我们最终为什么用这套技术栈

发布时间:2026/11/5 18:34:05

汽修维修管理系统SaaS的技术选型复盘:我们最终为什么用这套技术栈 本文是「汽修 SaaS 开发连载」第 6 篇。前几篇讲了业务建模和并发控制这篇回头看地基技术栈怎么选的哪些判断对了哪些现在想改。先列约束再谈选型技术选型最怕上来就比框架评分表。我们先把汽修场景的硬约束摆出来选型是围绕这些约束做的门店网络不可靠。车间里手机信号时有时无收银和开单不能因为断网就停摆。写入集中在营业时段。白天工单、领料高频写入凌晨几乎没流量写入曲线非常陡。团队要养得活。我们是小团队选型必须考虑半年后招人能不能招到、社区资料多不多。客户数据敏感。车牌、手机号、消费记录都在库里SaaS 化之后数据安全没有退路。整体形态模块化单体不是微服务一开始团队里也有直接上微服务的声音理由是后面要做连锁和开放平台。我们最后选了模块化单体modular monolith按领域拆模块模块间只走接口调用┌─────────────────────────────────────────────┐ │ 应用层 │ │ PC 后台 API │ 技师 App API │ 小程序 API │ ├─────────────────────────────────────────────┤ │ order │ inventory │ archive │ member │ ... │ ← 领域模块接口隔离 ├─────────────────────────────────────────────┤ │ 共享基础设施 │ │ 认证鉴权 / 消息队列 / 对象存储 / 定时任务 │ └─────────────────────────────────────────────┘理由写在这里供同样规模的团队参考多租户 SaaS 的复杂度在数据隔离和权限不在服务拆分。第一阶段就把运维拆成十几个服务等于把人力从业务功能挪去搭基础设施客户看不到任何东西。微服务该拆的时候比如后面报表和实时业务分库再拆单体的模块边界拆清楚迁出去是顺手的边界混乱的微服务往回收才是灾难。主力组件和选它的理由层选型关键理由现在的评价后端框架Spring Boot团队熟事务和生态省事对没换的理由数据库MySQLInnoDB事务强一致是进销存的刚需对领料扣减依赖行锁和条件更新缓存Redis会话、权限缓存、号段发号对消息队列RabbitMQ工单事件广播进度推送、凭证生成起步量级足够量再涨可能换暂不折腾对象存储云 OSS维修照片视频量大但访问低频对注意配好生命周期降冷前端 PCVue Element Plus后台表单密集型页面组件全对技师端微信小程序口袋工具免安装车间扫码即用半对见下文部署云主机 Docker Compose单客户版本迭代快P3 连锁阶段大概率要迁 K8s一个当时没想清楚的选型技师端技师端我们最初在原生 App和小程序之间犹豫最后选了小程序图的是免安装、发链接就能用。上线后两个真实反馈好的一面推广成本确实低。让一个五十岁的钣金师傅装 App 很难让他扫个码用小程序教会只要两分钟。问题的一面车间弱网下小程序的体验比预期差页面白屏时技师不知道是没网还是卡了。我们后来做了两层补救工单列表和待办做本地缓存断网可看关键操作报完工、领料失败时有明确提示和自动重试。原生 App 的离线能力更强但配套的推送、更新、多端发布成本对我们来说现阶段不划算。这个决定以后可能推翻先记在这里。数据库里最值钱的一个设计决定选型文章一般不谈这个但它比框架选择重要我们从第一版就把tenant_id 写进了所有业务表哪怕单店版根本用不上。之前做别的项目吃过亏单租户系统改多租户全表加字段加索引历史数据回填前后折腾了一个多月。这次每个建表语句都带 tenant_id查询拦截器自动拼租户条件。代价是几乎为零收益在 P3 连锁阶段兑现。有个细节tenant_id 相关的索引必须放在联合索引最左否则拦截器拼上条件后全表扫描。这条我们是在压测时发现的一个没带 tenant_id 前缀的查询在 30 万行工单表上慢查询告警。复盘两处现在会改的消息队列上得太早。初期事件量小用 Spring 事件 本地表轮询完全够RabbitMQ 的运维成本镜像队列、告警配置前三个月基本是纯负担。报表一开始就独立数据源。这个反而是对的忍住了先共用业务库的诱惑后来写 BI 那篇会展开。选型没有标准答案约束不同答案就不同。如果你也在做类似的多门店 SaaS欢迎评论区聊聊你们的团队规模和栈。下一篇开始进连锁架构系列多租户数据隔离怎么做到门店只看本店总部可穿透。「汽修 SaaS 开发连载」· 06 / 05 领料扣库存的并发问题实战 · 04 单车利润需求让表结构推倒重来
延伸阅读

更多相关文章

2026/11/4 11:56:27

OpenMAIC实测:文档智能转课堂的技术链路与部署全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 14:09:12

AI写代码越来越复杂?用KISS和YAGNI原则驯服AI生成风格

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑