系统职责约 10 分钟

第 5 / 26 个单元计算机与软件基础设施区

第 4 章 一次点击怎样牵动数字系统

核心问题一次点击怎样经过设备、软件、网络、服务、规则和人?

扫码开锁、提交订单、进入网课,看起来都只是一次点击。按钮把复杂性隐藏起来,却没有消除复杂性。共享单车真正开锁以前,系统要识别车辆和账户,检查状态与规则,把请求送到合适位置,再确认车锁是否执行。

本章借开锁建立一条教学职责链,不对应任何企业的真实架构。现实系统可能离线、并行、异步,也可能加入缓存、队列和人工处理。我们关心的是角色怎样交接,以及错误从哪里进入。

一个功能同时包含物理部件与信息部件

手机、摄像头、网络设备和车锁属于硬件。它们接收物理输入、执行计算、存储、通信或产生动作。应用、操作系统和远端服务属于软件,让硬件按照程序和配置协作。

手机应用在这次交互中发起请求,可以称为客户端;远端系统接收请求并提供数据或处理,可以称为服务器。客户端与服务器描述交互角色,不是两种永远固定的机器。同一台设备在不同任务中可能扮演不同角色。

开锁链可以先画成:

人选择车辆并扫码
  → 相机读取二维码
  → 应用取得车辆标识和账户状态
  → 操作系统提供相机、网络与权限
  → 网络把请求送往远端服务
  → 服务检查车辆、账户与规则
  → 指令送达车锁或现场控制设备
  → 设备返回执行状态
  → 界面呈现结果,人决定继续、重试或申诉

箭头表示职责交接,不保证每一步严格按顺序等待。服务可以并行查询账户和车辆,消息可能经过队列,设备暂时离线时也可能稍后重试。

请求发出、服务接受和动作完成是不同状态

界面显示“请求已提交”,只说明应用接收或发出了请求;远端服务可能尚未处理。服务返回“已接受”,也不表示车锁已经打开。设备执行以后,还可能需要传感器或用户确认现实状态。

这类状态差别在支付、文件上传和AI工具调用中同样存在:开始上传不等于文件保存完整,订单创建不等于支付成功,模型说“已经添加日历”不等于日历真的变化。

HTTP等协议常用请求与响应描述一类客户端—服务器交互。[2] 但响应能证明什么,由接口定义。一个200状态可以说明某次HTTP请求成功处理,不能脱离具体接口推断业务动作已经完成。

系统若要可靠呈现进度,需要为不同阶段设计状态、超时、重试和回执。把所有失败压成“请重试”,会让用户无法判断应该等待、换网络、检查权限还是联系人工。

故障沿职责链发生

二维码可能污损,相机权限可能关闭;手机连上Wi-Fi,外部网络仍可能中断;服务可能判断账户或车辆不满足规则;车锁硬件可能无响应;界面也可能没有及时更新。

一直点击可能重复创建请求。可靠系统通常要考虑同一操作被重复提交时怎样处理,避免重复扣费或重复创建记录。用户不必现在学习幂等、队列等工程术语,却应知道“再试一次”也会改变系统负担和状态。

排障应沿链路定位:输入有没有被正确读取,请求有没有离开设备,服务是否接受,规则为何拒绝,设备是否执行,最终状态能否独立观察。找不到公开信息时标为未知,不从界面颜色猜后台。

规则与责任没有因为自动化而消失

谁可以骑车、费用怎样计算、账户为何受限、争议由谁处理,来自组织规则。软件可以把规则执行得很快,却不因此获得制定规则的正当性。

当系统影响收费、资格或权益时,用户需要知道申诉和人工处理入口。自动化错误若只能由同一自动化系统继续判断,责任链就没有闭合。

AI可能加入识别、需求预测、异常检测或客服回答。模型可以提出判断或生成说明,应用仍需取得输入、检查权限、执行操作并记录结果。是否采用模型输出,要看任务、证据和错误后果,不能由“智能”标签自动决定。

云计算是资源组织方式,不是“远端”的同义词

开锁需要远端服务,不代表我们已经解释了云计算。云计算通常涉及通过网络按需获得可配置的共享计算资源,并具有资源池、弹性和可度量等特征。[1]

对本章而言,先理解“计算可能发生在另一处”即可。后面会继续讨论数据库和云资源怎样保存状态、支持多个设备和用户。

一次界面操作可以用C01的六问拆解:目标是什么,设备接收了什么,软件和服务怎样交接,读取了哪些数据,规则在哪里执行,谁确认和负责。只要能够标出两处可能失败的位置,界面就不再是黑箱。

下一章把镜头移入设备内部:程序怎样调用处理器、内存和存储,把“旋转照片”这种任务变成硬件动作。