TouchAll技术博客

TouchAll技术博客

最新文章

[系统设计 - 数据库设计专题] 2.数据库容量规划

做数据库容量规划的核心目的,是精准评估当前存储基线、通过预估数据增长速率、预留未来 3–5 年业务容量上限,通过预留合理冗余余量、规范单表 / 索引容量边界、设计分层存储与平滑扩容架构,从根源避免业务突发增量、数据持续膨胀导致的磁盘打满、数据库性能雪崩、架构无力承载业务迭代的问题,保障系统长期稳定、

[系统设计 - 缓存设计专题] 5. 缓存性能优化要点

数据结构与 Key 设计优化 规避大 Key / 大 Value 问题:单个 value 几十 MB、上万元素 list/hash,阻塞主线程、网络 IO、分片内存倾斜、删除阻塞。 优化: 列表拆分:长 list 分多段 hash;大批量结果分页存储; 统一阈值:value 上限控制 100KB 以

[系统设计 - 缓存设计专题] 4. 缓存经典问题

一、缓存穿透 产生原因 查询不存在的数据,缓存与数据库都没有,请求直接打穿到 DB,大量无效查询压垮数据库。 例:查询 id=-1、随机不存在的用户 ID,缓存查不到,每次都查库。 解决方案 缓存空值 / 空占位符:DB 查无数据时,缓存一条过期短时间的空记录,拦截重复请求; 布隆过滤器:把所有合法

[系统设计 - 可观测设计] Promethues存储机制

Prometheus 存储机制 Prometheus 默认使用 TSDB(时序数据库) 存储,v2.x 全新自研块状时序存储,核心分为四大模块:Head Block、持久化 Block、WAL 预写日志、mmap 内存映射。 1. WAL 预写日志(Write-Ahead Log) 所有采集指标写入

[系统设计 - 缓存设计专题] 2. 应用层缓存设计

flowchart TD A["需求梳理与流量评估"] --> B["容量测算&资源配额规划"] B --> C["缓存架构选型<br/>单机/分布式/多级/多地组合"] C --> D["标准化缓存键规则设计"] D --> E["生命周期+内存淘汰策略定义"] E --> F["分布式一致性方案
3
0
0
2026-07-13

[系统设计 - 缓存设计专题] 1. 缓存分层架构

标准分层链路 L0 CDN 边缘缓存 → L1 网关 / 反向代理缓存 → L2 应用本地缓存(进程内) → L3 分布式共享缓存(Redis) → L4 数据库层缓存(Buffer Pool / 查询缓存) 每层统一按 4 个维度展开: 使用场景 本层能解决什么问题 本层固有、无法彻底根除的短板(
6
0
0
2026-07-12

[系统设计 - 缓存设计专题] 3. 缓存一致性

缓存一致性 缓存一致性矛盾根源是: 主存储与副本缓存之间的同步无法原子化导致的,会出现缓存与数据库数据不一致。 如何设计缓存一致性方案 flowchart TD A[开始] --> B{读多写多?} B -- 读多 --> C{并发高?} C -- 低 --> D0[旁路缓存] C -- 一般 --
15
0
0
2026-07-11

我用Buildah的那些“惊喜”:从期待到怀疑人生

我用Buildah的那些“惊喜”:从期待到怀疑人生 作为一个常年跟容器打交道的开发,我对"无守护进程构建"的执念近乎偏执——毕竟谁也不想在CI服务器上天天跟Docker daemon的权限问题死磕。所以当听说Buildah能脱离daemon搞事情,还支持Rootless模式时,我仿佛看到了容器构建界
Svelte 5 完全指南: 从入门到跨端应用开发 - @attach调试语法

Svelte 5 完全指南: 从入门到跨端应用开发 - @attach调试语法

Svelte 5 完全指南: 从入门到跨端应用开发 - @attach调试语法 一、概述 Svelte的 {@attach}指令用于将DOM元素或组件实例绑定到变量,支持通过CSS选择器绑定DOM元素和通过组件标签名绑定组件实例,两种语法分别为 {@attach selector to variab
59
0
0
2025-08-05
Svelte 5 完全指南: 从入门到跨端应用开发 - @debug调试语法

Svelte 5 完全指南: 从入门到跨端应用开发 - @debug调试语法

Svelte 5 完全指南: 从入门到跨端应用开发 - @debug调试语法 一、概述 Svelte 中的{@debug ...}标签是console.log(...)的替代方案,其核心功能是在指定变量发生变化时记录它们的值,且若打开开发者工具,会暂停代码执行;它接受逗号分隔的变量名列表(不支持任意
阅读更多