Back to Nocobase

共享内存多应用模式

docs/docs/cn/multi-app/multi-app/local.md

2.0.545.6 KB
Original Source

共享内存模式

介绍

当用户希望对业务进行应用级别的拆分,但又不希望引入复杂的部署和运维架构时,可以使用共享内存的多应用模式。

在这种模式下,一个 NocoBase 实例中可以同时运行多个应用。每个应用是独立的,可以连接独立的数据库,可以单独创建、启动和停止,但它们共享同一个进程和内存空间,用户仍然只需要维护一个 NocoBase 实例。

使用手册

环境变量配置

在使用多应用功能前,请确保在 NocoBase 启动时设置了以下环境变量:

bash
APP_DISCOVERY_ADAPTER=local
APP_PROCESS_ADAPTER=local

应用创建

在系统设置菜单中点击「应用监管器」,进入应用管理页面。

点击「新增」按钮,创建一个新应用。

配置项说明

配置项说明
应用名称应用在界面中显示的名称
应用标识应用标识,全局唯一
启动方式- 首次访问时启动:当用户首次通过 URL 访问该子应用时才启动
  • 随主应用一同启动:在主应用启动时同时启动子应用(会增加主应用启动时间) | | 环境 | 在共享内存模式下,只有本地环境可用,即 local | | 数据库连接 | 用于配置应用的主数据源,支持以下三种方式:
  • 新数据库:复用当前数据库服务,创建独立数据库
  • 新的数据连接:连接到其他数据库服务
  • Schema 模式:当前主数据源为 PostgreSQL 时,为应用创建独立的 Schema | | 升级 | 若连接的数据库中存在低版本的 NocoBase 应用数据时,是否允许自动升级到当前应用版本 | | JWT 密钥 | 为应用自动生成独立的 JWT 密钥,确保应用会话独立于主应用及其他应用 | | 自定义域名 | 为应用配置独立访问域名 |

应用启动

点击 启动 按钮可启动子应用。

如果在创建时勾选了 “首次访问时启动”,则首次访问时会自动启动。

应用访问

点击 访问 按钮,会在新标签页中打开该子应用。

默认使用 /apps/:appName/admin/ 访问子应用,例如

bash
http://localhost:13000/apps/a_7zkxoarusnx/admin/

同时,也可以为子应用配置独立的域名,需要将域名解析到当前 ip,如果使用了 nginx,也需要在 nginx 配置里添加域名。

应用停止

点击 停止 按钮可启动子应用。

应用状态

在列表中可以查看每个应用的当前状态。

应用删除

点击 删除 按钮可移除应用。

常见问题

1. 插件管理

其他应用可以使用的插件和主应用一致(包括版本),但是可以独立配置和使用插件。

2. 数据库隔离

其他应用可以配置独立的数据库,如果想应用之间进行数据共享,可通过外部数据源实现。

3. 数据备份和迁移

目前在主应用上数据备份不支持包含其他应用的数据(只包含应用基本信息),需手动在其他应用内备份和迁移。

4. 部署与更新

在共享内存模式下,其他应用的版本将自动跟随主应用进行升级,自动保证应用版本一致。

5. 应用会话

  • 若应用使用独立的 JWT 密钥,则应用会话独立于主应用及其他应用。如果通过同一域名的子路径访问不同应用,由于应用 TOKEN 缓存在 LocalStorage 中,在不同应用间切换时需要重新登录。建议为不同应用配置独立的域名,以实现更好的会话隔离。
  • 若应用未使用独立的 JWT 密钥,则会共享主应用的会话,在同一浏览器访问其他应用后返回主应用无需重新登录。但存在安全隐患,如果不同应用的用户 ID 重复,可能导致用户越权访问其他应用的数据。