tag

Scala

共 38 篇文章。
全部文章JavaGo书稿TypeScript游戏开发独立开发者小游戏游戏设计Godot性能优化RustKafkaPython游戏引擎
scala

Scala CLI 与工具链现代化:指令声明、打包发布与 CI 集成

Scala CLI 把「单文件脚本、依赖声明、编译运行打包」压进一条命令,用指令注释替代构建文件,让脚本、原型与小型工具不再需要完整的项目结构与繁琐的构建配置。本文讲清指令声明与依赖解析机制、与 sbt 的职责边界、测试与多文件项目的目录布局、打包与发布方式,以及持续集成与工具链迁移的实际路径、常见坑与规避手段。

9 分钟阅读
Scala 构建工具 打包
scala

持久化与事件溯源:journal、快照与 CQRS 读模型

事件溯源把系统状态定义为事件序列的折叠结果:写模型只追加不可变事件,读模型由投影派生,命令查询职责分离因此成为它的自然搭档。本文讲清持久化 actor 的命令与事件处理模型、日志与快照如何协作、投影与读模型的构建方式、事件版本演进与兼容策略,并给出恢复性能调优与日常运维的实践要点。

10 分钟阅读
Scala 事件溯源 CQRS
scala

JSON 编解码与性能:circe 派生、jsoniter-scala 代码生成与选型

JSON 编解码是服务边界上最频繁的一次数据转换,它的性能与健壮性直接决定接口的吞吐和容错能力。circe 用代数数据类型把解析、派生与错误路径都建模成纯函数,jsoniter-scala 则用编译期宏生成无反射的编解码器换取吞吐。本文对比两者的模型与代价,给出派生与自定义的写法、性能实测方法,以及版本演进与向后兼容的实践路径。

10 分钟阅读
Scala JSON 序列化
scala

fs2 流处理实战:Stream、Pipe 与背压模型

流处理的难点从来不在「怎么读数据」,而在背压、并发、错误恢复与资源释放这几件相互牵制的事。fs2 把流建模成惰性的拉取式值:下游不拉取,上游就停,背压因此不是需要调参的配置项,而是模型本身的性质。本文讲清 Stream 与 Pipe 的语义、构造与组合子、并发原语的取舍、错误处理与重试策略、与文件与消息队列的集成,以及有状态聚合与窗口的实现方式。

10 分钟阅读
Scala fs2 流处理
scala

Cats Effect 资源管理与生命周期:Resource 组合、释放顺序与连接池落地

资源管理是函数式程序里最容易被忽视的一环:文件句柄、数据库连接、线程池、后台任务都有明确的获取与释放时机,手工写在 finally 里一旦遇上取消、异常或嵌套组合就会漏。本文讲清 Cats Effect 的 Resource 抽象如何把获取与释放绑定成可组合的值,覆盖嵌套组合时的释放顺序、作用域与延迟分配、与手工清理的取舍边界,并给出连接池、后台任务与优雅停机的完整落地代码和常见陷阱。

9 分钟阅读
Scala Cats Effect Resource
scala

Akka 到 Apache Pekko 迁移:许可证、包名与生态替换的完整路径

Lightbend 从 Akka 2.7 起把许可证换成商业源码许可,生产环境需要付费,Apache Pekko 因此成为 Apache 协议下的事实续作。本文讲清许可证变更的真实影响,逐项给出依赖坐标与包名替换、配置前缀与序列化绑定改写、生态模块对应关系,并讨论按通信边界切分的渐进迁移、集群跨版本不兼容的硬边界,以及灰度发布与回滚方案。补充了迁移验证清单。

11 分钟阅读
Scala akka Actor
scala

Scala 云原生部署实战:容器化、健康检查与 Kubernetes 运维

从可部署产物到生产运维,系统梳理 Scala 应用的云原生落地路径:sbt-assembly 与 sbt-native-packager 打包、GraalVM native image 与分层镜像、多阶段 Dockerfile 与 jlink 裁剪、JVM 容器感知参数、Kubernetes 清单与 HPA/PDB/拓扑分布、三类探针语义与 SIGTERM 优雅停机、外部化配置与 Secret、结构化日志与 Prometheus/OpenTelemetry 可观测性、滚动更新与金丝雀发布,以及 OOMKilled、CPU throttling 等生产故障排查与成本优化。

10 分钟阅读
Scala Kubernetes Docker
scala

Scala 与 Kafka 集成实战:FS2-Kafka、Alpakka 与流式管道

从 Kafka 核心概念出发,系统讲解 Scala 生态的两大 Kafka 集成方案:FS2-Kafka(纯函数式、Cats Effect 原生)与 Alpakka Kafka(Akka Streams 版)。覆盖消费语义(at-least-once、commit 策略、事务性 exactly-once)、流式管道设计(背压、parEvalMap 并行、批处理、重试与死信队列)、Schema Registry 序列化、有状态聚合与窗口、可观测性(consumer lag、trace 传播)以及生产实践(优雅停机、rebalance 监听、Testcontainers 测试与容量调优)。

12 分钟阅读
Scala Kafka fs2
scala

Scala GraphQL 服务实战:Caliban、Schema 设计与订阅

以 Caliban 为主线,系统讲解 Scala 侧 GraphQL 服务的落地路径。覆盖 Schema 定义与 case class 派生、接口与联合类型、Relay 分页、ZQuery 批处理消除 N+1、变更与事务边界、基于 ZStream 的订阅推送,以及鉴权指令、查询复杂度限制、Apollo Federation 与 schema 演进等生产议题,并给出可直接复用的代码片段与踩坑清单。

10 分钟阅读
Scala GraphQL API 设计
scala

Scala 并发编程进阶:Future、ExecutionContext 与结构化并发

从 Future 的组合子语义与 ExecutionContext 线程池模型出发,剖析急切求值、无法取消、异常吞噬与阻塞传播四大缺陷,给出 Promise 手动完成与并发原语的实战写法,并对比结构化并发、虚拟线程与 Java 25 的 StructuredTaskScope,最后落到 Cats Effect 与 ZIO 的取舍,以及生产环境的超时、重试、熔断与监控方案。

11 分钟阅读
Scala 并发 线程池
scala

Scala 2→3 迁移与重构实战:迁移工具链、兼容策略与渐进式改造

系统覆盖 Scala 2 到 Scala 3 的迁移与代码现代化:迁移前的评估与兼容性分析、Scala 2 与 Scala 3 的交叉编译、迁移工具链(scalafix/迁移规则/自动迁移)、渐进式迁移策略(逐模块迁移/双编译器并行)、Scala 3 语法现代化(缩进语法/枚举/给定实例)、依赖升级与编译器插件适配、以及迁移后的回归测试与性能验证,帮助读者把「存量 Scala 2 代码库」平滑迁移到 Scala 3。

9 分钟阅读
Scala Scala 3 迁移
scala

Scala 序列化与协议设计实战:Circe、二进制编码与契约演进

系统覆盖 Scala 服务的序列化与协议设计:序列化的本质(对象 ↔ 字节)、文本 vs 二进制格式、Circe/JSON 编码实践(ADT 编码、字段命名、非标结构)、upickle 与 Scodec 二进制编码、版本化与 schema 演进(兼容性规则)、跨语言协议(Protobuf/Avro/gRPC)、以及序列化安全(反序列化漏洞、数据大小限制),帮助读者在「可读性」与「性能/兼容性」之间做出正确协议选择。

9 分钟阅读
Scala 序列化 JSON
scala

Scala 可观测性实战:结构化日志、链路追踪与指标

系统覆盖 Scala 服务的可观测性三支柱:结构化日志(SLF4J/Logback、JSON 日志、字段规范)、链路追踪(OpenTelemetry、trace/span 上下文、跨服务传播)、指标(Micrometer/Prometheus、业务指标与资源指标)、可观测性与 Effect/Fiber 的集成(追踪上下文贯穿异步)、以及日志与追踪的工程实践(采样、脱敏、告警联动),帮助读者把「看日志猜问题」升级为「三支柱协同定位」。

9 分钟阅读
Scala 可观测性 日志
scala

Scala 配置与特性管理实战:类型安全配置、动态配置与 Feature Flag

系统覆盖 Scala 应用的配置与特性管理:配置分层(默认/环境/实例)、类型安全配置库(PureConfig/Circe 配置)、配置校验与错误处理、动态配置与热更新(Consul/AppConfig 监听)、Feature Flag(特性开关)的设计与灰度(开关粒度/推送/回滚)、配置的审计与安全(密钥管理/脱敏)、以及配置与特性管理的工程实践,帮助读者把「散落的配置」升级为「类型安全、可动态、可灰度」的配置体系。

9 分钟阅读
Scala 配置管理 灰度
scala

Scala 函数式错误处理实战:Either、Validated 与 Effect 的错误通道

系统覆盖 Scala 生态的错误处理范式:从异常(throw/catch)到类型化错误(Either/Validated)、错误建模(ADT 表示所有错误分支)、依赖型错误(Validated 累积)、Effect 系统的错误通道(IO 的 raiseError/recover)、错误边界与恢复策略、跨层错误传播(领域/应用/基础设施三层)、以及错误处理的取舍(何时异常何时 Either),帮助读者把错误处理从「事后调试」变成「类型安全的显式流程」。

9 分钟阅读
Scala 错误处理 Either