GH GambleHub

技术和基础架构→ Kesh层和数据存储

Kesh层和数据存储

1)为什么需要多层kesh

Kesh是无需访问"昂贵"子系统(DB,外部API,网络)即可响应的捷径。多层分配负载:浏览器→ CDN/ed → ge应用层→分布式kesh → DB/存储。目标:降低P95/P99,卸载起源,更强大地承受峰值并降低字节成本。

2) kesha水平图

1.Браузер: `Cache-Control`, `ETag`, `Last-Modified`, `stale-while-revalidate`.

2.CDN/Edge: TTL/ключ, Vary, Signed URLs, image-resize;tiered/shield.

3.Gateway/Service Mesh API:关于安全GET的简短回程。
4.应用程序(in-process): LRU/LFU,用于热键的近程缓存,毫秒。
5.分布式kesh (Redis/Memcached):用于扬声器的主层。

6.缓存DB: Pg/Innodb缓冲区,PgBouncer multiplexing, materialized views.

7.磁盘/对象堆栈:precomputed snapshots, blob-kesh(例如S3+CDN)。

原则: "与用户的距离越近-TTL越短,个性化就越少;数据越接近-一致性策略越丰富。"

3)腰带模式

Cache-Aside (Lazy):我们从MISS上读到来自源头的货物→储存在kesh中的→。普罗斯特,给TTL控制。
Read-Through:应用程序通过kesh读取,kesh本身是从源头拉出的。集中策略很方便。
Write-Through:记录立即进入kesh和源。更一致,但条目更昂贵。
Write-Back (Write-Behind):写入kesh,源以异步方式更新(队列)。速度快,需要交货保证和等效性。
Refresh-Ahead:在"顶级"密钥中,我们在TTL到期之前更新值。

其中:游戏卡/目录-cache-aside/read-through;计数器/排行榜-写回+CRDT/聚合;货币/限额手册-通过受控的TTL阅读。

4)密钥、分割和神经识别

Шаблон: `domain:entity:{id}:v{schema}|region={R}|currency={C}|lang={L}`.

仅将真正改变答案(区域,货币,语言,方案版本)的内容包含在密钥中。
电路转化:如果发生不兼容的变化,则在键中提高"vN",从而避免大规模购买。
按产品/tenant进行命名:'tenant: {t}:'-对于多重类型至关重要。
"密钥存在"的Bloom过滤器可以减少对源的访问。

5)TTL,新鲜和残疾

TTL矩阵:
  • 静态(哈希文件):30-365天+"immutable";
  • 目录/横幅:5-60分钟+"stale-wile-revalidate";
  • 领导层/报价:2-15秒;
  • 目录(货币/限额):1-10分钟。
  • 事件致残:发布"产品"。updated '→禁用点键/前缀。
  • 基于标签的垃圾桶:按标签分组清除(促销/目录版本)。
  • Soft-Expiry: TTL到期后,我们以"stale"的形式放弃过时的版本,并行更新(SWR/SIE)。
  • Versioned Keys> mass purge:更便宜、更安全。

6)Stampede,"热门"钥匙和竞争

Dogpile/Stampede保护:
  • 单次飞行(request coalescing):一个领导者更新密钥,其他领导者等待。
  • TTL挤压:模煳到期,避免一次性崩溃。
  • 本地SWR:我们给用户一个过期的值,我们更新背景。
  • Hot Keys:

将热键复制到多个通过阅读分布的"key#1..N"插槽;

过程内存中的近轴缓存;

预告片/refresh-ahead在高峰(比赛/比赛)之前。
重键的升级协变限制。

7)一致性和交叉层

Write-invalidate:写入源时-同步禁用相应的密钥(pub/sub)。
读取修复:如果出现差异,请更新正确值的Kesh。
Eventual vs Strong:直接阅读/短期TTL的关键现金交易;UI展示和统计-事件。
CRDT/聚合器:对于分布式计数器/评级-"merge-safe"结构(G-Counter,线程上的Top-K)。
级联残疾:"游戏"更新使卡+清单+定制推荐缓存残疾。

8)序列化、压缩和格式

格式:protobuf/MessagePack比JSON快;CDN/浏览器-带有Brotli的JSON。
在Redis中压缩:对对象>1-2 KB有利,但要注意CPU。
按需部分响应/字段:少字节→少于TTFB和RAM。

9)驱逐政策和规模

LRU(默认)-安全;LFU更适合"流行"内容。
按键/值大小:保持控制("avg value size","max"指标)。
namespace/tenant配额,以免单个产品被"吃掉"整个kesh。

10)安全和PII/PCI

个人/财务数据-不要在CDN/edge上和共享层中打结;使用令牌/投影。
通过client-side crypto在Redis中加密敏感值(注意TTL控制丢失)。
严格的ACL和网络隔离;固定的NAT/IP,用于向提供商发送信息。

11)kesha的可观察性和SLO

度量标准:
  • Hit Ratio(按图层和前缀)、Origin Offload。
  • TTFB/P95/P99 kesh之前/之后,Latency Redis。
  • Evictions, OOM, keyspace hits/misses.
  • Stampede rate(并行更新比例),refresh时间。
  • Stale served % и Freshness lag.
SLO示例:
  • 游戏目录:Hit Ratio ≥ 85%,TTFB P95 ≤ 150毫秒(边缘)。
  • API参考:Revalidation-hit ≥ 60%, P95 ≤ 200毫秒。
  • Redis:P99手术≤ 5毫秒,每小时不超过1%。

12)FinOps: 腰果成本

$/GB月RAM vs $/RPS起源:计算回报点。
Offload and egress: CDN+Redis减少了来自区域起源的出站流量。
Image/WebP/AVIF和非规范化可以节省最多的字节。
限制"昂贵的MISS":分析"字节× MISS ×地区"。

13)示例(片段)

13.1 Cache-Aside with single-flight(伪代码)

python def get(key, ttl, loader):
val = redis. get(key)
if val: return val with single_flight (key): # only one updates val = redis. get (key) # double check if val: return val data = loader () # request to source redis. setex(key, ttl_with_jitter(ttl), serialize(data))
return data

13.2根据事件发布残疾

json
{
"event": "game. updated",
"game_id": "g123",
"affected": ["catalog:list:region=TR", "game:card:g123:"]
}

Consumer签署了该频道,并使"DEL"/"PUBLISH"与密钥/标签匹配。

13.3键与电路版本和位置


game:card:v2:id=g123    region=BR    currency=BRL    lang=pt-BR

14)实施支票

1.Kesha和TTL矩阵级别映射(静态/半静态/API)。

2.密钥: 域,方桉版本,地方/地区/货币,tenant.

3.选择per-endpoint模式(aside/read-through/write-through/back)。
4.SWR/SIE,单次飞行和TTL推杆对阵踩踏。
5.事件障碍(pub/sub),团体标签。
6.在峰会之前为"热线"密钥和prewarm提供近距离缓存。
7.格式和压缩(protobuf/MsgPack,Brotli),尺寸控制。
8.LRU/LFU政策,namespace/tenant配额。

9.SLO/метрики: hit ratio, latency, evictions, stale %, freshness lag.

10.安全性:个人化、令牌化、网络/ACL无商店。

15)反模式

"no-cache""以防万一",TTL的豁免为零。
关键包括所有查询/标题→基数爆炸。
每次发行时"整个CDN/Redis"的质量冲浪。
缺乏抗踩踏防护和"顶级钥匙"一次性到期。
没有配额/隔离的统一共享Redis;"热"tenant吞噬了整个kesh。
对edge/CDN进行个人响应。
没有新鲜遥测/进度→盲目控制。

16) iGaming/fintech上下文: 实用音符

排行榜/排名:TTL 2-10 s,aggregate流+CRDT,SWR发生故障。
游戏/横幅目录:CDN+Redis;关键:区域/货币/语言;根据"promo: update"标签进行残疾。
支付状态:写入路径上没有缓存;阅读-简短的TTL (≤3 -5 c)或直接查询。
KYC/AML回应:取消非PII衍生工具(状态),不要将图像/文档存储在Redis中。
VIP路径:单独的namespace/Redis池,优先服务。

底线

强大的kesh策略是层级体系结构,正确的更新模式,经过深思熟虑的TTL/残疾,抗踩踏性,整洁的键和版本以及可观察性和FinOps。按照这些原则,您将稳定P95/P99尾巴,减少源头负荷并获得可预测的毫秒成本-这对于产品和业务来说是最重要的。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。