mcpField
O
opensearch-personalize-caching-strategies

opensearch-personalize-caching-strategies

github.com/pproenca开发218120 次安装11 周前更新
代码仓库

关于 opensearch-personalize-caching-strategies

这是一项面向使用 OpenSearch 和 Personalize 的 AWS 市场搜索与推荐服务的缓存设计参考技能。它从缓存决策和键设计延伸到新鲜度、故障防护、测量与分层,并提供示例和来源。

主要功能

  1. 01缓存收益与流量评估
  2. 02缓存键规范化与个性化边界
  3. 03策略、TTL 与失效设计
  4. 04并发未命中与故障防护
  5. 05命中率、延迟与成本观测
  6. 06负缓存及分层缓存

适用场景

  1. 01评估搜索或推荐接口是否适合缓存
  2. 02排查低命中率与键基数过高
  3. 03缓解 Personalize 限流和缓存重建风暴
  4. 04根据日志模拟缓存策略与 TTL

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pproenca/dot-skills --skill opensearch-personalize-caching-strategies

安装后在 Claude Code 中输入/opensearch-personalize-caching-strategies确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
decide-amplification-multiplier.md
decide-cache-roi-calculation.md
decide-cardinality-floor.md
decide-hot-key-distribution.md
decide-latency-budget.md
decide-personalize-quota-budget.md
decide-search-vs-personalize-asymmetry.md
key-bucket-numerical-ranges.md
key-canonicalize-query.md
key-locale-currency-explicit.md
key-segment-not-user.md
key-stable-hash-algorithm.md
key-strip-volatile-params.md
key-version-the-model.md
neg-bloom-filter-against-misses.md
neg-cache-empty-results.md
neg-cache-throttled-personalize.md
neg-poison-pill-detection.md
obs-cache-simulation-from-logs.md
obs-cost-attribution.md
obs-hit-rate-by-key-class.md
obs-key-cardinality-tracking.md
obs-latency-histograms-with-without.md
obs-stale-served-ratio.md
pers-anonymous-vs-logged-split.md
pers-cohort-precomputation.md

详细介绍

双边平台研究:OpenSearch + Personalize 缓存最佳实践

本文提炼了运行 AWS OpenSearch(搜索)和 AWS Personalize(通过微服务提供推荐)的双边平台缓存策略参考。包含 9 个类别中的 52 条规则,按级联效应排序——从上游的「是否」缓存决策,到键设计、个性化边界、策略选择、TTL 设计、缓存击穿保护、可观测性,以及级联效应较低的负缓存和分层组合类别。每条规则都会解释原因(成本、延迟或正确性机制),展示错误与正确的代码示例(微服务层使用 TypeScript/Node,批处理和分析使用 Python,OpenSearch 专用查询使用 OpenSearch JSON,CDN/Kubernetes 使用 YAML),并引用权威来源——AWS Personalize/OpenSearch/ElastiCache 文档、XFetch 论文(Vattani et al. VLDB 2015)、RFC 5861(stale-while-revalidate),以及缓存基础设施团队的工程博客(Netflix EVCache、Pinterest Cachelib、Twitter Twemcache、Cloudflare)。

这是 opensearch-function-scoring-algorithms 的补充——那个技能回答「排名应该计算什么?」,而这个技能回答「如何将其扩展到生产流量,同时避免拖垮 OpenSearch 或 Personalize?」

适用场景

在以下情况下使用此技能:

缓存管道

类别根据请求时的缓存管道划分。前面的阶段会层层影响后续阶段:如果“是否应该缓存?”的判断有误,下游的一切都会白费;如果键未规范化,命中率就会被限制在可实现上限的一小部分;如果没有可观测性,就无法判断这些规则是否有帮助。

Request → [1] Decide → [2] Key construction → [3] Personalisation boundary
        → [4] Strategy (read/write path) → [5] TTL/freshness → [6] Stampede protection
        → [8] Negative/defensive → [9] Tier composition (L1/L2/CDN/OS-internal) → Response
                                                ↑
                                [7] Observability (meta-layer applied to all stages:
                                    hit rate by key class, latency-with-and-without,
                                    cost-per-1k, cardinality, staleness, log-replay)

按优先级划分的规则类别

优先级类别影响前缀规则数
1决策与成本计算严重decide-7
2缓存键设计严重key-7
3个性化边界高pers-6
4策略与写入路径高strat-6
5TTL 与新鲜度高ttl-6
6惊群保护高stamp-5
7可观测性与实证测量高obs-6
8负缓存与防御性缓存中高neg-4
9分层与边缘缓存中高tier-5

快速参考

1. 决策与成本计算(严重)
2. 缓存键设计(严重)
3. 个性化边界(高优先级)
4. 策略与写入路径(高优先级)
5. TTL 与新鲜度(高优先级)
6. 缓存击穿防护(高优先级)
7. 可观测性与实证测量(HIGH)
8. 负缓存与防御性缓存(MEDIUM-HIGH)
9. 分层缓存与边缘缓存(MEDIUM-HIGH)

使用方法

对于聚焦的问题(“我应该缓存这个吗?”、“为什么我的命中率这么低?”、“如何应对 Personalize 限流?”),直接跳转到相关规则即可——每条规则都自成一体,包含原因、代码和引用。

对于新功能或运行不佳功能的完整缓存设计评审,请从上到下依次检查各类别。级联效应确实存在:错误的 decide-cache-roi-calculation 会让工程资源浪费在无法带来收益的缓存上;有漏洞的 key-canonicalize-query 会限制可达到的命中率;缺少 pers-cohort-precomputation 会使 Personalize 费用与 MAU 成正比。当命中率超过 90% 时,防止缓存击穿和做好可观测性是必需的——在请求风暴中,10% 的未命中就足以压垮源站;而没有按类别统计的命中率仪表盘,你就无从判断。

要基于实测调优现有缓存,请从 obs-cache-simulation-from-logs 开始(使用假设配置重放日志),并配合 obs-hit-rate-by-key-class、obs-cost-attribution 和 obs-stale-served-ratio 配置仪表盘。这三项能回答:缓存是否发挥了作用、成本是多少,以及用户是否看到了过时数据?

针对多推荐器首页问题(最常见的 Personalize 成本激增模式),优先顺序为:decide-amplification-multiplier → pers-cohort-precomputation → pers-recommender-fan-out-coalescing → pers-anonymous-vs-logged-split。这四项通常能将消费类市场平台的 Personalize 支出降低 70-90%。

针对“Personalize 在负载下触发限流”的故障,优先顺序为:stamp-circuit-breaker-on-origin-error → neg-cache-throttled-personalize → decide-personalize-quota-budget。前两项能稳定面向用户的影响;第三项会合理设置 minProvisionedTPS,避免问题再次发生。

如需交叉参考相关技能,请参阅 opensearch-function-scoring-algorithms——该技能介绍在 OpenSearch 中需要计算什么(function_score、kNN、RRF、rank_feature、decay、LTR、MMR、评估)。本技能介绍如何缓存计算结果,使集群能够承受生产流量。

阅读章节定义,了解级联影响的依据;添加新规则时,请阅读规则模板。

相关技能

  • opensearch-function-scoring-algorithms — 面向 OpenSearch、有研究依据的排序、检索和评估规则。它讲的是“计算什么”;本技能讲的是“如何扩展规模”。

参考文件

文件描述
references/_sections.md类别定义及按级联影响排列的顺序
AGENTS.md精简的目录导航(自动生成;请勿手动编辑)
assets/templates/_template.md编写新规则的模板
metadata.json版本和权威参考 URL

评论

支持 Markdown