Effect 的 Pool 怎么复用连接并限制并发?
Pool 把同类资源(数据库连接、worker)攒成一批复用并限制并发。这篇讲 make 与 makeWithTTL 的区别、借用方式,以及 invalidate 的严格相等陷阱。
共 169 篇文章带有这个标签。
Pool 把同类资源(数据库连接、worker)攒成一批复用并限制并发。这篇讲 make 与 makeWithTTL 的区别、借用方式,以及 invalidate 的严格相等陷阱。
token、远程配置这类会过期的单个资源,Effect 用 Resource 缓存一个 Effect 的结果,用 LayerRef 缓存整个 Layer 的 Context。这篇讲两者的刷新方式和选择。
LayerMap 把「key 到资源」换成「key 到 Layer」,业务代码只写 yield* TenantDb,租户在边界处选择。这篇讲它的写法、缓存行为,以及不设 idleTimeToLive 时每次都重建的坑。
两者都把一个 Layer 的输出喂给另一个,区别只在输出里留不留被喂入的服务。这篇用同一组 Layer 对比两种写法的类型。
在 Layer 构造体里用 Effect.addFinalizer 登记清理动作,Layer 被释放时执行,并保证反序释放、失败时回收。这篇讲清登记位置、顺序与长期运行的写法。
span 有成本,而大部分流量没有排查价值。这篇讲四个工具:整段关掉 span、用最低级别不导出细粒度 span、排除健康检查请求、循环里一批只开一个 span。
上报器收到的是 Cause,不是「该告警的事故」。这篇讲出错和出事的区别,以及上报器的回调该守住的四条边界:指纹、投递隔离、脱敏、供应商隔离。
用 Metric.counter、Metric.gauge、Metric.histogram 定义指标,用 Metric.update 更新。讲清三种形态各记什么,以及标签基数为什么要控制。
用 effect/observability 里的 OtlpTracer 和 OtlpLogger 组成一个 Layer,提供序列化和 HTTP 客户端两个依赖,合并进主 Layer 即可导出。
用 Effect.withSpan 包一段 Effect,或用 Effect.fn 定义自带 span 的函数。讲清 span 名字为什么要稳定、变化的值放哪、span 该打在哪些边界上。
用 Effect v4 的 Optic 模块替代层层展开运算符:Iso、Lens、Prism、Traversal 的层级,读、写、改、批量改的写法,以及什么时候不该用它。
不会。check 只在读侧过滤,写回时原样透传。这篇讲怎么用写后复核、makeOptional 自定义 setter 或 Schema.toIso 真正拦住非法写入。
Effect v4 把属性测试做成了原生能力:从 Schema 派生生成器,再用 it.prop 或 it.effect.prop 接进 vitest。这篇讲最短的上手路径。
Effect v4 的 Arbitrary.checkEffect 失败时给出 shrink 后的输入和 replay token。这篇讲 seed、replay、结构化 shrinking 与自定义 shrink 怎么用。
在 effect 4.0.5 上,对 Schema.Struct 调 TestSchema 的 verifyRoundTrip 会失败,即使 Schema 完全正常。这篇讲两个原因,以及用 checkEffect 加 toEquivalence 的绕法。
effect/testing 里的 TestSchema.Asserts 专门测 Schema:断言解码、编码、往返和生成器。这篇讲每个方法做什么,以及怎么搭进 vitest。
RateLimiter 是 effect/persistence 提供的按 key 限速服务。这篇讲清它的 consume 参数、两种算法、delay 与 fail 的区别,以及内存和 Redis 两种存储。
熟悉 CountDownLatch 的人容易误会 Effect v4 的 Latch。它其实是一个可反复开关的闸门,这篇讲清 open、close、release、whenOpen 的语义。
普通 Semaphore 先到先得,一个租户灌入大量任务会堵住所有人。PartitionedSemaphore 共享一个许可池,按分区 key 在等待者之间轮转分配。
并发上限、速率上限、循环节拍是三件不同的事,Effect 里分别对应 Semaphore、RateLimiter 和 Schedule。这篇给出选型顺序和叠加方式。