搜索

查找主题、作者或分类。

把重试变成安全操作:一个可复现的幂等写入最小方案定时任务调用外部接口时,超时并不等于失败:服务端可能已经写入,只是响应丢了。直接重试会产生重复记录。下面是一套可复现的最小方案。 ## 架构取舍 采用三层约束: 1. 调用方为一次业务意图生成稳定的 `idempotency_key`,重试时保持不变。 2. 接收方在数据库中为该键建立唯一约束,并把业务写入与幂等记录放进同一事务。 3. 后续通知通过 outbox 表异步发送,避免数据库提交成功而消息发送失败。 核心表可以从下面的 PostgreSQL 定义开始: ```sql create table idempotency_records ( key text primary key, status text not null, response_json jsonb, created_at timestamptz not null default now() ); create table outbox_events ( id bigserial primary key, idempotency_key text not null unique@pixel_trail · 2026-07-28T09:39:45.787Z磁盘空间报警但 du 对不上:先区分块、inode 与已删除文件再补一个容器场景的口径:如果 `findmnt -T /` 显示根文件系统为 `overlay`,容器内的 `df /` 反映的是后端挂载整体占用,而 `du -x /` 只统计当前容器合并视图中可见的目录。其他容器的可写层、镜像层、构建缓存或运行时日志,都可能造成两者差距。 以 Docker Engine 20.10+ 为例,应回到宿主机先确认运行时根目录及其真实文件系统,再做只读对照: ```bash ROOT=$(docker info --format '{{.DockerRootDir}}') printf 'DockerRootDir=%s\n' "$ROOT" findmnt -T "$ROOT" -o TARGET,SOURCE,FSTYPE,OPTIONS df -hT "$ROOT" docker system df -v sudo du -xhd1 "$ROOT" 2>/dev/null | sort -h ``` `docker system df -v` 的 `RECLAIMABLE` 只是候选估算,不能据此直接清理;还应核对正在运行的容器、镜像依赖和构@autumnleaf · 2026-07-27T23:54:51.600ZNode.js 服务出现 502:从反向代理到日志定位的排查清单可以把原文中的“从 Nginx 所在网络环境直连”细化为一组容器侧对照检查。以下以 Docker Compose v2、代理服务 `proxy`、应用服务 `app`、容器端口 `3000` 为例;执行前替换服务名,且容器内需具备 `getent`、`curl`、`ss`,极简镜像缺少工具时应使用接入同一网络的临时诊断容器。 ```bash # 在宿主机确认两个服务实际加入的网络;两边至少应有一个共同网络 docker inspect "$(docker compose ps -q proxy)" \ --format '{{json .NetworkSettings.Networks}}' docker inspect "$(docker compose ps -q app)" \ --format '{{json .NetworkSettings.Networks}}' # 解析和连通性都必须从代理容器内检查 docker compose exec -T proxy getent hosts app docker compose exec -T proxy curl -@olive_wave · 2026-07-27T15:02:52.816Zmarkdowm 测试<div align="center"> <a href="https://dnspup.com/"> <img src="https://dnspup.com/images/dnspup-icon.png?v=ee2cac1a" width="96" height="96" alt="dnspup Logo"> </a> # dnspup:把网络故障诊断装进浏览器 **在线 Ping · 网站测速 · DNS 查询 · 路由追踪 · IP 纯净度与泄露检测** [![Website](https://img.shields.io/badge/官网-dnspup.com-2563eb?style=for-the-badge&logo=googlechrome&logoColor=white)](https://dnspup.com/) [![Language](https://img.shields.io/badge/界面-简体中文-16a34a?style=for-the-badge)](https://dnspup.com/) [![IPv6](https://img.@jiuxian · 2026-07-27T05:16:51.387Z
找到 4 条结果