tag

客户端架构

共 180 篇文章。
全部文章书稿GoJavaTypeScript互联网产品游戏开发独立开发者小游戏游戏服务端架构设计游戏设计Godot性能优化Rust
books

《互联网产品的客户端架构·内容、社交与实时互动》11.2 审核态的内容 UI:占位、隐藏与申诉

审核中的内容最怕先闪正文再被替换。本节用五态状态机描述 draft、pending、review、published、hidden 的可见性与占位,把正文挂载与状态判断绑定,给出 8 条视图投影测试,并复盘一次审核态卡片先渲染正文、随后被占位覆盖的闪烁事故。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》11.1 端上预检:能拦什么、不能拦什么

端上预检只能做早反馈,不能替代审核。本节用纯函数实现长度、格式、控制字符与少量高风险词的本地提示,区分硬阻断、可申诉复核与轻提示三类结果,给出带允许短语、零宽归一化和规则版本的 8 条测试,并复盘一次单字黑名单误拦「黄金周」正常游记的事故。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》10.3 推送降级:没有推送权限时怎么补

推送不是「有没有」的二值问题:权限被拒、系统通知关闭、令牌失效,三种情况的恢复路径完全不同。本节给出推送降级矩阵、打开应用时的补偿同步策略与「旧推送角标不能覆盖新已读」的规则,并用 TypeScript 实现计划器与角标合并,复盘一次关掉通知的用户永远看不到红点的事故。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》10.2 多端已读:一致性从哪里来

同一个「已读」布尔值在两台设备之间一定会打架:甲读完 3 条,乙把整个会话标成已读,新消息到达后两边都显示已读。本节把已读建模为按会话单调前进的位置,用最大位置合并多端状态,处理回执失败重试与服务端总数覆盖,并复盘一次无位置回执把新消息误标已读的事故。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》10.1 未读数的来源与端上合并

点赞、评论、关注与系统通知四种来源的未读数,为什么不能用一个 total += 1 维护。本节用服务端水位 ackSeq 与事件 id 划清「已计数」和「端上待确认」,给出按类型分组、99+ 上限与幂等合并的 TypeScript 实现,并复盘一次旧快照把角标从 4 覆盖回 3 的线上问题。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》9.3 拉黑与屏蔽:端上必须立即生效的部分

拉黑是安全操作,端上必须先隐藏再同步:信息流、详情、评论、搜索、私信五处都要在请求发出前生效。本节实现 pending/active/failed 三态 BlockStore、失败不回显的重试、只增不减的服务端快照合并,并复盘一次等确认导致弱网下仍能看到对方内容的事故。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》9.2 可见性规则在端上的表达

可见性规则在端上只能表达为提示与预判,最终仍以服务端为准。本节把公开、关注可见、好友可见、仅自己可见映射为带置信度的预判,给出可测试的首屏骨架、服务端纠正、拒绝后清理缓存与受众提示的完整实现,并复盘一次预判过宽导致缓存标题与封面提前泄露的事故。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》9.1 关注、互关与关系缓存

关注、粉丝与互关不是一张布尔表:方向、新鲜度和进行中的变更都要分别记录。本节用带假时钟的 FollowCache 实现四态关系缓存、TTL 降级、乐观关注与回滚,给出关系变化后的列表失效矩阵,并复盘一次把缓存互关当成私信授权、导致错误入口的事故。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》8.3 状态展示的降级与隐私边界

在线状态一旦涉及隐私,就不再是「显示什么」,而是「允许谁看到什么证据」。本节把可见性、关系、拉黑与连接降级组合成一张展示决策表,明确 unknown 与 offline 的差别,给出可运行实现与测试,并复盘一次隐藏在线后仍能从活跃时间反推的事故。

11 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》8.2 输入中状态的节流与超时

输入中状态不是一次事件,而是一份几秒后自动过期的租约。本节用本地节流、远端超时、会话隔离与停发条件,把「正在输入」压成低频心跳,给出丢包、乱序、进程被杀与幽灵输入四类故障下的可运行实现与假时钟测试,并复盘一次每键发送导致群聊广播风暴、指示器随机闪烁的事故。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》8.1 presence 的近似语义:没有真正的「在线」

客户端看到的「在线」不是事实,而是一次带衰减的观测。本节把 presence 拆成最后活跃时间、online/away/offline/unknown 四态与 TTL 过期,给出窗口判定、下一次转换时间与最后活跃文案的纯函数实现,并复盘一次把 socket 连通当成在线、导致用户对着「幽灵在线」发消息的事故。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》7.3 断线期间的消息补拉与空洞检测

重连后只拉最新一条,会让中间的缺口永远补不上。本节用已收序列号维护连续高水位,按批生成补拉区间,把补拉结果与实时推送合并去重,并复盘一次「重连只同步最新消息」导致的历史消息永久丢失,说明补拉报告如何表达未完成状态,以及服务端历史过期后端上必须承认的边界。

11 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》7.2 消息去重与有序:端上能保证什么

同一条消息可能因重连补发、重试或多路径到达两次,晚到的消息也可能插到已经读过的位置。本节区分消息 id 与序列号,给出端上的去重集合、乱序缓冲窗口与冲突判定,并用可运行代码证明端上只能保证最终有序,不能保证实时有序,还会说明窗口边界与冲突上报为什么决定了故障是否可观测。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》7.1 重连与退避:把断线当成常态

断线在移动端是常态。本节把重连拆成失败分类、指数退避、抖动与上限四个决策,给出一个可测试的纯函数退避模块,并复盘一次服务端重启后所有客户端同时重连、把网关打满的事故,最后说明网络从离线恢复时为什么要立即重连并清零计数,以及如何用确定随机源验证风暴是否真的被摊开。

12 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》6.3 降级路径:实时不可用时产品还能做什么

实时通道会断,产品不能跟着白屏。本节把连接状态映射成角标、自动插入、输入中、评论框与在线状态五种能力,给出暂停、手动、排队、禁用四类降级模式与恢复顺序,让页面在弱网下仍能读缓存、写草稿、手动刷新;队列只接受可幂等重放的写操作,并复盘一次整页空白事故。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》6.1 轮询、SSE 与 WebSocket 的判定表

实时选型常被简化成「聊天就上 WebSocket」,但真实约束远不止消息方向。本节把延迟、在线规模、运维能力、二进制与上行频率写成结构化输入,用可测试的打分函数输出推荐、置信度与警告,说明同一份需求为什么允许有两个合理答案,并给出四组场景的分数对照与一次选型回滚复盘。

12 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》5.3 回滚的边界:哪些操作不能乐观

点赞可以乐观,支付与下单不行。本节按回滚成本把写操作分成四档:即时可逆、可补偿、需服务端确认、绝不能乐观,并给出一个可测试的 TypeScript 判定函数与七类操作的决策表;重点解释为什么资金、库存与对外通知不能靠本地回滚,以及重试策略如何与乐观策略解耦。

11 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》5.2 评论的顺序、草稿与失败重发

评论提交比点赞多出正文、时间顺序、草稿保存与失败重发。本节把一条评论拆成发送中、失败、已确认三态:用客户端 clientId 建占位,按时间正序合并,失败时保留原文与草稿,重试复用同一客户端幂等键,并完整复盘一次超时重试导致的重复评论与丢字事故。

11 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·内容、社交与实时互动》5.1 点赞与收藏:本地先行、服务端为准

点赞与收藏看似只是改一个布尔值,真正难的是本地先行之后如何让服务端裁决:绝对计数与增量事件冲突、列表与详情各存一份状态、连点与取消产生乱序响应。本节给出一个带序号与意图层的 TypeScript 状态存储,用假时钟复现乱序响应,并完整复盘一次计数越点越少的线上问题。

10 分钟阅读
书稿 互联网产品 客户端架构