内容


任务:消息传递

如果您的队列管理器可以说话,将向您讲述些什么?

系列内容:

此内容是该系列 # 部分中的第 # 部分: 任务:消息传递

敬请期待该系列的后续内容。

此内容是该系列的一部分:任务:消息传递

敬请期待该系列的后续内容。

在每期专栏中,“任务:消息传递”将讨论精心设计的主题,以鼓励您重新考虑您对 IBM® WebSphere® MQ 的看法、其在环境中的角色以及为何应该定期对其予以关注。

“您好,我是中间件,有人在吗?”

如果您的队列管理器可以说话,它将对您说什么?您听到它的声音,您能认出来么?在太多的情况下,队列管理器寻求帮助,但却没有应答。

我最开始是作为 WebSphere MQ 专家加入 IBM 的。由于具有丰富的 MQ 经验,我很适合专门处理 WebSphere 品牌产品的咨询团队。不过,我很快发现,公司希望我所加入的团队 IBM Software Services for WebSphere 中的人员处理最具风险的工作,即处理 WebSphere 产品的相关问题,而我所具有的深厚的专家技能有时候更多地被视为约束,而不是优势。

WebSphere MQ 被视为一项成熟的技术,拿我经理的话说,我是“只会一招的漂亮马驹”,因此我开始进行自己的计划,承担尽可能多的 WebSphere MQ 的任务,并同时进行其他 WebSphere 产品的培训。我记得,自己曾经怀疑,在完成培训前,是否会有足够的 MQ 工作让我忙。

现在已经过去 18 个月了,我仍然是一名 WebSphere MQ 专家。当然,我肯定也学习了一些其他 WebSphere 产品,但并没有承担这些方面的任何任务。因此,如果我仍然主要关注于 WebSphere MQ,则问题变成了:我怎么仍然没有被辞退?

尽管 WebSphere MQ 是成熟的产品——或许因为这个关系,并不缺乏相关的工作。我去年承担的任务包括:

  • 一个包含 50 多个重叠集群的消息传递网络,其中经常出现停机。
  • 通过从队列下有意删除基础文件来“修复”长期 QUEUE_FULL 条件的情况。
  • 启用事件后数分钟事件队列即被填满的情况。
  • 在多个组织中存在只基于文件备份队列管理器的情况——备份都是在队列管理器运行时进行。
  • MQ 管理团队 20 世纪 90 年代接受过培训,从那之后再没有参加过培训班或相关会议。
  • 多个消息传递网络,这些网络发展都非常迅速,但其支持团队简单或经过了削减。
  • 包含数百队列管理器但没有任何相关工具的环境。

这些情况都可主要归结为:疏忽。由于经理、管理员、开发人员和很多企业中的其他领域的人员对 WebSphere MQ 如此熟悉(实际上并不可见),因此会趋向于利用各种资源管理和维护较新的不太熟悉的系统。

在上面的示例中,所有集群相互重叠的公司的消息传递网络是经过多年逐渐发展起来的。当这个网络还比较小时,该体系结构工作正常,但他们一直在计划如何进行扩展,或在出现问题时对其进行重新设计。

同样的问题也经常出现在管理工具和支持人员配备模型中。当消息传递网络较小时,通过三个人组成的团队(提供全天候支持的最低需求)或使用免费的基于桌面的工具就可以满足需求。但这些方法并不能很好地进行扩展来满足数百队列管理器的需求。这种情况下您会希望为团队增加点人手、安装企业级监视工具并可能过渡到集中管理工具。

所有这些任务的另一个共同之处是,都不是灾难性的故障,不过却都是多年来逐渐积累起来的。不过,这并不是说停机是不可预测的或者没有警告;这些情况只是基础设施或支持方面投资不满足需求而造成的,这种短缺的情况一再积累最终就会达到临界量。

不过,在每种情况下,投资所带来的损失都远远超过进行预防所进行的投资。更糟糕的是,存在即将发生的问题的信号,但现场几乎没有人认识到这些问题,而认识到问题的人又缺乏进行相应处理所需的资源。

“你好,中间件。我是管理员。今天需要我帮什么忙?”

一方面,这是好消息,因为这意味着工作安全性。在过去一年中,我完全忘记了要避免失业和进行其他产品的培训这回事。事实上,我遇到了完全相反的问题:我真的希望接受其他一些 WebSphere 产品的培训,但有太多的 MQ 工作需要完成,根本没有时间。

另一方面,整体趋势是,MQ 团队每天都在因为可检测和可预防的事情而停机。因此,我想在这里同时对这两个方面进行讨论。

本文将回顾之前的一篇专栏文章,鼓励您重新审视自己关于 IBM WebSphere MQ 的看法(并再次唤起您的关注),而且还可能(只是可能)让您从队列管理器的角度看待问题。此外,如果 MQ 管理员和经理能够更好地认识问题征兆,并及时地成功予以干涉,则我将能够腾出点时间来接受新产品的培训——或者,至少回到担心失业的状态。

正确的工具:桌面工具与企业工具

我在出现问题的情况中见到的最常见的问题之一是,管理员缺乏完成自己工作所需的工具。为了成为“MQ 代言人”,管理员需要对整个网络的可见性,而且需要了解每个队列管理器及其主机的详细信息。企业级的工具提供了这些功能,而且还提供了将有用信息和无关背景分离的筛选方法。

在消息传递网络较小时,通常基于桌面的免费用户工具就足以满足此用途了。各种新功能,如 WebSphere MQ Health Check Plug-In (SupportPac MH01),对 WebSphere MQ Explorer 进行了扩展,提供了真正的监视功能。诸如 WebSphere MQ Explorer 和 SupportPac MO71 之类的桌面工具几乎肯定是企业中首先使用的 MQ 管理和监视工具。

不过,这些工具经常也是企业中作为最后一招使用的 MQ 管理和监视工具,因为随着网络的规模超过了桌面工具的容量,过渡到企业级工具的想法经常会在匆匆忙忙中消失。这样的结果是,尽管工作多得要命,经常会出现生产停机,但有些团队从来没有得到所需的工具。

我所说的“企业级”工具指的是什么?我所需要的具体功能包括整个网络内实时的视图、安全性、可说明性、配置管理和可扩展性。尽管当前的企业工具使用集中轮辐模型,但这并不是强制性的要求。当然可以将这些功能构建到桌面工具中。请记住,我将要讨论的是集中轮辐模型提供了足够的优势,可以将其视为企业工具的一个要求。

我还将在本讨论中同时讨论管理和监视工具,因为至少对管理员而言,这两项功能有很多重复的地方。

桌面工具有什么问题?

问得好。桌面工具没有什么问题——只要使用有限数量的队列管理器,而且主要关心的是队列和消息。但如果您在具有桌面工具的大型环境中,则可能会遇到下面的一些问题:

  • 范围:当队列管理器的数量超过了十个,桌面工具就会应付不过来。为了提供整个网络的仪表板视图,工具需要维护多个开放连接,并对队列管理器进行持续轮询。这些工具并未设计为通过扩展来处理目前常见的不断增大的网络。出现在桌面工具内单击一下会让工作站锁定 10-20 秒的情况后,工作效率就会降低,而这无疑是在浪费金钱。

  • 视角:桌面工具要求运行用户会话,因此需要用户对此加以关注。相反,集中化的工具设计为独立于任何用户会话运行,因此关注的是整个网络,而且始终在运行。

  • 可伸缩性:假定您的桌面工具具有扩展为处理数百队列管理器的能力,而且不会对工作站性能造成影响,这是不是一个好的模型?队列管理器各自都需要一个源自每个管理员的开放连接,而且将不断轮询每个连接,以获取队列管理器状态。为了对此模型进行扩展,以用于大型管理团队、大量队列管理器或大量队列和通道,需要对每个队列管理器增加大量的负载。以此类推到极点,最终将没有用于进行业务事务的空间。

  • 可说明性:我所参加的众多项目中,有几个项目都是队列管理器配置在设定之后很快就改变了,而没有人知道谁对此进行了更改以及为什么更改。对于将 WebSphere MQ 用于任务关键型应用程序的任何公司,特别是存在法律法规遵从性需求的行业,这可能都是无法接受的。对于大型团队和大量队列管理器的情况,在没有日志或日志分布在很多工作站时,可能追溯到具体的不良事件。通过集中工具和经过整合的日志,您可以获得有意义的可说明性。

  • 安全性:管理员需要对其工具具有完全访问权限。集中工具终止安全数据中心中特定主机上的管理访问路径,这随后将利用中介传递通过轻量级客户机(如浏览器)进行的访问。桌面工具需要获得管理访问权限来在非安全环境中动态地分配工作站。

  • 操作事件:桌面客户机使用的事件消息对其他桌面客户机不可见。我曾经尝试过多种方法,其中最好的是将事件作为 pub/sub 消息分发。虽然这个方法有自己的优点,但仍然需要对事件进行解析,因此无法恢复用户脱机时生成的事件。集中工具使用事件消息,而表示层根据需要将其显示给很多用户。

  • 配置管理:桌面工具提供了一些配置管理功能,但并未紧密集成到 WebSphere MQ 中。另一方面,当前的企业工具集可以安排自动更改,在队列管理器间移动配置,包括模板功能,而且能够回滚到之前的时间点。

  • 管理:要使用桌面工具保护对 WebSphere MQ 的交互访问,需要对桌面的公钥基础设施进行管理,而且还要在所有队列管理器上维护访问控制列表(setmqaut 命令)。中央工具在单一位置存储整个网络的用户标识和访问控制信息,并提供用于进行全面管理的界面。这样可以减少出现的错误和管理开销,从而抵销了中央工具成本中的很大一个部分。

随着网络和人员队伍的扩大,工具在功能和体系结构方面的这些差异将逐步积累起来。除了集中点外,桌面工具的限制还直接导致了停机的发生,最终影响了财务收益。

防范远胜于救灾

在任何故障排除工作的最后,我都无一例外地被问到这个问题:我们可以采取哪些措施来进行预防?

对于工具,答案是,从网络规模相对较小时就开始着手,将工具的成本捆绑到每个队列管理器的开销中。配备了集中组件后,以增量方式添加新队列管理器的成本就很少了。这样可以防止在网络较大时迁移到集中工具时出现“大吃一惊”的情况。但如果您的网络已经很大了,而您又需要相应的工具,请记住这只会变得更糟。在消息传递网络继续增长的时候,最好现在咬紧牙关处理问题,而不是推迟实现。

虽然似乎很明显,但我还是要指出,在工具可用后,应该准确地了解网络的情况。在本文开始部分,我列出了自己曾参与过的若干任务。存在集群问题的帐户在监视一些 MQ 进程,但其中并不包括 amqrrmfa,此进程是位于每个队列管理器本地的集群存储库进程。在另一帐户上,在我认为它们可能会进行对象定义备份时,我们发现一个队列文件被删除了。最近,我在处理一个帐户时,启用了事件,以便确定队列管理器上是否出现了任何 WebSphere Message Broker 问题。事件队列立即就被填满了,事件消息量如此之大,以至于无法找出仅与我们尝试诊断的问题相关的事件。

在其中的每个案例中,都有可用于检测对应问题的监视和管理工具,但并没有得到使用。

倾听——但还要学习!

除了缺乏工具外,缺乏相关培训也是导致这些问题的一个重要因素。IBM 每年都会举行一次深入讨论 WebSphere MQ 的会议:在美国,此会议称为 IMPACT,而在全球范围内,它以 Transaction and Messaging Conference 的名字为人们所熟知。另外还提供正式的有教师指导的课程,并提供大量基于 Web 的及其他方式的自定步调的培训选项。

对于正式培训,不要将管理员仅限于管理课程。应用程序开发培训可帮助管理员全面了解情况,并帮助他们了解项目团队的业务需求,从而据此优化 MQ 配置。有些管理员可能会告诉您不要派开发人员参加管理课程,因为这样会让他们变得“危险”。我的观点是,如果开发人员了解 WebSphere MQ 实际如何工作,则能够开发更为可靠且可扩展的系统。

我几乎参加了所有这些年度会议,回顾起来,我每年都看到了大量的熟面孔。在我看来(完全没有科学依据),我没有参与过来参加这些会议的人所属的公司的合作项目。参加会议显然肯定比长时间停机要便宜得多。

很多会议都包括深入的技术内容,而这些东西在其他地方是没有办法得到的。此外,关于新产品、功能或版本的信息经常列入培训课程之前就在各个会议上公布了,而这就让参加会议成为了更有价值的体验。访问 IMPACT 网页,以获取更多信息。今年的全球性 Transaction and Messaging Conferences 尚未公布,但我将在公布之后在本专栏中提供其链接。另外,有关课堂培训、远程培训和自定步调培训的信息,请访问 WebSphere Education 页。

最后,提到继续教育,我不得不提一下 Web 上两个最好的用户社区。我最喜欢的是基于电子邮件的讨论组 MQSeries List。另一个是在线论坛 MQSeries.net。这二者都可以为从简单问题到更为深入的主题的所有方面(如体系结构和高级配置)提供出色的支持。这两个社区相当活跃,对新人很友好,而且也很自由。

以后的主题

以后任务:消息传递专栏文章将在 IBM WebSphere 开发者技术期刊中每隔一期推出,我将在其中讨论关于安全性的内容,这将继续成为全盘性的挑战,而且也是我将在 IMPACT 发表的演讲的主题,还会以其他方式被关注。

下一期任务:消息传递专栏将在 3 月发布,即举行 IMPACT 2008 的前一周。我希望能在那里见到你。如果您首次参加此次大会,可以来和我打个招呼。然后,我将把您的公司从潜在问题客户列表中划掉,然后腾出空来参加一门或两门课程的学习。


相关主题

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=308049
ArticleTitle=任务:消息传递: 如果您的队列管理器可以说话,将向您讲述些什么?
publish-date=05142008