RRuna

Runa

Go 1.27+

适用于业务开发的 Go Web 框架

轻量核心负责启动和生命周期,需要路由、缓存、队列、数据库时再按需接入,小服务到复杂业务都保持清晰

  • 轻量核心
  • 按需接入
  • 依赖可控
  • 自由扩展
go get github.com/duxweb/runa
main.go
func main() {
    app := runa.New()
    app.Install(
        route.Provider(route.Addr(":8080")),
        cache.Provider(),
    )

    route.Default().Get("/", func(c *route.Context) error {
        return c.Text("Hello Runa")
    })

    if err := app.Run(context.Background()); err != nil {
        panic(err)
    }
}
组合

从轻量核心开始,按需接入能力

核心负责应用启动、依赖注入、命令和生命周期,路由、缓存、队列、数据库、认证、存储等能力按需安装,业务代码通过 Module 组织

runa · 内核+
routegrpc · 规划中wsjsonrpccachequeuedatabasesessionauthstoragelockrateeventtaskschedulerediss3oronats
传输能力驱动
供应链

用到什么,才引入什么

模块边界跟着 import 走,没有接入的能力不会把第三方依赖带进 go.sum,小项目保持轻量,大项目也能稳步扩展

微内核框架

只保留应用骨架和命令入口

runa · 应用内核config · 配置加载command · 命令入口lifecycle · 启停编排

按需引入

需要什么能力,就安装什么能力包

runa · 内核route · HTTP 入口cache / queue · 缓存与队列database / storage · 数据与存储
架构

层次清晰,依赖单向

驱动、能力、传输都只向下依赖核心,内核不反向感知上层模块,项目越长越不容易乱

驱动redis · s3 · oro · nats · amqp · mqtt
能力cache · queue · database · session · auth · storage · …
传输route(HTTP) · ws · jsonrpc · grpc(规划中)
内核加载 · 依赖注入 · 生命周期 · 命令 · Host · 配置
生命周期

所有能力,都走同一套生命周期

能力和 Module 按顺序进入 Init、Register、Resolve、Boot 和 Shutdown,应用启动和关闭都有明确顺序

InitRegisterResolveBootShutdown
不止于 HTTP

面向 Web,也能运行后台服务

HTTP 是常用入口,但内核不绑定 HTTP,你可以接入路由服务,也可以只运行命令、队列 worker 或其他 Host

HTTP通过 route 提供强类型路由、域和中间件
gRPC规划中的传输块,作为 Host 接入内核
WebSocket提供 Hub 与广播能力,可通过 redis 横向扩展
JSON-RPC可运行在 HTTP 或 WebSocket 上,并挂载到 route

从最小应用开始

先跑一个最小应用,再按业务需要接入路由、缓存、队列、数据库和运维能力