Skip to content

服务隔离与拦截

服务隔离

服务隔离描述了这样一种场景:用户安装的多个插件依赖同一个服务,但用户希望不同的插件使用不同的服务实例。例如,希望某些数据存储在 MySQL 服务器上,另一些数据则存储在本地的 SQLite 数据库中。这时,我们可以使用服务隔离来实现。

yaml
- name: loader:group
  isolate:
    database: true
  config:
    - name: '@minatojs/driver-mysql'
    - # 其他插件

- name: loader:group
  isolate:
    database: true
  config:
    - name: '@minatojs/driver-sqlite'
    - # 其他插件

具名隔离域

yaml
- name: '@minatojs/driver-mysql'
- name: '@minatojs/driver-sqlite'
  isolate:
    database: sqlite

- # 其他插件,默认情况下使用 MySQL
- name: custom-plugin
  isolate:
    database: sqlite # 使用 SQLite

服务拦截

服务拦截描述了这样一种常见的场景:用户安装的多个插件依赖同一个服务,但每个插件又希望对服务进行一些定制化。例如,很多插件都依赖 http 服务进行网络请求,但用户希望对特定插件设置代理,对另一些插件设置超时时间。这时,我们可以使用服务拦截来实现。

yaml
- name: plugin-a
  intercept:
    http:
      proxy: http://localhost:7890

- name: plugin-b
  intercept:
    http:
      timeout: 60000