30.4. 配置智能路由器行为
在具有多个 KIE 服务器的集群环境中,默认行为是并行向每个 KIE 服务器发送请求,每个 KIE 服务器的主机将使用"round-robin"方法发送请求。在以下示例中,每个 KIE 服务器都使用相同的 KJAR,但每个 KJAR 版本都不同:
| 服务器名称 | KJAR 版本 | 主机 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
如果您发送请求,请求将发送到 kie-server1(129.0.1.2), kie-server2(129.0.2.3), 和 kie-server3(129.0.3.1)。
如果您发送第二个请求,则该请求将发送到每个 KIE 服务器的下一主机。例如: kie-server1(129.0.1.3)、 kie-server2(129.0.2.1) 和 kie-server3(129.0.3.2)。
智能路由器有三个组件,您可以修改它们来更改此行为:
- ContainerResolver
- 负责查找与服务器交互时要使用的容器 ID 的组件。
- RestrictionPolicy
- 负责禁止智能路由器使用特定端点的组件。
- ConfigRepository
- 负责维护智能路由器配置的组件。这主要与路由表相关。
- IdentityService
- 负责使用您自己的身份提供程序的组件。这适用于 KIE 服务器实例。
智能路由器使用 ServiceLoader 程序来实现以下组件:
- ContainerResolver
-
META-INF/services/org.kie.server.router.spi.ContainerResolver - RestrictionPolicy
-
META-INF/services/org.kie.server.router.spi.RestrictionPolicy - ConfigRepository
-
META-INF/services/org.kie.server.router.spi.ConfigRepository - IdentityService
-
META-INF/services/org.kie.server.router.identity.IdentityService
例如,对于以上情况,您可以自定义 ContainerResolver,使智能路由器搜索整个可用 KIE 服务器中的最新版本 KJAR 进程,并始终以该进程启动。这种情况意味着每个 KIE 服务器都托管一个 KJAR,每个版本都会共享相同的别名。
由于 Smart Router 是一个可执行 jar,所以要包括扩展,您需要修改 命令。例如:
java -cp LOCATION/router-ext-7.13.5.redhat-00002.jar:rhpam-7.13.5-smart-router.jar org.kie.server.router.KieServerRouter
java -cp LOCATION/router-ext-7.13.5.redhat-00002.jar:rhpam-7.13.5-smart-router.jar org.kie.server.router.KieServerRouter
启动该服务后,您会看到日志输出,说明用于组件的实现: