需求落地 → 数据分析 → 最小可行设计 → 风险分析 → 分步解决
1️⃣ 明确需求,最小化数据
-
目的:先抓核心,避免做无关的功能
-
方法:
-
明确前端会传哪些数据
- 比如血透记录:患者 ID、生命体征、透析参数等
-
明确系统需要处理哪些数据
- 数据库存储结构、字段、格式
-
保证最小可行性(MVP)
- 只做核心业务逻辑,例如记录、保存、生成报表
-
核心思想:程序员就是对数据进行处理,所以第一步必须清楚“数据长什么样、怎么流转”。
2️⃣ 分析可能的问题
在保证最小可行功能后,需要思考可能会遇到的问题:
- 数据冲突:多用户同时修改同一条记录
- 重复数据:同一条数据被多次提交
- 数据缺失:前端传参不完整
- 异常情况:网络中断、服务异常
先解决业务最重要的问题,再考虑边缘场景。
3️⃣ 设计方案
-
步骤化:
-
核心流程设计
- 明确数据从前端到数据库的完整流程
- 确定验证逻辑、存储逻辑、输出逻辑
-
业务规则设计
- 权限控制、字段合法性、逻辑校验
-
异常处理设计
- 数据冲突解决方案:乐观锁/悲观锁
- 重复数据处理:唯一约束/去重逻辑
-
高并发设计(可选)
- 如果核心流程已经稳定,再考虑缓存、消息队列、分布式锁等
-
重点是 一层一层解决问题,先保证核心业务逻辑安全,然后再考虑性能和并发。
4️⃣ 风险与优化
-
高风险点:
- 并发写入 → 数据覆盖或丢失
- 长时间处理 → 前端等待超时
- 大量生成报表 → 内存占用过高
-
优化策略:
- 使用消息队列异步处理耗时任务
- 分批处理大数据
- 对核心数据加锁/版本号检查
5️⃣ 总结方法论
- 拿到需求 → 明确最小可行数据
- 分析数据流 → 数据从哪里来、怎么处理、怎么存
- 思考潜在问题 → 重复、冲突、异常
- 先解决核心问题 → 再考虑边缘和高并发
- 迭代优化 → 性能、可扩展性、容错
核心思想: “从数据出发,一步步解决问题” ,每一步都清楚为什么而做,不跳步。
举例
现在有一个需求,需要做医院的血透设备与患者的排班管理,横坐标有每天的时间,纵坐标有机器,需要将实现能够将患者拖到对应的二位数组里面的一个小格子里面,它能够对应当天的时间和设备。
第一步
我们首先分析他的最小化数据是什么样子的。
一般情况发送的最小化数据,每个格子对应的是
{
患者id
设备id
时间id
}
我们只需要将这些数据保持到数据库就行了,然后后期需要查找的时候就将他们查找出来,返回给前端就可以
第二步
分析可能出现的问题
比如患者重复排班一天内,患者时间重复排版,患者和设备重复排班。
比如高并发条件下进行对患者的增删改查,我们需要考虑并发情况下,患者的排版数据,因为他们操纵的是一个共享资源。我们下一步想是加锁还是事务,锁的话是乐观锁还是悲观锁,可能会带来哪些问题。
以及如何避免一个数据被多次修改,导入导出遇见网络波动如何解决,如何保证数据的强一致性和可靠性
第三步
针对第二步可能出现的问题,进行解决,可以用一些熟悉的技术栈,明确核心业务逻辑流程针对性的处理任务
第四步
针对第三步的一些解决方案进行优化,比如可以汇总一些,如果想要解决某个业务场景可以用哪些技术来解决
例如需要异步做某些操作
线程池还是消息队列
要做数据强一致性
用事务,还是消息队列异步+重试+延迟+ACK确信来保证可靠,还是加锁,加什么锁,并发量有多大