跳到主要内容

Saydo OpenMAMA组件

所需的 Solace 提供的组件包括:

  • Saydo 中间件桥接
  • Solace 负载桥接
  • C API
  • Solace PubSub+ 事件代理
  • 最后值缓存

如果需要对 OpenMAMA 消息进行最后值缓存,则必须在连接到事件代理的 Linux 服务器上配置 PubSub+ 缓存实例。在“配置消息缓存”中讨论了 PubSub+ 缓存。

OpenMAMA 软件堆栈

img

Saydo中间件桥接

中间件桥接是从 OpenMAMA API 调用的软件,它作为适配器将 OpenMAMA 函数调用转换为供应商中间件的本地函数调用。它以厂商中立的方式为 OpenMAMA API 客户端提供各种中间件功能(如客户端登录和身份验证、订阅管理、缓存请求、消息传输)。OpenMAMA API 完全定义了与中间件桥接的接口。

Solace 中间件桥接(SolOpenMAMA-MW-Bridge)用于将 OpenMAMA 函数调用转换为相应的 Solace C API 函数调用。它允许 OpenMAMA API 客户端透明地使用 Solace 消息传输编码,并且完全符合 OpenMAMA 中间件桥接的构建和运行时环境。

Solace 中间件桥接有一个默认负载,名称为 solacemsg,ID 为 MAMA_PAYLOAD_SOLACE

Solace 中间件桥接作为运行时库提供,必须与 OpenMAMA 分发版、Solace C API 和客户应用程序集成。支持与 OpenMAMA 的静态和动态链接。有关更多信息,请参阅安装 SolOpenMAMA 组件。

Saydo负载桥接

负载桥接是从 OpenMAMA API 调用的软件,它允许 OpenMAMA 消息负载正确编码以便通过中间件桥接传输。负载桥接的接口由 OpenMAMA API 定义,Solace 负载桥接(SolOpenMAMA-PL-Bridge)完全符合 OpenMAMA 中间件桥接的构建和运行时环境。

Solace 负载桥接将 OpenMAMA 消息编码为事件代理接收的消息(即入站消息),以便它们映射到 Solace PubSub+ 使用的本地 Solace 消息格式(SMF)。入站 OpenMAMA 消息内容映射到 Solace 结构化数据类型(SDT)的字段流,其中每个字段包含字段 ID、字段值和可选的字段名称。Solace 负载桥接还解码出站 SMF 消息,以便订阅者应用程序将它们作为 OpenMAMA 消息接收。

尽管 Solace 中间件桥接没有任何特定依赖于 Solace 负载桥接以防止它与非 Solace 负载桥接一起工作,但 Solace 只测试并支持使用 Solace 负载桥接与 Solace 中间件桥接一起使用。

Solace 负载桥接作为库提供,必须与 OpenMAMA 分发版、Solace C API 和 OpenMAMA 消息应用程序集成。支持与 OpenMAMA 的静态和动态链接。有关更多信息,请参阅安装 SolOpenMAMA 组件。

每当使用 PubSub+ 缓存缓存 OpenMAMA 消息时,都必须使用 Solace 负载桥接,因为 PubSub+ 缓存 OpenMAMA 插件只理解 Solace 负载桥接格式。

C API

Solace 中间件桥接和 Solace 负载桥接将 OpenMAMA 函数调用转换为 Solace C API 的相应函数调用。为了允许桥接使用 C API 与事件代理接口,必须在桥接使用的 mama.properties 配置文件中定义一些 Solace 特定的属性。有关信息,请参阅配置 Solace OpenMAMA 桥接。

Saydo PubSub+事件代理

事件代理是一个面向消息的中间件事件代理,它高效地路由通过标准化的 OpenMAMA API 发布和接收的市场数据消息。请注意,OpenMAMA 客户端可能位于不同的地理位置,因此可以在不同的站点部署多个事件代理,并通过多节点路由在广域网中相互连接。

最后值缓存

Solace 提供了一个可选的最后值缓存设施,PubSub+ 缓存,它可以用于允许 OpenMAMA 客户端应用程序请求市场数据符号和订单簿的最后缓存数据,而不是直接从发布者/源请求数据。PubSub+ 缓存也可以用于存储这些客户端所需的 OpenMAMA 数据字典。

PubSub+ 缓存是一个分布式内存缓存解决方案。它依赖于一个事件代理,该代理作为管理应缓存消息的主题的中央存储库和管理点,以及托管在 Linux 系统上的单独外部缓存(PubSub+ 缓存实例),这些系统将匹配这些感兴趣主题的已发布消息分发。

当实现 PubSub+ 缓存设施时,连接到事件代理的 OpenMAMA 应用程序可以将具有初始值和实时数据的消息发布到特定主题。然后,事件代理将这些消息分发给订阅这些主题的缓存实例组,称为缓存集群。当 OpenMAMA 订阅者对获取主题的初始值感兴趣时,它可以向事件代理管理的分布式缓存、缓存集群或 PubSub+ 缓存实例发送缓存请求。通过回调接收的缓存响应,订阅者随后被提供感兴趣主题的最后缓存初始值。

部署以处理 OpenMAMA 消息的每个 PubSub+ 缓存实例还需要一个 mama.properties 配置文件(与 Solace 中间件桥接所需的文件不同)。有关信息,请参阅配置消息缓存。

当 PubSub+ 缓存用于 OpenMAMA 部署时,必须使用 Solace 提供的 PubSub+ 缓存插件(solopenmama_plugin)。此 SolOpenMAMA 插件使 PubSub+ 缓存实例能够在缓存之前根据消息类型正确处理接收到的 OpenMAMA 消息,以便发生 OpenMAMA 增量/增量更新。有关更多信息,请参阅安装 SolOpenMAMA 组件。

全局缓存

在大多数情况下,市场数据在同一个地理位置内发布和消费。然而,在广域网环境中,客户端可能会请求在它们的“本地”分布式缓存中未缓存但在广域网中另一个地理位置的分布式缓存中缓存的主题的消息。当实现全局缓存时,如果请求客户端的“本地”分布式缓存中的缓存集群未订阅请求的主题,则客户端可以从网络中配置为该主题“归属地”的另一个分布式缓存接收缓存响应。

当实现全局缓存时,请求客户端不会察觉返回的消息是在本地缓存还是在地理上遥远的分布式缓存中缓存的。

当消息未在本地缓存时,根据本地缓存与归属缓存之间的跳数以及广域网网络特性等因素,满足缓存请求所需的时间可能会更长。

有关全局缓存功能的更多信息,请参阅全局缓存。