30.4. 配置智能路由器行为


在具有多个 KIE 服务器的集群环境中,默认行为是并行向每个 KIE 服务器发送请求,每个 KIE 服务器的主机都使用"round-robin"方法发送请求。在以下示例中,每个 KIE 服务器都使用相同的 KJAR 部署,但每个 KJAR 版本都不同:

Expand
表 30.1. 环境示例
服务器名称KJAR 版本主机

kie-server1

kjar:1.0 (alias=kjar, group-id=com.example, artifact-id=sample-kjar, version=1.0)

129.0.1.1, 129.0.1.2, 129.0.1.3

kie-server2

kjar:2.0 (alias=kjar, group-id=com.example, artifact-id=sample-kjar, version=2.0)

129.0.2.1, 129.0.2.2, 129.0.2.3

kie-server3

kjar:3.0 (alias=kjar, group-id=com.example, artifact-id=sample-kjar, version=3.0)

129.0.3.1, 129.0.3.2, 129.0.3.3

如果您发送请求,请求将发送到 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,每个版本将共享相同的别名。

由于智能路由器是可执行的 jar,因此若要包含扩展,您需要修改该命令。例如:

java -cp LOCATION/router-ext-7.11.0.redhat-00005.jar:rhpam-7.11.0-smart-router.jar org.kie.server.router.KieServerRouter
Copy to Clipboard Toggle word wrap

启动该服务后,您将看到指示用于组件的实现的日志输出:

Mar 01, 2017 1:47:10 PM org.kie.server.router.KieServerRouter <init>
INFO: KIE Server router repository implementation is InMemoryConfigRepository
Mar 01, 2017 1:47:10 PM org.kie.server.router.proxy.KieServerProxyClient <init>
INFO: Using 'LatestVersionContainerResolver' container resolver and restriction policy 'ByPassUserNotAllowedRestrictionPolicy'
Mar 01, 2017 1:47:10 PM org.xnio.Xnio <clinit>
INFO: XNIO version 3.3.6.Final
Mar 01, 2017 1:47:10 PM org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.3.6.Final
Mar 01, 2017 1:47:11 PM org.kie.server.router.KieServerRouter start
INFO: KieServerRouter started on localhost:9000 at Wed Mar 01 13:47:11 CET 2017
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat