<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>《互联网产品的服务端架构·内容、社交与实时互动》 · 已发布章节索引（45 篇） on PlumePHP</title><link>https://plumephp.com/posts/books/%E4%BA%92%E8%81%94%E7%BD%91%E4%BA%A7%E5%93%81%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%9E%B6%E6%9E%84%E5%86%85%E5%AE%B9%E7%A4%BE%E4%BA%A4%E4%B8%8E%E5%AE%9E%E6%97%B6%E4%BA%92%E5%8A%A8/</link><description>Recent content in 《互联网产品的服务端架构·内容、社交与实时互动》 · 已发布章节索引（45 篇） on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 28 Oct 2026 23:50:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/posts/books/%E4%BA%92%E8%81%94%E7%BD%91%E4%BA%A7%E5%93%81%E7%9A%84%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%9E%B6%E6%9E%84%E5%86%85%E5%AE%B9%E7%A4%BE%E4%BA%A4%E4%B8%8E%E5%AE%9E%E6%97%B6%E4%BA%92%E5%8A%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>《互联网产品的服务端架构·内容、社交与实时互动》附录 C 互动与通知检查清单</title><link>https://plumephp.com/inet-social-appendix-c-interaction-checklist/</link><pubDate>Wed, 28 Oct 2026 23:50:00 +0800</pubDate><guid>https://plumephp.com/inet-social-appendix-c-interaction-checklist/</guid><description>把卷二各章的判断整理成可直接使用的检查清单：发布与审核、可见性、Feed、互动计数、评论、IM、推送、搜索、推荐各有一组可勾选项，每项写明检查什么、为什么检查、不通过时用户会看到什么，并按 P0/P1/P2 分级，适合方案评审与上线前自查。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》附录 B Feed 与 IM 参数表</title><link>https://plumephp.com/inet-social-appendix-b-feed-im-params/</link><pubDate>Wed, 28 Oct 2026 23:40:00 +0800</pubDate><guid>https://plumephp.com/inet-social-appendix-b-feed-im-params/</guid><description>把卷二各章的阈值、窗口、上限与默认值集中成表：内容分层、审核时限、推拉门槛、排序权重、频控窗口、评论折叠、消息去重、在线判定、推送降级与搜索滞后各自给出起点值与标定方法，并标明哪些是代码常量、哪些是案例假设，附不同规模下的调整趋势与监控指标对应表。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》附录 A 内容与社交数据模型</title><link>https://plumephp.com/inet-social-appendix-a-data-model/</link><pubDate>Wed, 28 Oct 2026 23:30:00 +0800</pubDate><guid>https://plumephp.com/inet-social-appendix-a-data-model/</guid><description>把卷二涉及的内容、媒体、审核、关系、评论、计数、会话、消息、已读与索引整理成一张可对照的数据模型：每张表列出关键字段、类型、索引与写入方，并说明哪些字段可以冗余、哪些必须由单一服务负责写入，附冗余字段判定表、迁移顺序建议与常见建模错误对照。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》13.3 质量指标与进入卷三</title><link>https://plumephp.com/inet-social-13-3-quality-to-vol3/</link><pubDate>Wed, 28 Oct 2026 23:20:00 +0800</pubDate><guid>https://plumephp.com/inet-social-13-3-quality-to-vol3/</guid><description>收口卷二：用 Feed 新鲜度、消息到达率与未读准确率三个指标判断内容社交系统是否变好，解释为什么平均延迟不能作为唯一指标，给出 Aggregate 与 Meets 的最近秩 P95 实现、阈值测试、真实输出，并用一段话把读者交接给卷三的交易、增长与平台化。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》13.2 IM 与未读的端到端验证</title><link>https://plumephp.com/inet-social-13-2-im-unread-e2e/</link><pubDate>Wed, 28 Oct 2026 23:10:00 +0800</pubDate><guid>https://plumephp.com/inet-social-13-2-im-unread-e2e/</guid><description>以多端联调时手机未读归零、平板仍显示 3 的事故写起：说明单测为什么抓不到会话 ID 不一致，如何从用户动作出发用 net/http/httptest 真跑登录、发消息、另一端接收、已读与未读归零，给出 Run 与 RequestStep 的 Go 实现、测试和真实输出。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》13.1 发布→Feed→互动→通知</title><link>https://plumephp.com/inet-social-13-1-publish-feed-interact-notify/</link><pubDate>Wed, 28 Oct 2026 23:00:00 +0800</pubDate><guid>https://plumephp.com/inet-social-13-1-publish-feed-interact-notify/</guid><description>从「回声」一次发布因通知失败整条回滚的事故写起：拆解发布、Feed 分发、互动与通知四个阶段的同步异步边界和失败语义，给出 Flow、Step 与 Validate 的 Go 实现、表驱动测试与真实运行输出，并整理链路编排的常见错误与边界。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》12.3 冷启动与效果兜底</title><link>https://plumephp.com/inet-social-12-3-cold-start-fallback/</link><pubDate>Wed, 28 Oct 2026 22:50:00 +0800</pubDate><guid>https://plumephp.com/inet-social-12-3-cold-start-fallback/</guid><description>冷启动不是“没有特征就随机”，而是要有明确的兜底链和降级条件，否则新用户会看到空白首页。本文用 Choose 函数实现个性化、热榜、新鲜内容与编辑精选的顺序降级，并给出新用户首页空白的真实失败场景与测试。顺序与健康判定必须可观测、可回放、可演练。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》12.2 特征、候选与在线服务</title><link>https://plumephp.com/inet-social-12-2-feature-candidate-online/</link><pubDate>Wed, 28 Oct 2026 22:40:00 +0800</pubDate><guid>https://plumephp.com/inet-social-12-2-feature-candidate-online/</guid><description>在线推荐最常见的性能事故，是在请求链路里现算长周期特征，p99 会从几十毫秒涨到近一秒。本文拆开离线特征与在线轻量计算，用 Missing 和 L2 归一化守住输入契约，并给出可复现的 Go 测试与 p99 退化案例。在线服务只做查找、拼接与截断。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》12.1 推荐服务与业务服务的边界</title><link>https://plumephp.com/inet-social-12-1-recommend-service-boundary/</link><pubDate>Wed, 28 Oct 2026 22:30:00 +0800</pubDate><guid>https://plumephp.com/inet-social-12-1-recommend-service-boundary/</guid><description>推荐服务与业务服务的边界一旦模糊，推荐侧就会悄悄依赖内容库表结构，内容团队一次字段迁移就可能让首页空白。本文用候选合并函数说明如何只交换 ID 与分数，把“能不能推”留在业务侧，并给出可运行的 Go 测试与失败场景。边界清晰后，内容下线与运营插位都不必改模型服务。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》11.3 搜索一致性与删除</title><link>https://plumephp.com/inet-social-11-3-search-consistency-delete/</link><pubDate>Wed, 28 Oct 2026 22:20:00 +0800</pubDate><guid>https://plumephp.com/inet-social-11-3-search-consistency-delete/</guid><description>从作者删帖三天后搜索仍能看到摘要的事故写起，说明删除必须留下墓碑而不能等索引重建。文章用 Lag 与 Stale 判断索引水位是否落后预算，用 Retry 保持失败重试顺序，并给出时间倒退、零预算与墓碑重试的测试、真实运行输出和一致性窗口的产品口径。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》11.2 召回、排序与过滤</title><link>https://plumephp.com/inet-social-11-2-recall-rank-filter/</link><pubDate>Wed, 28 Oct 2026 22:10:00 +0800</pubDate><guid>https://plumephp.com/inet-social-11-2-recall-rank-filter/</guid><description>从一次搜索结果里出现无权限标题、点进去 403 的事故写起，拆开召回、排序与过滤三个阶段的职责。文章用 Match 纯函数把作者、时间、删除标记与多词命中写成可测试的布尔判断，给出边界用例、真实运行输出，并解释清楚过滤为什么必须发生在排序之前。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》11.1 索引与业务库的同步</title><link>https://plumephp.com/inet-social-11-1-index-sync/</link><pubDate>Wed, 28 Oct 2026 22:00:00 +0800</pubDate><guid>https://plumephp.com/inet-social-11-1-index-sync/</guid><description>从一篇已发布文章在搜索里消失十分钟的事故写起，说明索引是另一种读模型而不是业务库副本。文章比较双写、binlog 与 outbox 三条同步路径，用版本号把重复与乱序收敛进 Apply 纯函数，并给出墓碑规则、边界测试、真实运行输出与可观测水位。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》10.3 推送失败与降级</title><link>https://plumephp.com/inet-social-10-3-push-failure-degrade/</link><pubDate>Wed, 28 Oct 2026 21:50:00 +0800</pubDate><guid>https://plumephp.com/inet-social-10-3-push-failure-degrade/</guid><description>从「回声」APNs 证书过期导致 iOS 推送静默失败三天写起：区分可重试与不可重试的失败，说明重试上限、退避和主备渠道降级为何必须显式建模，给出 Plan、Attempt、Next 的 Go 实现、表驱动测试与真实运行输出，并总结失败降级中的常见错误。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》10.2 通知聚合与频控</title><link>https://plumephp.com/inet-social-10-2-notification-aggregation/</link><pubDate>Wed, 28 Oct 2026 21:40:00 +0800</pubDate><guid>https://plumephp.com/inet-social-10-2-notification-aggregation/</guid><description>从「回声」用户一天收到 15 条推送后关闭通知写起：拆解按用户、按会话、按内容三种聚合维度，说明营销通知与事务通知为何需要不同频控策略，给出 Template、Render 的 Go 实现、表驱动测试与真实运行输出，并总结聚合去重和频控边界上的常见错误。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》10.1 渠道、模板与到达率</title><link>https://plumephp.com/inet-social-10-1-channel-template-arrival/</link><pubDate>Wed, 28 Oct 2026 21:30:00 +0800</pubDate><guid>https://plumephp.com/inet-social-10-1-channel-template-arrival/</guid><description>从「回声」一条发布成功通知用户却没看到写起：区分发送成功与真实到达，拆解 APNs、FCM、Web Push、小程序订阅消息在包体、图片和深链上的差异，给出 Capability、Of 的 Go 实现、表驱动测试与真实运行输出，并梳理模板裁剪和到达率统计的常见错误。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》9.3 消息可靠性与去重</title><link>https://plumephp.com/inet-social-09-3-message-reliability-dedupe/</link><pubDate>Wed, 28 Oct 2026 21:20:00 +0800</pubDate><guid>https://plumephp.com/inet-social-09-3-message-reliability-dedupe/</guid><description>从「回声」网络抖动触发客户端重发、接收方看到两条相同消息的事故写起：去重不能依赖客户端单方面生成的消息 ID，网关重试和消费重试都会产生重复。文章给出 Window 的 TTL 判定、时钟倒退检测、Prune 清理与幂等边界测试，并说明去重键该由谁生成。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》9.2 多端已读与未读计数</title><link>https://plumephp.com/inet-social-09-2-multi-device-read/</link><pubDate>Wed, 28 Oct 2026 21:10:00 +0800</pubDate><guid>https://plumephp.com/inet-social-09-2-multi-device-read/</guid><description>从「回声」手机读完消息、桌面未读数不降的事故写起：已读位置是多端上报的事实，未读数是派生值。文章把按会话已读、多设备取最大已读序号、越界钳零、无记录视为全部未读写成 Count 纯函数，并给出边界测试、真实运行输出与存储、缓存与投递的边界。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》9.1 在线投递与离线补偿</title><link>https://plumephp.com/inet-social-09-1-online-offline-delivery/</link><pubDate>Wed, 28 Oct 2026 21:00:00 +0800</pubDate><guid>https://plumephp.com/inet-social-09-1-online-offline-delivery/</guid><description>从「回声」一次手机和电脑同时在线、消息只到手机的事故写起：在线投递只是尽力而为，多设备投递必须全部覆盖，心跳过期要按离线处理。文章给出 Route 的成员白名单、TTL 边界、去重排序实现与边界测试，并说明离线补偿为什么才是消息可靠性的真正来源。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》8.3 消息存储与漫游</title><link>https://plumephp.com/inet-social-08-3-message-storage-roaming/</link><pubDate>Wed, 28 Oct 2026 20:50:00 +0800</pubDate><guid>https://plumephp.com/inet-social-08-3-message-storage-roaming/</guid><description>从换手机拉取三年聊天记录把数据库打满的事故写起，比较按会话分片、按时间分区与按用户分片的代价，说明漫游为什么必须用游标分页，给出保留裁剪 Keep 与 RoamPage 的 Go 实现、边界测试和真实运行输出，并列出消息存储与漫游的常见错误。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》8.2 单聊、群聊与系统消息</title><link>https://plumephp.com/inet-social-08-2-single-group-system/</link><pubDate>Wed, 28 Oct 2026 20:40:00 +0800</pubDate><guid>https://plumephp.com/inet-social-08-2-single-group-system/</guid><description>从系统通知被用户回复、产生没有接收方的会话写起，对照单聊、群聊、系统会话的成员与发送权限，说明群成员上限如何影响写扩散，给出会话校验与 CanSend 的 Go 实现、边界测试和真实运行输出，并列出会话模型设计、服务端发送权限与客户端展示的常见错误。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》8.1 会话、消息与序号</title><link>https://plumephp.com/inet-social-08-1-session-message-seq/</link><pubDate>Wed, 28 Oct 2026 20:30:00 +0800</pubDate><guid>https://plumephp.com/inet-social-08-1-session-message-seq/</guid><description>从两个客户端同时发消息却看到不同顺序的事故写起，说明单聊会话 ID 如何由双方 ID 排序后哈希生成，比较会话内序号与全局序号两种方案，给出消息校验、按发送时间与 ID 分配序号的 Go 实现、连续序号测试和真实运行输出，并列出消息模型设计的常见错误。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》7.3 互动通知的触发边界</title><link>https://plumephp.com/inet-social-07-3-notify-trigger-boundary/</link><pubDate>Wed, 28 Oct 2026 20:20:00 +0800</pubDate><guid>https://plumephp.com/inet-social-07-3-notify-trigger-boundary/</guid><description>从「回声」用户被二十条连赞推送逼到关闭通知权限的事故写起，拆解自己操作、被屏蔽者、短时间刷屏和聚合窗口四类触发边界，说明逐条通知与聚合通知的取舍，给出 ShouldNotify 的 Go 实现、时间窗口与维度隔离测试，以及真实运行输出和常见错误清单。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》7.2 评论审核与折叠</title><link>https://plumephp.com/inet-social-07-2-comment-review-fold/</link><pubDate>Wed, 28 Oct 2026 20:10:00 +0800</pubDate><guid>https://plumephp.com/inet-social-07-2-comment-review-fold/</guid><description>从「回声」一条违规评论在正文审核通过后存活四十分钟的事故写起，拆解正文、根评论、回复和昵称各自的审核时机，说明折叠为什么不能等于删除、根评论为什么不应被折叠，给出 Fold 规则的 Go 实现、拉黑子树与阈值测试，以及真实运行输出和常见错误清单。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》7.1 评论树与分页</title><link>https://plumephp.com/inet-social-07-1-comment-tree-pagination/</link><pubDate>Wed, 28 Oct 2026 20:00:00 +0800</pubDate><guid>https://plumephp.com/inet-social-07-1-comment-tree-pagination/</guid><description>从「回声」评论区「查看更多回复」翻页出现重复评论的事故写起，对比平铺、两层与多级评论树的代价，解释根评论按时间还是按热度分页、回复偏移量为什么会漂移，给出 Build、Page 的 Go 实现、坏输入与分页边界测试，以及一次真实运行输出和常见错误清单。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》6.3 互动防刷与频控</title><link>https://plumephp.com/inet-social-06-3-interaction-anti-abuse/</link><pubDate>Wed, 28 Oct 2026 19:50:00 +0800</pubDate><guid>https://plumephp.com/inet-social-06-3-interaction-anti-abuse/</guid><description>从「回声」一次点赞活动被代理池刷穿的事故写起：说明「同一用户对同一目标」「同一 IP 多账号」「同一设备批量注册」三种频控维度分别拦什么、漏什么，给出 Rule、Throttle、Allow 与 AllowE 的滑动窗口 Go 实现、表驱动测试和真实运行输出，并整理频控键设计的常见错误与边界。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》6.2 计数一致性：精确、近似与对账</title><link>https://plumephp.com/inet-social-06-2-counter-consistency/</link><pubDate>Wed, 28 Oct 2026 19:40:00 +0800</pubDate><guid>https://plumephp.com/inet-social-06-2-counter-consistency/</guid><description>从「回声」大 V 取消点赞后计数仍上涨的事故写起：对比精确计数、近似去重计数与对账重建三档方案，说明缓存计数何时可以滞后、何时必须回源，给出 Drift、Evaluate 与 NeedsRebuild 的 Go 实现、表驱动测试和真实运行输出，并整理对账的常见错误与边界。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》6.1 点赞、评论与收藏</title><link>https://plumephp.com/inet-social-06-1-like-comment-favorite/</link><pubDate>Wed, 28 Oct 2026 19:30:00 +0800</pubDate><guid>https://plumephp.com/inet-social-06-1-like-comment-favorite/</guid><description>从「回声」上线点赞后计数不动的投诉写起：拆解点赞、评论、收藏三种互动对一致性的不同要求，说明关系表与物化计数为何必须分开写入，给出 Counter、Key、Delta 与 Apply 的 Go 实现、表驱动测试和真实运行输出，并列出互动计数的常见错误与边界。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》5.3 关系链的存储与查询</title><link>https://plumephp.com/inet-social-05-3-relation-storage/</link><pubDate>Wed, 28 Oct 2026 19:20:00 +0800</pubDate><guid>https://plumephp.com/inet-social-05-3-relation-storage/</guid><description>从「回声」共同好友查询在 1 万好友时耗时 12 秒的事故写起，拆解我关注谁、谁关注我、共同好友三类关系查询的代价，说明大 V 粉丝列表为什么不能全量拉，给出 Graph、Followers、Following 与 Common 的 Go 实现、去重排序测试和真实运行输出，并列出关系链存储与查询的常见错误。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》5.2 拉黑、屏蔽与可见性判定</title><link>https://plumephp.com/inet-social-05-2-block-visibility/</link><pubDate>Wed, 28 Oct 2026 19:10:00 +0800</pubDate><guid>https://plumephp.com/inet-social-05-2-block-visibility/</guid><description>从「回声」一次拉黑只在前端生效的事故写起：用户拉黑骚扰者后，换个客户端仍能看到对方内容。文章把拉黑、屏蔽与可见性拆成不同层次，给出 CanView 的判定顺序、可读原因、拉黑压过好友的实现、边界测试与真实输出，并说明为什么可见性必须在服务端最终响应处统一生效。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》5.1 关注、好友与双向关系</title><link>https://plumephp.com/inet-social-05-1-follow-friend/</link><pubDate>Wed, 28 Oct 2026 19:00:00 +0800</pubDate><guid>https://plumephp.com/inet-social-05-1-follow-friend/</guid><description>从「回声」上线好友功能后的一次投诉写起：一方删除好友，另一方仍能看到仅好友可见的动态。文章拆解关注、好友与拉黑三种边的方向语义，说明关注后对方是否知情、好友请求被拒后关系如何落库，给出 Validate 与 Mutual 的 Go 实现、表驱动测试和真实运行输出，并列出关系建模的常见错误与边界。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》4.3 排序实验与效果回收</title><link>https://plumephp.com/inet-social-04-3-ranking-experiment/</link><pubDate>Wed, 28 Oct 2026 18:50:00 +0800</pubDate><guid>https://plumephp.com/inet-social-04-3-ranking-experiment/</guid><description>从实验组点击率涨了 8%、次留却跌了 2% 的事故写起，说明分桶必须稳定、指标必须先定、实验期间不能混入其他改动；给出基于 FNV 的 0 到 99 分桶、rollout 判定与相对提升计算的可测试 Go 实现，并讨论点击与留存的取舍，附真实运行输出。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》4.2 去重、折叠与已读</title><link>https://plumephp.com/inet-social-04-2-dedupe-fold-read/</link><pubDate>Wed, 28 Oct 2026 18:40:00 +0800</pubDate><guid>https://plumephp.com/inet-social-04-2-dedupe-fold-read/</guid><description>从用户点过一条内容、刷新后它就消失的投诉写起，区分按内容 ID 去重与按事件去重，讨论已读是否应该影响排序，以及同作者相邻内容从哪里开始折叠；给出保持顺序、容忍 nil 入参的 Go 实现与边界测试，避免误删与重复曝光，并附上真实运行输出。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》4.1 时间、热度与多样性</title><link>https://plumephp.com/inet-social-04-1-ranking-signals/</link><pubDate>Wed, 28 Oct 2026 18:30:00 +0800</pubDate><guid>https://plumephp.com/inet-social-04-1-ranking-signals/</guid><description>从三天前爆款占满首页的事故写起，拆解时间衰减、点赞热度与作者亲和度三种信号各自的偏差，说明多样性其实是限制同作者与同话题占比，而不是随机打散；给出带权重校验和稳定排序的可测试 Go 实现，以及新内容起不来的排查与修正路径，并附真实测试输出。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》3.3 推拉结合与混合时间线</title><link>https://plumephp.com/inet-social-03-3-hybrid-timeline/</link><pubDate>Wed, 28 Oct 2026 18:20:00 +0800</pubDate><guid>https://plumephp.com/inet-social-03-3-hybrid-timeline/</guid><description>从普通用户关注 800 人的首页出发，拆解混合时间线为什么必须按作者分层而不是按用户分层：活跃作者推、长尾作者拉，合并顺序与名额分配怎样决定大 V 内容能否出现在第一屏，并用可测试的 Go 混合函数固定比例、去重与上限的边界，最后给出覆盖率监控与灰度顺序。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》3.2 推模式：写时扩散</title><link>https://plumephp.com/inet-social-03-2-push-model/</link><pubDate>Wed, 28 Oct 2026 18:10:00 +0800</pubDate><guid>https://plumephp.com/inet-social-03-2-push-model/</guid><description>从一条粉丝 500 万的明星动态出发，拆解推模式为什么把成本放在写时：一条内容要扩散多少行、写队列如何被大 V 堵死、普通用户为什么跟着延迟，并用可测试的 Go 策略选择与成本函数固定粉丝门槛、写读成本与负数校验的边界，最后给出队列隔离与幂等重试的取舍。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》3.1 拉模式：读时聚合</title><link>https://plumephp.com/inet-social-03-1-pull-model/</link><pubDate>Wed, 28 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/inet-social-03-1-pull-model/</guid><description>从关注 500 人与 5000 人的首页刷新出发，拆解拉模式为什么把成本放在读时：一次刷新究竟要合并多少来源、并发查收件箱怎样拖垮 p99、关注 3000 人如何把首页延迟推到 3 秒，并用可测试的 Go 合并函数固定去重、排序与截断的边界，最后给出容量估算与降级顺序。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》2.3 审核失败的用户体验与申诉</title><link>https://plumephp.com/inet-social-02-3-review-failure-appeal/</link><pubDate>Wed, 28 Oct 2026 17:50:00 +0800</pubDate><guid>https://plumephp.com/inet-social-02-3-review-failure-appeal/</guid><description>审核失败时只回一句「内容违规」，用户会反复提交同一内容，客服也无法解释。文章把失败提示拆成规则、可修改性和时限三个问题，给出申诉状态机与超时边界，并用 Go 实现 pending 到 accepted、rejected、expired 的合法迁移，复盘一次重复送审放大审核成本的故障。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》2.2 机审、人审与复审</title><link>https://plumephp.com/inet-social-02-2-machine-human-review/</link><pubDate>Wed, 28 Oct 2026 17:40:00 +0800</pubDate><guid>https://plumephp.com/inet-social-02-2-machine-human-review/</guid><description>用一条被误判的宠物视频串起机审、人审与复审：机审输出置信度，人审处理灰区，复审靠抽样与申诉触发而不是把内容再跑一遍。文章给出 pass、reject、review 三档的阈值对照表和 Go 实现，并复盘一次阈值过严导致人审队列积压六小时的故障。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》2.1 发布链路的同步与异步</title><link>https://plumephp.com/inet-social-02-1-publish-sync-async/</link><pubDate>Wed, 28 Oct 2026 17:30:00 +0800</pubDate><guid>https://plumephp.com/inet-social-02-1-publish-sync-async/</guid><description>从「回声」创作者点击发布后转圈八秒的故障出发，拆解发布链路里哪些步骤必须在请求内完成、哪些应该交给后台，给出同步预算的定法与一张失败可见性对照表，并用 Go 校验器拦住缺少异步步骤、预算超限和重复步骤等编排错误，解释为什么机审不能塞进同步链路。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》1.3 内容存储的冷热分层</title><link>https://plumephp.com/inet-social-01-3-hot-cold-storage/</link><pubDate>Wed, 28 Oct 2026 17:20:00 +0800</pubDate><guid>https://plumephp.com/inet-social-01-3-hot-cold-storage/</guid><description>从一篇三个月前的爆款帖被迁到冷存储后点开要等八秒出发，说明冷热分层为什么按访问而不是创建时间划分，拆解迁移批次、回源延迟与存储成本之间的取舍，并用可测试的 Go 函数固定热、温、冷三层的判定边界，说明迁移批次、读穿缓存与回源监控如何配合，避免误迁。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》1.2 内容状态机：草稿、审核、发布、删除</title><link>https://plumephp.com/inet-social-01-2-content-state-machine/</link><pubDate>Wed, 28 Oct 2026 17:10:00 +0800</pubDate><guid>https://plumephp.com/inet-social-01-2-content-state-machine/</guid><description>从作者在审核中又改了一版内容出发，说明草稿、审核、发布、删除四个状态为什么必须把发起人、版本和终态写进状态机，拆解审核旧版本、发布新版本的事故链条，并用可测试的 Go 函数固定合法路径与驳回分支，同时说明审核中编辑、软删与硬删、终态恢复的取舍。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》1.1 文本、图片与视频的元数据</title><link>https://plumephp.com/inet-social-01-1-content-metadata/</link><pubDate>Wed, 28 Oct 2026 17:00:00 +0800</pubDate><guid>https://plumephp.com/inet-social-01-1-content-metadata/</guid><description>从一次只存 URL 的上传接口出发，说明文本、图片与视频的元数据为什么是审核、检索、转码和计费的共同输入，拆解缺尺寸、缺时长如何把问题推迟到下游，并用可测试的 Go 校验函数固定标题长度、媒体类型与必填字段的边界，让上传接口在下游排队之前就拒绝不合格内容。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》目录与学习路径</title><link>https://plumephp.com/inet-social-toc/</link><pubDate>Wed, 28 Oct 2026 16:50:00 +0800</pubDate><guid>https://plumephp.com/inet-social-toc/</guid><description>卷二目录：13 章从内容模型、发布审核、Feed 推拉与排序，讲到社交关系、计数与互动、评论、IM 消息与投递、推送、搜索与推荐接入，最后用一条发布到通知的端到端链路收口；每节配可运行的 Go 代码、失败场景与取舍依据，并给出四条阅读路径。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》前言</title><link>https://plumephp.com/inet-social-preface/</link><pubDate>Wed, 28 Oct 2026 16:40:00 +0800</pubDate><guid>https://plumephp.com/inet-social-preface/</guid><description>卷二前言：说明本书的读者对象、13 章的组织方式、每章的统一结构、可运行 Go 实验工程的用法、代码分级与版本口径、命名与错误处理约定、表格的读法，以及三种阅读路径、如何跳过已熟悉的部分与如何验证自己真的读懂了；全部代码来自可运行的 Go 1.26 实验工程。</description></item><item><title>《互联网产品的服务端架构·内容、社交与实时互动》序</title><link>https://plumephp.com/inet-social-foreword/</link><pubDate>Wed, 28 Oct 2026 16:30:00 +0800</pubDate><guid>https://plumephp.com/inet-social-foreword/</guid><description>卷二序：当产品从「能注册、能改资料」长到「有人发、有人看、有人回应」，服务端要解决的核心问题就从能力建设变成可见性、分发结构与实时一致性；这一卷写给正在做内容社区、社交或 IM 的后端工程师与技术负责人，用百万级用户的「回声」案例讲清判定链、放大成本与可靠性来源。</description></item></channel></rss>