2.3JMS技术
JMS(JavaMessageService)是访问企业消息系统的标准API,它便于与消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。JMS是用于和面向消息的中间件相互通信的应用程序接口。它既支持点对点(point-to-point)的域,又支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对您的应用与旧的后台系统相集成。JMS支持两种消息通信模型:点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。PTP模型规定了一个消息只能有一个接收者;Pub/Sub模型允许一个消息可以有多个接收者[3]。JMS有两个重要方面值得说明:1.它支持消息的持久传递。当消息发送到Destination时,如果Consumer没有运行或者不可用,那么这个消息将被保存起来,直至下次Consumer连接到Destination为止;2.它的耐压力性能也很强,大批量消息的突发它也能应付自如。
3.无线增值业务平台总体设计
本无线增值业务平台采用多层的体系架构,使用模块化的思想,实现了提取业务共性的组件设计,它采用J2EE技术构架,应用业务逻辑全部用Java编写,具有高性能的抗压能力、灵活的可扩展性以及高度的可移植性。考虑到Weblogic服务器在可伸缩性和可靠性的优势,负载均衡、故障转移、连接池等多方面的高性能及方便性,本系统采用Weblogic服务器作为部署服务器。平台分割为4层结构,接入层、平台层、支撑层和数据层。其逻辑设计框图如图1所示。
-2-
http://www.paper.edu.cn
图1
逻辑设计框图
1.接入层接入层主要负责通过CMPP[4]、SGIP[5]、CNGP[6]等协议(以短信协议为例)实现与运营商网关的通信功能,完成增值业务接入(短信、彩信、WAP等)、协议转换、消息封装、队列缓存、日志记录等功能。接入层由增值业务接入网关、队列缓存、日志记录三部分组成。增值业务接入网关由多个独立的业务网关组成,分别处理不同增值业务的接入工作,它主要由Java多线程技术编写,将消息进行协议转换、消息封装之后传给JMS的消息队列进行缓存。2.平台层平台层主要通过运用支撑层的组件,实现面向CP或者平台管理者的服务。主要包括路由控制、平台管理、以及面向第三方的业务接口三部分。路由控制使用了MDB技术,主要用来负责业务的路由分发,监听队列中的消息,匹配路由表中的路由信息,负责通过平台的第三方接口把从运营商接收到的短信消息路由给接入平台的各个CP或者通过接入层网关把从CP得到的下发给用户的消息内容发送给不同的运营商。平台
管理系统主要用来管理和维护平台,保证平台的数据更新和顺利运行。它通过支撑层组件的运用,主要实现了业务管理、CP管理、日志管理、用户管理、系统管理、公共服务、统计分析功能。例如,业务管理管理业务的上线、删除、修改等操作;CP管理负责CP的接入工作;日志管理用来处理系统各种收发日志与系统日志;统计分析负责统计分析业务的运营情况和明细帐单的生成;公共服务主要用来对用户进行鉴权、对CP下发的消息进行资费的匹配管理及对下发的内容进行关键词过滤,防止非法用户的接入或者合法用户下发非法内容。平台管理系统设计采用MVC模式,系统的所有的管理都是通过网页来操作。M在系统中主要通过EJB实现,V通过JSP技术实现,C通过Servlet和SessionBean技术实现。其系统比较庞大,这里不在详述。第三方的业务接口主要通过WebService与Servlet技术实现,负责完成第三方CP业务的接入与通信。3.支撑层支撑层主要为平台层服务的实现提供组件支撑。平台层主要封装了以下业务组件,公共服务组件、系统管理组件、用户管理组件、业务管理组件、CP管理组件、日志管理组件、
-3-
http://www.paper.edu.cn
统计分析组件、客户服务组件等。支撑层组件主要通过SessionBean+EntityBean的EJB技术实现。4.数据层数据层主要负责数据的持久性存储与管理,即数据库的存储和操作。存储管理内容主要包括增值业务相关的业务数据、消息收发日志、系统维护日志、CP管理信息、统计信息等。
4.系统特点与性能分析
4.1承压能力分析
通过系统结构的设计,当网关收到运营商的消息时,则立刻封包(一个实现了Serializable接口的对象),传给JMS队列,不做任何其他处理,这样消息处理的压力集中到了Weblogic的JMS的队列,而JMS队列具有很强的耐压力性能,使系统具有了很大的承压能力。通过已商用的短信业务的测试,网关可以承受1条/20-30ms短信的高压。
4.2扩展性分析
由于系统采用了多层的架构方式,利用组件化设计,非常容易进行业务的扩展或者平台功能的扩展。例如,如果需要进行新类型增值业务的接入,只要新开发一个增值业务网关(例如彩信网关),加入接入层即可;如果需要新加入一个平台的功能,在支撑层新开发一个处理的组件模块即可;如果需要新的业务接入平台,则需要做的只是通过管理的用户界面添加这个业务到平台,并添加该业务的路由信息,就可以顺利运行了。无论是业务的扩展,或是功能的扩展,需要做的只是新业务或者新功能的开发,不会影响系统原有的框架,最多只是修改一下路由的配置,非常方便和实用。