CirculeID

Scalability

两种毫无共同点的负载

读取跟随公开扫描:呈突发态势、可缓存、无法预测。写入跟随供应链事件:平稳、由机器驱动、只追加。把两者当成一套系统来估算容量,正是护照平台崩溃的原因。

读取
突发性、可缓存
写入
平稳,仅追加
已扩展
独立地

Definition

数字产品护照平台的规模由什么决定?

两种彼此独立的负载。读取量随公开扫描而波动,具有突发性且难以预测,但由于公开层级对所有调用方完全相同,绝大部分可以缓存。写入量随供应链事件而来,稳定且由机器生成。两者分别评估规模、分别扩容。

The consequence for planning is that catalogue size is a poor predictor of either. Event volume tracks how much your products move; read volume tracks how much attention they receive.

负载形态

为什么一套系统无法同时服务两者

这两列在每一行要紧的指标上都具有相反的特性。让二者共用基础设施,意味着同时承受各自最差的一面。
护照平台上读取与写入负载的特征
CharacteristicPassport readsEvent writes
Triggered byA person scanning a productA machine recording a step
ShapeBursty and unpredictableSteady and forecastable
CacheableThe public tier, almost entirelyNot at all — every write is new
Latency needA person is waitingA queue can absorb it
Grows withAttention and campaign activityPhysical movement of goods
Failure impactA consumer sees nothingHistory develops a gap

设计

这一划分带来什么结果

  • 已缓存的公开层级

    每个匿名调用方收到的响应完全相同,因此由缓存提供服务。

  • 按请求授予的受限层级

    依赖凭证的响应实时解析 —— 这是代价较高的路径,也是使用频率最低的路径。

  • 彼此独立地扩展

    扫描突发流量不得拖慢数据摄取;批量导入也不得拖慢解析器。

  • 仅追加的事件日志

    写入永远不会与更新争用,因为事件是追加的,而不是被修改的。

  • 批量摄取

    历史事件回补走独立通道,不经过实时写入路径。

  • 按对象查询

    历史按标识符检索 —— 这正是审计与召回实际使用的访问方式。

答疑

常见问题

护照平台的负载究竟由什么驱动

两件互不相干的事。读取随扫描而来,扫描是公开的、突发的、难以预测的——一件产品若在节目中露出,一小时内产生的读取量可能超过此前整整一年。写入随供应链事件而来,由机器生成且平稳。为其中一项估算容量,对另一项没有任何参考价值。

为什么读取与写入是彼此分离的系统?

因为扫描突发流量不得拖慢事件摄取,而事件的批量导入也不得拖慢消费者正在等待的解析器。解析器返回的是基本静态、可缓存的响应;事件存储则是一份写入密集、按对象标识查询的日志。这是两类不同的问题。

事件量会随产品数量增长吗?

它随流转量增长,而不是随目录规模增长。一个托盘穿过配送网络所产生的事件,多过一千件静置在仓库里的商品。按 SKU 数量估算的组织,往往在两个方向上都会感到意外。

如何让护照读取保持快速?

公开层级可缓存,因为它对每个调用方的响应相同且很少变化。受限层级则按请求解析,因为答案取决于所出示的凭证——于是开销大的路径恰恰是走得最少的那条,这个方向是对的。

你们的可用性承诺是什么?

这些内容属于服务协议,而不属于营销页面,我们会在采购过程中形成书面约定。我们刻意不在此发布可用性数值:一个背后既无合同也无状态页支撑的数字算不上承诺,评估我们的工程师只会把它当作噪音。

Next step

请带上您预期的业务量

目录规模、流转频率,以及您最担心的那次营销峰值。我们会按这些来估算,而不是照着一个宣传数字。

Index