0

我一直在阅读有关 GemFire 分布式数据存储/管理/缓存系统如何执行通知的信息。在阅读这篇文章时,我有这个问题。

Gemfire 似乎在使用 MBean 在事件期间创建通知。使用 MBean 创建通知而不是实现基于侦听器的方法有何不同/合适?(不仅在 GemFire 中,而且在一般情况下)

注意:我对 MBean 主题非常陌生。只是理解它的主要目的是公开要管理的资源。

4

1 回答 1

1

语境

... MBean 的主题... 它的主要目的是公开要管理的资源。

那是对的。(GemFire) 可以使用 JMX 查询和更改作为 MBean 公开的资源,具体取决于 MBean 为资源公开的内容(例如 Region、DiskStore、Gateway、AEQ 等)。

然后,使用 JMX API 的应用程序和工具可以使用 GemFire 的 JMX 接口。GemFire 的 Gfsh(命令行外壳和管理工具)以及 Pulse(Web 监控工具)都是 JMX 客户端的示例,也是您可以使用 JMX 编写的应用程序类型。

您还可以使用 jconsole 或 jvisualvm 等标准 JDK 工具连接到 GemFire 管理器(集群中的管理节点,该节点联合集群中所有成员的视图,以及从管理器控制任何单个成员的能力)。有关更多详细信息,请参阅管理用户指南中的GemFire部分。

GemFire 回调相比,对等/客户端缓​​存应用程序可以使用回调(例如 CacheListener)来注册对某些类型事件的兴趣,例如区域条目创建/更新等。其他回调(例如CacheLoaders)可以用于读取缓存未命中的外部数据源(例如 RDBMS)。同样,CacheWriter可用于在缓存(区域)创建/更新时“直写”到外部数据源,或者可能与AEQ / AsyncEventListener异步执行对外部数据源的“后写”。

还有许多其他回调和可以使用这些回调的方式,但几乎所有回调都以编程方式在 GemFire 客户端/对等缓存应用程序中用于“接收”某种类型的通知。

有关更多详细信息,请参阅有关事件和事件处理的 GemFire 用户指南。

回答

现在,当涉及到“发送”通知时,GemFire 会代表您的应用程序进行大量分发。JMX 主要用于发送有关管理更改的通知......添加了一个 Region,更改了驱逐策略,部署了一个 Function,等等。相比之下,GemFire 在数据更改时向集群中感兴趣的其他成员发送分发事件事件。“感兴趣的”成员通常包括集群中托管相同区域并具有相同键/值的其他节点,这些节点需要更新,并且在某些情况下是原子的(在 TX 中)以保持一致性。

现在,如果您想从应用程序发送通知,那么您最好使用 Spring 和 Spring Data GemFire 来配置和访问 GemFire。Spring 为应用程序消息传递提供了卓越的支持

当然,还可以使用其他选项,包括JMS,Spring 提供了集成支持

总而言之,发送的事件/通知和使用的分发机制高度依赖于事件/通知类型。同样,通知的方式(JMX 通知与 GemFire 回调)也取决于消息的类型和目的。

对不起,冗长的解释;它是加载/广泛的问题和复杂的主题,可能会因用例而有很大差异。

希望这有所帮助 ;-)

于 2015-03-18T18:00:50.660 回答