许大卫,吴 舜,孟 德,郑晓琳
(国网冀北电力有限公司信息通信分公司 信息通信运检中心,北京 100053)
SG-APS应用服务器中间件的设计与实现
许大卫,吴 舜,孟 德,郑晓琳
(国网冀北电力有限公司信息通信分公司 信息通信运检中心,北京 100053)
应用服务器中间件在电力信息化系统中占有举足轻重的地位,研发具有自主知识产权的应用服务器是实现电力系统信息安全战略的关键。SG-APS应用服务器中间件项目主要基于开源技术研发中间件软件,构建公司基础软件平台,提升基础软件安全自主可控能力,摆脱厂商依赖。介绍了国家电网公司SG-APS应用服务器的设计与实现,分析了该应用服务器在电力信息系统环境下的应用需求,描述了该应用服务器的系统架构、设计思想和关键技术。目前,SG-APS应用服务器中间件1.0版本的开发工作现已基本完成,并将在国家电网信息化系统中逐步替换国外产品。
中间件;应用服务器;国家电网;SG-APS
随着我国电力行业信息化水平的不断提升,电力信息化系统的应用范围越来越广,复杂程度也越来越高。国家电网公司的大部分信息系统均采用J2EE标准[1],其中应用服务器中间件作为J2EE标准的核心中间件,在电力信息化系统中占有举足轻重的地位[2]。以往国家电网公司通常都是采购国外商用应用服务器中间件产品,如WebLogic等[3]。随着电力信息化建设要求不断提高,这种方式逐渐显现出越来越多的弊端。
首先,电力行业是国民经济中具有举足轻重地位的核心领域,长期依赖国外产品无法保障“自主可控、安全可信”的国家信息安全战略目标。其次,随着应用部署节点的不断增加,采购与升级成本越来越高。第三,商用应用服务器安装与部署时对IT基础条件要求相对较高、补丁升级流程较长、售后服务响应不及时。第四,商用应用服务器虽然均基于J2EE标准,但各自的配置、管理方式千差万别,每个系统都需要独立采购,难以统一管理和维护[4]。
为了确保电力系统的信息安全,防范信息泄露,摆脱对国外厂商的依赖,掌握核心技术,国家电网公司亟需研发适用于国内电力信息化建设需求,拥有自主知识产权的应用服务器中间件[5]。通过应用服务器中间件的研发,提高国家电网信息化运维效率,减少运维投入,降低运维难度,配合应用服务资源池的建设,实现应用按需分配和自主运维。
文中介绍了国家电网公司研发的标准、安全、可控、高可用并具有丰富功能的SG-APS企业级应用服务器,分析了该应用服务器在电力信息系统环境下的需求,描述了该应用服务器的系统架构、设计和关键技术。
国家电网公司SG-APS应用服务器中间件在定位上主要考虑两个因素。
(1)应用服务器中间件在国际上已经形成了标准。国家电网多年来也在这些标准下建设了大量的信息系统。从延续性和兼容性上来说都要求国家电网应用服务器遵循国际标准。
(2)国家电网公司已将云计算作为未来信息化发展的方向。从云平台的角度来看,能够承载服务化的云应用是对应用服务器的根本要求。这就要求应用服务器在国家电网云平台环境下能够按照云平台的要求实现应用支持。此外,应用服务器研发还必须考虑在当前国家电网的云平台环境尚未完全建成的前提下,如何在开发中与云平台的建设保持同步,甚至适当超前于云平台建设的要求。
1.1 功能需求
应用服务器需要把不同业务应用作为构件整合到一个协同工作的环境里,并为应用提供名字、事务、安全、消息、数据访问等服务,包括:
(1)标准和规范。包括Java EE 5的相关13种技术规范[6]、主流的Web服务标准和互操作标准。
(2)容器和组件。包括Web容器、EJB容器、RMI服务容器、Web服务容器、JCA服务、数据库连接池、事务控制组件、缓存组件、高级消息传输、Rest服务[7-14]等,并支持各种成熟开发框架。
(3)集群和动态扩展。实现集群部署的动态管理,支持动态加载新业务;提供跨多种平台服务器的集群部署配置以及故障切换功能,从而快速适应企业现有软硬件环境并可确保关键应用和服务高效可用。
(4)管理配置。具备标准的B/S模式管理控制台,可对远程的应用服务器环境进行应用部署、管理维护和监控;支持对系统运行状态、Web应用、数据库连接池、事务服务、JMS服务及其他服务端组件与服务进行动态监控与管理;提供应用移植工具,实现应用程序包从其他应用服务器到本应用服务器环境的移植。
1.2 非功能需求
(1)安全。提供基于容器的安全策略,限制对应用的访问,保障企业数据的安全,防止恶意攻击。通过使用应用服务器提供的监控管理工具对服务的运行情况进行实时跟踪监控,并提供方便的日志管理功能以便用户进行审计。支持JAAS协议,支持用户采用第三方的安全策略集成企业级应用,以增强应用安全性。
(2)可靠性。应用服务器应对应用提供自我恢复的能力管控,即知道在应用是否有问题,以及支撑的Java容器是否出现故障时,对出现问题的应用进程、组件提供分析、恢复、重启的能力。如出现死锁或者其他原因崩溃的操作系统虚拟机(节点),应用服务器可以根据不同的定制策略,选择性重新启动恢复。
(3)性能。性能指标为:URL访问应答时间<5 ms,瞬间最大并发访问请求>2 000,大于1k文件JSP文件编译时间>10 ms,大于1k文件class文件加载时间>10 ms,URI路径解析时间<0.1 ms,同时需要:
·满足系统7×24小时业务无间断,稳定可靠运行。
·日常平均CPU占用率<40%,忙时<75%,内存占用率<50%,最大并发时<75%。
·系统应满足易理解、易分析、易配置、易修改、易测试的要求。
·系统从用户体验维度出发,满足页面布局合理,通用操作规范,出错处理、反馈与提示人性化等要求。
·具备开发架构和动态扩展能力。
此外,应用服务器还要综合考虑数据库、操作系统、硬件环境、安全防护和节点冗余等问题。
2.1 系统架构
应用服务器中间件要实现Java EE 5规范规定的各种标准组件和标准服务,包括Web容器、EJB容器、RMI服务容器、Web服务平台、JCA服务、数据库连接池、事物控制组件等,并支持各种成熟开发框架,如图1所示。SG-APS应用服务器中间件主要实现了以下核心组件和服务。
1)安全。
基于Java EE标准的安全服务[15],是动态可扩展的安全体系结构,包括基于JMAC的验证和基于JACC(Java Authorization Contract for Containers,Java容器授权合同)的授权,使得服务器能够接入第三方认证、授权模块。
消息安全性使服务器可以在消息层执行Web服务调用和响应的端对端验证。消息安全性提供者提供了请求和响应消息所需的验证类型等信息。支持的验证类型包括发件人验证(用户名和密码验证)和内容验证(XML数字签名)。
2)事务。
事务按照JTA1.0.1B规范实现,并且支持如下功能:
(1)本地事务优化。对于使用同一个资源管理器的操作,事务管理器使用本地事务机制,本地事务只存在于一个事务过程中,采用一阶段提交;只有涉及到多个资源管理器的操作才使用全局事务,全局事务可参与多个事务过程。
(2)事务恢复功能。在服务器启动时从故障中恢复并完成被搁置的事务。
(3)事务超时控制。自动回滚超时的事务。
图1 系统架构
3)日志。
基于Java Logging API(JSR-047)实现日志管理。
4)Web容器。
Web容器提供了Web应用的运行时环境,包括生命周期管理、安全、请求转发等。同时Web容器为Web应用提供访问其他API的能力,如命名服务。
5)EJB容器。
EJB容器实现了EJB3.0的规范,提供了EJB运行的环境。它负责EJB Bean实例的生命周期管理,Bean实例状态管理,并发(线程)管理,事务服务,安全服务,命名服务,资源(数据源等)管理,使得EJB客户端程序能进行远程调用或本地调用。EJB容器支持EJB3.0规范和JPA,提供定时服务、依赖注入、拦截器、基于EJB的Web Service等功能。
6)Web Service容器。
Web服务定义了应用程序如何在Web上实现互操作性,它使用XML(可扩展标记语言)表示数据的基本格式,使用DTD(Document Type Definition)或XSD(XML Schema)定义数据类型及扩展这套数据类型,通过XML文件(如Web服务定义语言:WSDL)描述Web服务应用程序及其函数、参数和返回值,并通过基于XML的协议(如简单对象访问协议:SOAP)向客户机提供标准的RPC方法来调用该Web服务应用程序。
7)资源管理器。
资源管理器负责管理SG-APS应用服务器中间件的各种资源,主要包括:
(1)JDBC数据源。主要实体为JDBC资源和JDBC连接池。JDBC资源为应用程序提供了连接数据库的方法。要创建JDBC资源,需要指定与其关联的连接池。多个JDBC资源可以指定一个连接池。JDBC连接池维护特定数据库的一组可重复使用的连接。应用程序请求连接时可以从池中获取一个连接。应用程序关闭连接时,连接将返回到池中。
(2)JMS消息服务资源。有四个组成部分:JMS服务提供者、消息管理对象、消息的生产者、消费者和消息本身。
(3)JavaMail资源。通过调用JavaMail API实现从Java应用程序访问网络或Internet上支持Internet消息访问协议(Internet Message Access Protocol,IMAP)和简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)的邮件服务器。它本身不提供邮件服务器功能,必须有权访问邮件服务器,才能使用JavaMail。
(4)Connector连接器资源。通过JCA(Java Connector Architecture)提供了一个应用服务器和企业信息系统(EIS)连接的标准Java解决方案,以及把这些系统整合起来的方法。JCA简化了异构系统的集成,用户只要构造一个基于JCA规范的连接器应用,并将该连接器应用部署到J2EE服务器上,这样不用编写任何代码就可以实现EIS与J2EE应用服务器的集成。
2.2 系统设计与实现
为缩短开发周期,降低开发风险,SG-APS应用服务器中间件参考了开源应用服务器软件JBoss Application Server。
JBoss Application Server[16]是开源社区著名的应用服务器项目,遵循LGPL 2.1许可协议。JBoss Application Server(现已更名为WildFly)以其架构清晰、高效、稳定、易用等优势,先后为众多大型应用系统所采用。
SG-APS应用服务器中间件沿用了JBoss Application Server的核心容器和核心服务,重点对其中的服务器参数配置和服务器运行监控两个客户端工具进行了汉化、消缺、界面美化和易用性改造,新增了集群日志、自动运维工具接口和安装工具三个组件。
(1)服务器参数配置客户端。
服务器参数配置客户端的核心类主要有3个,其中Constants接口以字符串常量的形式定义了请求方法(Request Methods)、协议(Protocols)、标题头(Headers)、类型(Content Types)、字符集(Charsets)、状态码(Status Codes)。
ConsoleMode是一个枚举类,用于定义展现不同的管理控制台的操作模式,如CONSOLE(展示正常的控制台);SLAVE_HC(如果企图访问控制台,提示错误主机是从属的);ADMIN_ONLY(试图访问控制台,显示服务器/主机处于管理模式错误);NO_CONSOLE(试图访问控制台,显示404错误码),同时生成对应的资源页面文件句柄。
资源句柄类ResourceHandler实现了ManagementHttpHandler接口。它通过调用ModuleIdentifier()方法获得Modules(是指JBoos7.1的所有功能模块)的名称和ID,提供给界面进行展示和管理。
用户管理员登录进入服务器参数配置界面如图2所示。
图2 服务器参数配置界面
(2)服务器运行监控客户端。
服务器运行监控客户端运行过程中同样通过前述DomainApiHandler接口读取Constants、ConsoleMode属性获得域管理模式、操作模式和请求参数并构造监控页面,核心方法主要有:
getOperation(String realOperation)//获取操作模式
processRequest(final HttpExchange http)//处理封装自http客户端的操作请求
start(HttpServer httpServer,SecurityRealm securityRealm)//启动指定服务器的域服务
stop(HttpServer httpServer)//停止指定服务器
服务器运行监控界面如图3所示。
图3 服务器运行监控界面
(3)集群日志。
集群日志模块是SG-APS应用服务器中间件新增的模块,实现了对运行于云平台之上的SG-APS应用服务器中间件集群的日志进行统一管理,并由独立运行的日志服务器进行日志收集和分析的功能。集群日志模块由客户端和服务端组成,它们和应用服务器集群之间的关系如图4所示。
图4 集群日志
日志服务客户端与SG-APS应用服务器主服务运行于同一进程空间,通过预设的日志发送策略向日志服务器发送日志,主要方法包括:
客户端:
getConfig(String tag)//获取给定标识下的配置,包括日志文件路径、读取策略等
readLogFile(File logFile)//读取配置文件
send(Url url, File file)//发送指定日志文件到指定服务器地址
服务端:
saveLog(File logFile)//保存接收到的日志文件
getConfig(String tag)//获取给定标识的配置,如日志文件存放路径、处理策略等
(4)自动运维接口。
以接口的形式提供获取SG-APS中JVM和内核服务信息的方法,JVM信息包括:堆内存、非堆内存、垃圾收集、线程、类加载等信息;内核服务信息包括Web线程池、EJB线程、事务处理情况、http请求应答情况等信息。核心方法包括:
getJVMInfo()//获取Java虚拟机信息
getHeapSpace()//获取堆内存空间大小
getJVMGCInfo()//获取垃圾回收信息
getJVMThreadInfo()//获取Java虚拟机当前线程信息
getDeployInfo()//获取部署包信息
getEJBThreadPoolInfo()//获取EJB线程池信息
getSourceConnectPoolInfo()//获取数据库连接池信息
(5)安装工具。
安装工具用于在Windows系统下安装SG-APS,界面如图5所示。
图5 安装工具
2.3 关键技术
(1)HTTP请求分发处理。
HTTP请求分发处理流程如图6所示。
图6 HTTP请求处理流程
(2)JSP编译。
JSP文件首先被JSP引擎(JSP Engine)转换成为一个Servlet。如果在转换过程中发现JSP文件有语法错误则过程中断,并向客户端发出出错信息;如果转换成功,生成的Servlet代码被编译为class文件并随即被JSP引擎加载到内存中。如果JSP文件被修改了,应用服务器将自动地对文件重新转换并编译,并用新产生的class字节码取代内存中的Servlet。
(3)线程池。
线程池是一种多线程处理形式。应用服务器维护一组可重复使用的线程。在任务处理过程中,应用服务器首先将任务添加到队列,然后在线程池中选择一个线程启动任务。如果线程池中所有线程都未结束,新进任务将被挂起以等待其他任务结束。
(4)对象序列化。
对象序列化反序列化是将对象实例的状态存储到存储媒体的过程。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。
中国已将信息安全上升为国家战略。为确保作为国民经济要害部门的电力信息系统的“自主可控、安全可信”,在充分了解和掌握国际标准并参考开源应用服务器软件的基础上,国家电网公司开发了适用于电力信息化的企业级应用服务器SG-APS。SG-APS应用服务器中间件共包括一级模块11个,二级模块50个,三级模块1 400余个,涵盖了服务容器、J2EE核心组件、线程池、数据库连接池、集群管理、安全管理、日志管理、事务服务、监视服务、快照服务和部署服务等核心服务。
SG-APS应用服务器中间件1.0版本的开发工作现已基本完成,正在进行紧密测试,后期将在国家电网信息化系统中逐步替换国外产品。文中介绍了国家电网应用服务器的设计与开发,应用推广效果及后续改进还有待进一步的研究和探讨。
[1] 刘振亚,张启平.国家电网发展模式研究[J].中国电机工程学报,2013,33(7):1-10.
[2] 孙丕石,曹占峰,王亚玲,等.国家电网公司数据交换平台研发与应用[J].电网技术,2008,32(22):62-67.
[3] 韩小涛,尹项根,张 哲,等.嵌入式Web服务器技术及其在电力系统中的应用综述[J].电网技术,2003,27(5):58-62.
[4] 赵子岩,张大伟.国家电网公司“十二五”电力通信业务需求分析[J].电力系统通信,2011,32(5):56-60.
[5] 2015年信息化建设实施意见[EB/OL].2015.http://www.sgcc.com.cn/kjcx/xxhgzdt/322390.shtml.
[6] Kassem N.J2EE权威指南[M].北京:中国电力出版社,2002.
[7] Implementing enterprise web services[EB/OL].2013.https: //jcp.org/en/jsr/detail?id=109.
[8] Enterprise JavaBeansTM 3.0[EB/OL].2007.https://jcp.org/en/jsr/detail?id=220.
[9] Web services metadata for the JavaTM platform[EB/OL].2013.https://jcp.org/en/jsr/detail?id=181.
[10] XML parsing specification[EB/OL].2000.https://jcp.org/en/jsr/detail?id=5.
[11] JDBCTM 3.0 specification[EB/OL].2002.https://jcp.org/en/jsr/detail?id=54.
[12] JavaTM Message Service (JMS) API[EB/OL].2003.https://jcp.org/en/jsr/detail?id=914.
[13] JavaMailTM specification[EB/OL].2000.https://jcp.org/en/jsr/detail?id=904.
[14] J2EETM connector architecture[EB/OL].2001.https://jcp.org/en/jsr/detail?id=16.
[15] Steel C,Nagappan R.Core security patterns:best practices and strategies for J2EE,web services,and identity management[M].[s.l.]:Pearson Education,2006.
Design and Implementation of SG-APS Application Server Middleware
XU Da-wei,WU Shun,MENG De,ZHENG Xiao-lin
(Information and Communication Center,State Grid Jibei Information & Telecommunication Company,Beijing 100053,China)
Application server middleware possesses an extremely important position in electric power information systems.Developing application server with independent intellectual property is essential to the information security strategy of the electric power systems.The project of SG-APS application server middleware mainly bases on open source technology research and development middleware software,and builds the company’s basic software platform to enhance the ability to independently control the basic software security capabilities,getting rid of manufacturers rely on.It introduces the SG-APS application server middleware developed by State Grid Corporation,and analyzes its application requirements under the environment of the electric power information systems,and describes its architecture,design,implementation and key technologies.At present,the development of the 1.0 version of SG-APS application server middleware has been basically completed,and it will gradually replace foreign products in the national grid information system.
middleware;application server;State Grid;SG-APS
2015-11-06
2016-03-04
时间:2016-09-19
中央高校基本科研业务费(JB150407);数据(灾备)中心-中间件软件-一期项目(7199001402MO)
许大卫(1984-),男,工程师,从事信息技术及管理的工作。
http://www.cnki.net/kcms/detail/61.1450.TP.20160919.0839.002.html
TP39
A
1673-629X(2016)10-0127-06
10.3969/j.issn.1673-629X.2016.10.028