如果我想在分布式环境中(跨集群中的 2 台机器)设置 Websphere MQ,是否会在两台机器上创建队列和主题(我理解为消息的物理存储空间)?
或者队列和主题是否仅在一台机器上创建,但程序(我猜它称为 websphere MQ 代理)将部署在两台机器上,并且两个实例都将访问相同的队列和主题。
如果我想在分布式环境中(跨集群中的 2 台机器)设置 Websphere MQ,是否会在两台机器上创建队列和主题(我理解为消息的物理存储空间)?
或者队列和主题是否仅在一台机器上创建,但程序(我猜它称为 websphere MQ 代理)将部署在两台机器上,并且两个实例都将访问相同的队列和主题。
WebSphere MQ 中的集群概念不同于传统的高可用性 (HA) 集群。在传统的 HA 集群中,两个系统访问相同的存储/数据以提供 HA 功能。两个系统都可以配置为随时处于活动状态并处理请求。您还可以拥有主动/被动类型的 HA 配置。
与传统的 HA 集群不同,WebSphere MQ 集群有所不同。两个队列管理器不共享相同的存储/数据。每个队列管理器都是唯一的。WebSphere MQ 集群比 HA 更适合工作负载平衡。您可以在一个 MQ 集群中的多个队列管理器中拥有一个同名队列,并且当放置消息时,MQ 集群会将它们负载平衡到该集群中的所有队列。需要注意的是,集群中每个队列实例中的消息都是独立的,不共享。如果由于某种原因集群中的一个队列管理器出现故障,则该队列管理器中的消息将变得不可用,直到队列管理器恢复。
您的目标是工作负载平衡还是 HA?如果您的目标是实现 HA,那么您可以查看 MQ 的多实例队列管理器功能或任何其他 HA 解决方案。如果您的目标是工作负载平衡,那么您可以选择 MQ 集群。您还可以混合使用多实例队列管理器和 MQ 集群来实现 HA 和工作负载平衡。
不,如果您不这样做(手动),MQ 不会在集群中创建重复队列。
此外,检查您的队列管理器是集群的部分存储库还是完整存储库。
部分存储库将仅包含有关其自身对象的信息,而完整存储库将包含有关集群中所有队列管理器对象的信息。
一个集群中至少需要一个完整的存储库,其他部分存储库可以使用这个完整存储库来访问其他队列管理器的对象。
但是,完整存储库中的对象信息只是一个列表。实际物理对象将仅存在于创建它的队列管理器中。