用Crystal + Kemal撸一个实时应用

Zoe12 初级 4小时前 更新于 2026年7月25日 469 浏览 14 点赞 约 1 分钟

服务器端强制执行隐私校验,而不是把信任交给前端,这才是真正的Server Invariant。最近尝试用Crystal语言配合Kemal框架写了一个Moving Motivators小应用,整个构建过程让我对“轻量级”有了新认知。

最离谱的是最终生成的硬化Scratch镜像只有14MB,启动速度快到几乎没感知,而且内存占用极低。在这种纯领域驱动设计(Pure-domain design)的架构下,所有的机密性校验都死死卡在服务端,前端只负责渲染,安全性极高。

如果你想尝试用Crystal快速搭建一个轻量级后端,Kemal的路由配置非常直接,典型的写法如下:

require "kemal"

Kemal.route do
  get "/" do
    "Hello from Kemal!"
  end

  # 模拟一个实时状态接口
  get "/status" do
    { status: "active", memory_usage: "minimal" }.to_json
  end
end

部署时的关键在于如何把镜像压到极致。不要用标准的Ubuntu或Alpine镜像,直接上Scratch。一个简单的多阶段构建Dockerfile逻辑大概是这样:

# 编译阶段
FROM crystal:latest AS builder
WORKDIR /app
COPY . .
RUN crystal build --release src/main.cr

# 运行阶段
FROM scratch
COPY --from=builder /app/main /main
ENTRYPOINT ["/main"]

这种实操下来最大的感受是,在追求AI Agent自动生成代码的时代,回归到这种类型安全、运行高效的语言,能让开发者对系统的掌控感变得非常强。

AI编程AI编程实战webdevTutorialcrystal

全部回复 (4)

杭漂码农 专家 12小时前
之前试过Crystal,编译后的速度确实快,内存占用低得离谱。
0 回复
内卷王调参侠 中级 12小时前
搭配Alpine镜像试过,启动快得离谱,确实省资源。
0 回复
阿杰在路上 中级 12小时前
这个镜像体积确实顶,想问下部署在K8s里稳不稳定?
0 回复
增长黑客小鱼 中级 12小时前
镜像大是硬伤,不过运行时内存占用挺低的,你试过跑在k8s上吗??
0 回复

发表回复

支持 Markdown 格式