筒仓策略
筒仓策略使用分区实现多个 ArcGIS GeoEvent Server 计算机的工作负载分离。 基于使用事件流加载、事件历史依存关系和事件传递方法的分区策略,每个筒仓的配置中都包含一组定义的受限任务。 在筒仓中,GeoEvent Server计算机不会检测其他计算机,并且每个计算机单独处理其接收的事件。 通常,筒仓策略用于以可靠性或可伸缩性为主要关注点的情况。 此外,筒仓策略本身不意味着负载均衡策略。 有关详细信息,请参阅下方的事件路由策略。
筒仓复制:主动 - 被动
在主动 - 被动筒仓架构中,具有两台或多台配置相同的计算机。 如果一台计算机被标识为主动,则其他被动计算机将断电或以某种方式隔离。 如果主动计算机出现故障,则可以选择将被动计算机激活,使其成为新的主动系统。 管理故障转移机制不属于本文档范畴,但可以通过手动或自动方式完成,这在大多数虚拟环境中很常见。
筒仓复制:主动 - 主动
在主动 - 主动筒仓架构中,具有一组配置相同的计算机,并允许并行运行。 没有一台计算机被标识为主动或被动,且整组计算机同时运行。 由于所有计算机并行运行,因此不需要故障转移策略,但是仍需要对计算机故障进行监控,以确保计算机池按预期运行。
在主动 - 主动环境中,需特别注意的是重复数据。 如果一组 N 计算机的配置相同,则预计每个事件都将并行处理 N 次。 这种额外的负载可能会给相关系统(例如数据库和网络)带来压力。 数据达到目的地后,唯一标识记录的方法可能成为删除重复数据的关键,但这并不能减少系统的整体负载。
事件路由策略
事件路由策略是基于筒仓策略,通过向系统添加额外的平衡器组件(通常为负载均衡器或可路由消息队列)进行构建。 通过在一组配置相同的 GeoEvent Server 计算机之前将负载均衡器并入架构中,可将事件单独路由到具有相同服务的计算机上。 在此方法中,这些计算机作为一个组进行工作,负载均衡器负责将事件发送到单个计算机中。 通常,事件路由策略用于以弹性或可伸缩性为主要目标的情况。 此策略要求将事件数据推入(而不是拉入)站点。
注:
提取事件的 GeoEvent Server 部署不可使用依赖外部负载均衡器或消息队列的前两个事件路由策略。 如果 GeoEvent Server 部署正在提取(轮询)数据,请参阅下方的使用事件分区进行筒仓复制。
负载均衡器
使用负载均衡器可以在一组配置相同且受到主动监控的 GeoEvent Server 计算机之间平衡一组推送事件。 当事件到达时,负载均衡器会将每个事件分配给群集中的不同计算机。 从根本上来说,此站点配置由前端的负载均衡器和位于其后的主动 - 主动配置中的一组筒仓式 GeoEvent Server 计算机组成(每台计算机的配置相同)。
消息队列集群
将 Kafka 集群添加到架构中,可以在一组受到主动监控的 GeoEvent Server 计算机之间平衡一组推送事件,其中每台计算机可能具有不同的配置。 当事件到达时,Kafka 集群会根据事件的唯一标识符将每个事件分配给不同的消息主题。 每个 GeoEvent Server 计算机监控一个或多个消息主题并处理事件。
从根本上来说,此站点配置由前端的 Kafka 集群和位于其后的主动 - 主动配置中的一组筒仓式 GeoEvent Server 计算机组成。 此配置与上述负载均衡器解决方案的不同之处在于,每个事件都可以路由到特定的 GeoEvent Server 配置或计算机。 在处理具有历史依存关系的事件时,此配置更具优势。
使用事件分区的筒仓复制
使用筒仓复制的事件分区是一种用于扩展筒仓架构性能的特殊方法。 当事件是由 GeoEvent Server 提取而不是推送时,此方法尤为有用。
每个筒仓式计算机在处理工作流方面的配置均相同,但每个计算机都被分配了待处理的特定事件子集。 通常,这是通过修改每台计算机的配置来请求或接受已配置的事件数据子集(通常基于事件数据的追踪 ID 或其他全局唯一标识符)来完成的。 这种情况下需要对事件流进行分区,例如,在查询请求中使用 WHERE 子句。