RRuna

架构原则

微内核边界与依赖规则

Runa 的架构是微内核:核心只做加载器、DI、命令、Host、配置、时间和生命周期。HTTP、WebSocket、JSON-RPC、未来 gRPC 都是按需安装的传输块。

为什么要做微内核

目标不是把所有东西塞进根包,而是让所有能力通过同一套接入协议进入应用:

New 独立使用 -> Provider 注册 -> DI 获取 -> 生命周期管理 -> Shutdown 关闭

用户只安装核心时,不应背上 route、cache、queue、database、storage 等依赖。

架构分层

L0 内核       runtime / provider / command / host / config / core / errs
L1 传输块     route / ws / jsonrpc / 未来 grpc
L2 能力块     cache / queue / database / storage / session / auth ...
L3 驱动块     redis / s3 / nats / amqp / oro ...

依赖规则:

  • 内核不 import route
  • route 不 import 具体能力
  • 能力核心 API 不 import route
  • 所有接入都走 Provider
  • 所有长期运行对象都走 Host 或生命周期

对使用者意味着什么

  • 应用需要 HTTP 时才安装 route
  • 需要哪个能力就显式安装哪个能力,例如 cachequeuedatabaseviewlang
  • 只有需要外部依赖时才安装驱动模块,例如 Redis、S3、AMQP、NATS、Oro、Prometheus
  • 业务代码放在模块里,通过应用生命周期注册路由、命令、监听器、队列任务、调度任务和服务
  • gRPC 在传输包发布前仍按规划中处理
编辑此页