标签:Effect

共 169 篇文章带有这个标签。

Effect 的 Pool 怎么复用连接并限制并发?

Pool 把同类资源(数据库连接、worker)攒成一批复用并限制并发。这篇讲 make 与 makeWithTTL 的区别、借用方式,以及 invalidate 的严格相等陷阱。

Effect 里会过期的资源怎么刷新?

token、远程配置这类会过期的单个资源,Effect 用 Resource 缓存一个 Effect 的结果,用 LayerRef 缓存整个 Layer 的 Context。这篇讲两者的刷新方式和选择。

Effect 的 LayerMap 怎么做多租户 Layer 缓存?

LayerMap 把「key 到资源」换成「key 到 Layer」,业务代码只写 yield* TenantDb,租户在边界处选择。这篇讲它的写法、缓存行为,以及不设 idleTimeToLive 时每次都重建的坑。

Effect 的 Layer 怎么在退出时关闭连接池?

在 Layer 构造体里用 Effect.addFinalizer 登记清理动作,Layer 被释放时执行,并保证反序释放、失败时回收。这篇讲清登记位置、顺序与长期运行的写法。

Effect 里怎么控制 span 的成本?

span 有成本,而大部分流量没有排查价值。这篇讲四个工具:整段关掉 span、用最低级别不导出细粒度 span、排除健康检查请求、循环里一批只开一个 span。

Effect 里怎么记录指标?

用 Metric.counter、Metric.gauge、Metric.histogram 定义指标,用 Metric.update 更新。讲清三种形态各记什么,以及标签基数为什么要控制。

Effect 怎么把日志和 span 导出到 OTLP?

用 effect/observability 里的 OtlpTracer 和 OtlpLogger 组成一个 Layer,提供序列化和 HTTP 客户端两个依赖,合并进主 Layer 即可导出。

Effect 里怎么给函数加 span?

用 Effect.withSpan 包一段 Effect,或用 Effect.fn 定义自带 span 的函数。讲清 span 名字为什么要稳定、变化的值放哪、span 该打在哪些边界上。

Effect Optic 怎么深层读写不可变数据?

用 Effect v4 的 Optic 模块替代层层展开运算符:Iso、Lens、Prism、Traversal 的层级,读、写、改、批量改的写法,以及什么时候不该用它。

Effect Optic 的 check 在写回时会校验吗?

不会。check 只在读侧过滤,写回时原样透传。这篇讲怎么用写后复核、makeOptional 自定义 setter 或 Schema.toIso 真正拦住非法写入。

Schema.Struct 上的 verifyRoundTrip 为什么失败?

在 effect 4.0.5 上,对 Schema.Struct 调 TestSchema 的 verifyRoundTrip 会失败,即使 Schema 完全正常。这篇讲两个原因,以及用 checkEffect 加 toEquivalence 的绕法。

怎么用 TestSchema.Asserts 测 Effect Schema?

effect/testing 里的 TestSchema.Asserts 专门测 Schema:断言解码、编码、往返和生成器。这篇讲每个方法做什么,以及怎么搭进 vitest。

Effect 的 RateLimiter 怎么按 key 限速?

RateLimiter 是 effect/persistence 提供的按 key 限速服务。这篇讲清它的 consume 参数、两种算法、delay 与 fail 的区别,以及内存和 Redis 两种存储。

Effect 的 Latch 是倒数器吗?

熟悉 CountDownLatch 的人容易误会 Effect v4 的 Latch。它其实是一个可反复开关的闸门,这篇讲清 open、close、release、whenOpen 的语义。