WebSphere很庞大,但依然可以灵活,就看你怎么做
一提到IBM WebSphere,相信绝大多数经历过的人都会感觉很庞大,就像航空母舰一般,功能很全,同时也会感觉很笨重、很难用。其实,任何事情都不是绝对的,WebSphere是很庞大,但依然可以灵活,就看你怎么做。这篇文章是最近写的,但内容却是一年半前做的事情,没关系,不影响主题。这篇文章过后,也许你也会多少改变对WebSphere的看法。
WebSphere Message Broker是IBM的应用整合中间件,是IBM WebSphere业务整合解决方案的重要组成部分之一,是IBM构建企业服务总线(ESB)平台中功能最多,支持消息格式、协议最多的一款产品,就让我们从Message Broker开始吧。
基于IBM WebSphere Message Broker平台,利用其提供的基本功能组件,可以实现企业服务总线(ESB)。我们可以将服务挂到ESB上,供其他组件调用,并且要通过ESB中介协调服务之间的不适应性,包括数据格式、传输协议等。一般的ESB解决方案可以做到这些功能,但是,存在着一些问题。比如:中介过程存在着硬编码、只能通过开发环境修改中介逻辑或消息定义、维护后需要重新部署、对于相似的中介过程要创建多个消息流等问题。这些问题都制约着ESB基础结构的灵活性,直接影响到企业IT架构能否及时响应变化。所以,有必要研究并实现一种解决方案,解决这些问题,使得ESB中介过程的创建及维护更加的规范、迅速、灵活。
在基于WebSphere Message Broker做过几个项目后,逐渐的分析、总结、归纳了一种ESB的解决方案,先称之为“元数据驱动、可配置的ESB解决方案”吧。
这个方案的核心理念是:将中介过程做成统一的“流水线”模板,各处理“单元”通过动态的提取中介逻辑元数据来创建及管理中介过程实例。中介流程处理内容包括数据内容解析、格式验证、转换、传输协议的转换、数据的路由等。每一种中介过程都对应着一套中介逻辑,包括总体配置信息、消息转换配置信息、路由信息等配置文件。
ESB中介过程的消息流不再是某两个具体服务之间的中介,而是多个中介过程统一遵循的一个模板,这个模板会根据各个处理单元对应的不同的元数据进行中介,产生不同的ESB中介过程实例。
摒弃通过Message Broker对消息格式的定制和开发的模式,改用“元数据”的方式承载各种消息格式。ESB中介过程中需要的一些逻辑数据,都是存储在元数据中而非存储在Message Broker的消息流定义或消息集定义中。也就是说,这些中介逻辑数据不是被硬编码到中介过程中、并且不被部署到Message Broker的运行环境中,所以,当修改这些元数据时不存在重新部署的问题,对于ESB来讲,这些元数据的变化是透明的。整个解决方案正是基于这些元数据来进行消息间的动态中介的。
最核心、最简单的描述就是:“动态”、“元数据”。通过Message Broker中的ESQL或者Java计算节点,我们可以解析请求消息的内容,通过消息内容,在运行时动态的提取出中介逻辑,包括消息格式转换信息、路由信息等。通过transformation节点,根据消息格式转换配置信息,利用XSLT进行消息格式的转换。通过route label节点,根据路由配置信息,将消息分发到不同传输协议的端点。而所有的元数据(中介逻辑配置信息文件)都存储在WebSphere Service Registry & Repository (WSRR)中,在Message Broker中,利用endpoint lookup节点访问WSRR获取元数据配置信息。可以支持多种主流的传输协议(Web Service、MQ、JMS等),提供相应的消息输入、输出节点,最终实现N*N的中介方式。可以形象的比喻,中介过程就是一个“做菜过程”的“流水线”,步骤都是“准备原材料”、“添加调味品”、“烹制”、“出锅”等基本过程,根据“菜谱”的不同,做出来的菜肴就会不同。中介模板就是“流水线”,元数据就是“菜谱”。
另外,提供基于Web页面的管理配置方式,而非在开发环境下再编码的方式对ESB中介过程进行改动和维护。主要是对元数据的维护,包括元数据的创建、修改、删除等操作,这样,极大的提高了ESB中介过程创建和维护的灵活性和方便性,使得整个ESB基础结构可以更加灵活的应对变化。
这还不是一个成熟的解决方案,只是用来提出一种构建及管理ESB的理念。“动态”、“运行时”、“元数据”、“可配置”,这些关键词都是构建灵活的企业应用不可或缺的。SOA的核心思想在于“服务”。“服务”们独立、可组装、可服用,构建应用就像“搭积木”,这些都是正确的思想,没有问题。但我们不应忽略了SOA另外的承诺,“IT基础能灵活、迅速的适应业务应用的变化”,这才是最有价值的地方,如果应用的改变导致IT层面的“在开发平台中改code”、“宕机”、“重新部署”等现象的发生,那很抱歉,SOA没有做的比“前辈”更好,或者说SOA在“忽悠”,应用灵活不是这样定义的。如何在已构建的企业界架构上,以最小的代价灵活的响应业务的变化,是SOA应该大力做的事情。企业级应用档次的高低不仅在于使用了什么样的产品,更在于设计的是什么样的基础架构,一种好的架构风格,可以构造一个良好的应用生态环境,而“动态”、“运行时”、“元数据”、“可配置”正是我们应该持有并遵循的思想和理念。
基于WebSphere家族的N多产品,这么一个大而全的平台,加上一些正确的指导思想和理念,相信IBM在企业级应用领域一定会提供更为先进、优秀的解决方案。WebSphere很庞大,但依然可以灵活,就看你怎么做。