D1:迁移、事务与批处理、读副本与 Sessions,以及什么时候该离开它
D1 是托管的 SQLite。本文讲清迁移工作流、为什么不能用 BEGIN 而要用 batch、读副本与 Sessions API 的一致性保证,以及单库上限与单线程特性决定的离开时机。
共 35 篇文章带有这个标签。
D1 是托管的 SQLite。本文讲清迁移工作流、为什么不能用 BEGIN 而要用 batch、读副本与 Sessions API 的一致性保证,以及单库上限与单线程特性决定的离开时机。
讲清 wrangler deploy 背后的版本与部署两个概念、渐进发布与回滚能回滚什么不能回滚什么,workers.dev、routes 与 custom domains 的区别,静态资源 assets 的部署形态,以及常见的部署坑。
理解 Durable Objects 的核心模型:同一 ID 全局只有一个实例、单线程处理事件、输入输出闸门与 await 竞态,以及 SQLite 存储、生命周期与取舍。
基于单线程与单实例的模型,讲 Durable Objects 的几种典型模式:串行协调器、滑动窗口限流、聊天房间、WebSocket Hibernation 与 alarm 定时任务,以及各自的取舍与边界。
解释 Workers KV 为什么读得快却不能当数据库:最终一致、约 60 秒或更久的传播、负缓存、cacheTtl 与同 key 每秒一次写入;并给出配置读取、缓存层、会话等模式的取舍与误区。
讲清 Cloudflare Queues 的 at-least-once 投递、批量消费、重试与死信队列的配置与行为,以及为什么消费者必须幂等,并给出与 Workflows、Durable Objects 的取舍。
讲清 R2 的强一致模型、Workers 绑定 API、大文件的预签名直传与分片上传,以及 r2.dev 与自定义域名的差别和缓存陷阱,最后给出什么时候该用、什么时候别用 R2 的取舍。
讲清 Workers 的 handler 种类、响应返回之后能做什么与 ctx.waitUntil 的真实语义、CPU 时间和墙钟时间的区别与限额口径,以及 request.signal 的取消与超时处理。
从一致性和访问模式出发,比较 Cloudflare 的 KV、D1、R2 与 Durable Objects:各自保证什么、边界在哪里、常见选错的场景,以及一棵可以直接套用的决策树。
讲清 Workers 的运行模型:V8 isolate 与容器、Node 服务器的差异,没有常驻进程与可靠全局状态意味着什么,冷启动怎么理解,nodejs_compat 的作用与边界,以及哪些 API 能用。
讲解 Cloudflare Workflows 的持久化执行模型:step.do 的缓存与重试、sleep 与 waitForEvent、编写规则与限额,以及它与 Queues 在多步骤流程上的分工与取舍。
讲清 wrangler.jsonc 的核心字段、为什么绑定(binding)是 Workers 的核心抽象,以及 wrangler dev 本地模拟与线上的差异、vars 与 secrets 的区别、.dev.vars 优先级、类型生成和多环境的坑。
把前面各章的结论倒过来看:十一种典型的 Effect 误用,从到处 run、悬空 Effect 到吞掉失败、无界并发、盲目重试和万物皆 Effect,每种都说明丢掉了什么保证。
团队约定写在文档里会过期。本章讲怎样判断一条约定该交给机器还是交给人:按能否被证伪分层为语法、类型、依赖与语境四类,并说明 Effect 4.0.5 的 @stability 标签和版本固定该怎么管理。
HTTP、数据库、RPC 看似三个领域,其实都是跨进程边界的调用,面对同样的问题。本章讲它们共享的形状,以及 HttpClient、SqlClient、Rpc 怎样落在这个形状上。
Effect 把日志、tracing 和指标都做成内置能力,函数加一层包装就能产生 span。但工具不会替你决定该看什么。本章先讲三种信号各自回答什么问题,再讲怎么在代码里挂上去、怎么导出,以及常见的滥用方式。
Effect 程序只是描述,总得有人在某个地方真正运行它。本章讲清运行只发生在边缘的含义、为什么长驻进程要构建一个 ManagedRuntime,以及接入 Web 框架和 Cloudflare Workers 时边界该画在哪里。
多个 fiber 要共享数据、互相传递工作或限制并发时,该用哪个原语?本章按「要解决的问题」而不是按 API 来分类:Ref 存值、Queue 派活、PubSub 广播、Semaphore 限流,并讲清各自的边界。
数据不是一次到齐,而是一批批流过来。本章讲 Stream 是什么、惰性拉取与背压怎样让内存保持有界,常用的构造、变换与消费方式,以及哪些场景用数组或 forEach 更合适。
外部调用既会慢也会偶发失败。本章讲清 Schedule 为什么是一个可组合的策略值,退避、上限与抖动怎么拼,哪些失败值得重试,以及 timeout 和 retry 谁包着谁。