30.4. 配置智能路由器行为


在有多个 KIE Servers 的集群环境中,默认行为是并行向每个 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)

Smart Router 有三个组件,您可以修改以更改此行为:

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.12.0.redhat-00008.jar:rhpam-7.12.0-smart-router.jar org.kie.server.router.KieServerRouter

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

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
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部