category

Scala

共 44 篇文章。
全部文章gamegolang客户端开发MinigameSaasrustPythonJavacgTypescriptengineCocosMmodatabase
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 Native 与 GraalVM:AOT 编译、互操作与部署

系统对比 Scala Native 与 GraalVM 两条 AOT 路线:AOT 编译原理(与 JIT 对比)、Scala Native 的无 GC 与 LLVM 后端、C 互操作与 extern、GraalVM native-image 的 SubstrateVM 与封闭世界分析、Truffle 多语言运行时、反射/序列化等动态特性的处理、启动/内存/吞吐基准、CLI/Serverless/嵌入式部署场景,以及 sbt 构建与 CI 工程实践。

12 分钟阅读
GraalVM AOT Native Image
scala

Akka Streams 与响应式流:图 DSL、背压与流式实战

深入 Akka Streams:Reactive Streams 规范与背压协议(request 信号/Publisher/Subscriber)、Source/Flow/Sink 算子、图 DSL(Fan-out/Fan-in/连接器)、背压策略(buffer/throttle/溢出策略)、监督与重启(recover/restart)、Kafka/数据库/网络集成、ETL 与事件处理实战、materialization 与异步边界、以及与函数式流(fs2)的对比选型。

11 分钟阅读
背压 Kafka ETL
scala

函数式架构:六边形设计、纯核心与副作用外壳

系统讲解 Scala 函数式架构:架构动机(可测试性与可推理性)、洋葱/六边形架构与依赖方向、纯核心与副作用外壳、函数式领域建模(ADT/领域服务/规则引擎)、依赖注入的函数式实现(参数传递/Reader/ZLayer)、端口与适配器(数据库/HTTP/消息)、可测试性(解释器替换/属性测试)、类型化错误与故障隔离、以及从传统分层到函数式架构的迁移路线。

11 分钟阅读
DDD ADT
scala

Cats Effect 深度解析:IO 运行时、fibers 与并发原语

深入 Cats Effect 3 的实现层:IO 运行时(WorkStealing 线程池/compute 与 blocking 双池)、fibers 与结构化取消(MonadCancel/取消边界)、并发原语(Ref/Deferred/Queue)、背压与限流策略、错误处理与资源安全(bracket/Resource/超时重试)、调度控制(async/cede/抢占)以及性能调优,帮助读者从「会用 IO」进阶到「理解 IO 运行时」。

12 分钟阅读
Cats Effect IO Fiber
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