交付与观测:让服务能发布、定位和恢复

能在开发机启动只是服务生命周期的开始。交付还要回答:部署的是哪份代码、配置从哪里来、旧版本能否共存、怎样判断异常、数据怎样恢复。这里以单服务为起点;容器与编排工具帮助管理运行过程,不会自动补齐业务恢复能力。 ...

2026年10月24日 · 4 分钟 · Cinna

身份与权限:从登录成功到每次对象访问

身份验证回答“当前请求是谁发出的”,授权回答“这个身份能对这份数据做什么”。用户已经登录,不代表可以读取任意预约 ID。服务端必须对每次对象访问检查所有者、角色或明确的共享关系,不能依靠前端隐藏按钮。 ...

2026年10月24日 · 3 分钟 · Cinna

事务与隔离:并发时仍然守住约束

事务把若干读写组织成一次提交,但“包进事务”不意味着所有并发问题消失。必须先说清不变量:库存不为负、同一次预约只扣一次、预约与对应事件一起落库。隔离级别决定事务能观察到怎样的并发状态,约束和锁则帮助你维护具体规则。 ...

2026年10月24日 · 3 分钟 · Cinna

数据建模:用约束保存业务事实

数据表应保存需要长期成立的事实,而不是照着页面字段机械建表。一个页面可以同时显示用户、商品和预约;它们的生命周期不同,不能因此塞进同一张宽表。关系数据基础介绍关系和 SQL,这里把它们落实到业务约束。 ...

2026年10月24日 · 3 分钟 · Cinna

索引与执行计划:让查询成本可解释

索引保存额外的数据组织方式,使数据库更快找到候选行;它同时增加空间和写入维护成本。优化的目标是完成具体查询所需的工作量,而不是让所有 SQL 都出现 Index Scan。小表全扫、大范围聚合走顺序扫描,都可能比随机访问索引更便宜。 ...

2026年10月24日 · 3 分钟 · Cinna

消息投递:确认、重复、顺序与 Outbox

消息系统把“接收请求”与“完成工作”拆开,可以吸收短时流量,也让消费者独立伸缩。代价是必须描述延迟、丢失、重复、顺序与恢复。把函数调用换成队列,并不会自动得到可靠性。 ...

2026年10月24日 · 3 分钟 · Cinna