数据总线提供了各种功能,了解这些功能有助于您更高效地使用数据总线。

订户

订阅者是在数据总线中注册以接收来自消息组的数据的端点。不能有多个订阅者具有相同的消息组和相同的订阅者 URL。

订阅者 URL

从数据总线接收数据的 URL。 VMware Aria Operations for Networks 数据总线将来自任何消息组的所有消息发送到订阅者 URL。此外,还可以使用订阅者 URL 注册来自多个消息组的订阅。
注: 数据总线从您订阅任何消息组的那一刻起开始流式传输,并将一直持续到您取消订阅。系统通过内置机制处理任何暂时的通信中断,问题一旦解决,数据流式传输即恢复。您无需执行任何操作。

消息排序

当事件或对象存储在 VMware Aria Operations for Networks 中时,通过数据总线发送的消息通常按时间戳排序。但是,在某些情况下,无法满足这些排序保证。为了对消息进行可靠排序,订阅者必须利用数据总线消息中的时间戳字段,并根据时间戳对消息进行排序。

近乎实时的流式传输

在数据总线中,数据在 VMware Aria Operations for Networks 中进行处理与数据总线将数据流式传出之间具有一定的延迟。延迟时间从三秒到一分钟不等。此延迟因消息组而异,并取决于管道是否畅通。

用于扩展数据处理的负载均衡器

VMware Aria Operations for Networks 数据总线接收数据时,可以使用负载均衡器横向扩展数据处理服务。要使用负载均衡器,必须在数据总线注册过程中将负载均衡器 URL 用作订阅者 URL。负载均衡器可以将数据分配给可横向扩展的数据处理服务。

检测信号

为了帮助对 VMware Aria Operations for Networks 数据总线与订阅者端点之间的通信通道进行故障排除,VMware Aria Operations for Networks 会每小时向每个订阅者发送检测信号消息。如果在多个订阅中指定了 URL,则订阅者将每个订阅收到一条检测信号消息。

示例:

{
  "id": "c2214eea-68a6-4e5a-9e4b-ff5886a42cd3",
  "type": "HEARTBEAT",
  "specversion": "1.0",
  "source": "CL58EgdESzVDSEE1",
  "message_group": "vms",
  "status": "HEARTBEAT",
  "timestamp": 1681897371522
}

消息批处理

VMware Aria Operations for Networks 数据总线本身就支持批处理,即多条消息分组在一起,形成一批,并发送给订阅者。默认情况下,一批的最大大小为 2 兆字节。当一条消息的大小超过 2 兆字节时,将修剪这条消息。
注: 批量创建操作会额外带来不到一分钟的延迟。

修剪后的消息示例:

[
{
"id": "elfcdccb-c06a-419b-90bd-7618e8453f87",
"type": "Application",
"specversion": "1.0",
"source": "CNaBARIHRElXRlgxRg==",
"message_group": "applications",
"status": "UPDATE_TRIMMED",
"data": {
"entity_id": "16598:561:716945762559381432", "entity_type": "Application",
"name": "My-3Tier-App"
}
]

传送保证

如果订阅者返回非 503 错误代码的 HTTP 代码响应,则认为消息传送成功。

如果订阅者未收到消息,但 VMware Aria Operations for Networks 未收到 503 错误代码,则 VMware Aria Operations for Networks 认为该消息已传送,不会尝试再次发送该消息,该消息可能会丢失。我们引入这种机制是为了确保连续重试不会使系统不堪重负。例如,如果您的生产环境出现故障,连续重试将会带来干扰。在这种情况下,发送非 503 的 HTTP 响应表明您不想重试。

VMware Aria Operations for Networks 中,消息源自不同的服务,然后添加到基于磁盘的队列中。基于磁盘的队列的有效期为两小时。

如果任何消息未在两小时内传送给订阅者,这些消息将按 FIFO 方式从队列中删除,并且不会传送给订阅者。此外,如果 VMware Aria Operations for Networks 中的消息量超出系统可以可靠转发的数量,则消息可能会被丢弃。当数据总线订阅者无法访问时,系统会尝试发送消息,直至成功。版本 6.9 增加了一种回退机制,系统以指数时间重试消息传送。

筛选

注册订阅者时,该订阅者将获取此消息组的所有消息。VMware Aria Operations for Networks 数据总线不支持筛选消息。如果您不需要消息组中的所有消息,可以根据筛选条件丢弃消息,然后再进一步处理。此外,还可以从 VMware Aria Operations for Networks UI 停用警示。

将消息与其他对象关联

在某些情况下,数据总线收到的消息包含有关一些其他相关实体的上下文信息,而不包含这些实体的完整详细信息。但是,消息包含特定的标识符,如 entity_id。要获取有关这些相关实体的详细信息,必须使用 API 订阅这些实体。例如,订阅主机消息组有助于关联从问题消息组收到的事件的主机。