服务隔离与拦截
服务隔离
服务隔离描述了这样一种场景:用户安装的多个插件依赖同一个服务,但用户希望不同的插件使用不同的服务实例。例如,希望某些数据存储在 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