Loong基础平台介绍
一、引言
OSGI?(Open?Service?Gateway?Initiative)联盟成立于1999?年,是一个非盈利的国际组织,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标准,是开放业务网关的发起者。
OSGI联盟的初始目标是构建一个连接在广域网和局域网上的设备开展业务的基础平台,对OSGi的最早设计也是针对嵌入式应用的,诸如机顶盒、服务网关、手机、汽车等都是其应用的主要环境。
由于OSGi的诸多优秀特性(可动态改变系统行为、热插拔的插件体系结构、高可复用性和高效性等等),它被应用于许多PC?上的应用开发,并逐步为开发者所熟知和钟爱。现在人们对OSGi的理解已经远远超出它字面和初衷所涵盖的范围,称其为一个轻巧的、松耦合的、面向服务的应用程序开发框架更为确切一些。
二、OSGi技术概述
OSGi?服务平台标准的核心是提供一个通用、安全并且可管理的?Java?框架,称之为OSGi框架(OSGi?Framework)。该框架为应用程序(称之为?bundle,即OSGi框架的构件)提供了一个标准环境。
OSGi?框架可以下载和安装?bundle,并且可以在不需要的时候将其移除,在一个?OSGi?环境中,bundle?的安装、更新由框架统一动态管理,为此,需要框架对服务和?bundle?之间的依赖细节进行管理。?
OSGi框架体系结构:

图?1?OSGi框架体系结构
框架从功能上分为下面几个层次:?
?执行环境层?Execution?Environment?Layer?模块层?Module?Layer??生命周期层?Life?Cycle?Layer??服务层?Services?Layer??安全层?Security?Layer?执行环境,即Java运行环境。OSGi基于基础框架和运行OSGi?bundles所需的最小需求定义了标准的运行环境。
模块层定义了一个模块化的Java模型,它针对Java部署模式的一些缺点进行了改进,对bundles之间共享包或者隐藏包有严格规定,模块层独立于生命周期层和服务层,使用时可以不需要生命周期层和服务层支持。
生命周期层为bundles提供了生命周期管理的API,也为其提供了运行时模型。该层定义了一个bundle如何启动、停止、安装、更新、卸载等,另外,生命周期层也提供全面的事件API,允许管理bundle去控制和操作服务平台。生命周期层需要模块层的支持。
服务层为Java?bundle开发者提供了一个灵活、简单并且一致的编程模型,简化服务bundle的开发和部署,并通过解耦服务规范(Java接口)和实现的方式来实现。这个模型允许bundle开发者使用接口规范来绑定服务。这样就可以在运行时根据具体情况选择接口的不同的实现。
在框架中,bundle可以在运行时通过框架服务注册中心选择一个可用的实现,bundle可以注册新服务、接受关于服务状态的通知或者查找适合当前设备的服务等。框架可以支持动态安装新的bundle,支持对一个已经部署后的bundle进行更改、更新而不需要重新启动系统。
安全层基于Java2的安全机制,但是增加了一些限制,并且弥补了Java标准的一些不足,它定义了一种安全的打包格式同时支持与Java2安全层的互操作。安全层渗透到OSGi框架的所有层次。
三、Loong基础平台简介
在国家“核高基”重大专项“国产中间件参考实现及平台”课题中,提出了“微内核+构件”的平台架构,微内核集成框架作为平台架构的底层运行支撑平台,支持通信服务、公共服务、构件容器和业务引擎等以构件的方式部署在集成框架上,同时构建一个一体化的管理框架来对集成到集成框架上的构件进行统一的管理。最终通过对构件进行有机集成,形成网络应用服务支撑运行平台。
由中创软件研发的微内核集成框架参考实现和一体化管理框架参考实现,合称为Loong基础平台。Loong基础平台基于OSGi框架,并提供了一系列扩展能力,以支撑网络应用服务支撑运行平台中通信服务、公共服务、构件容器、业务引擎等模块的集成需求。
Loong基础平台符合OSGi规范,并符合课题组制定的“微内核集成框架规范”和“一体化管理框架规范”。下面简单介绍Loong基础平台的两个组成部分。
(一)、微内核集成框架
针对网络应用服务支撑运行平台中通信服务、公共服务、构件容器、业务引擎等模块的集成需求,研究开发了一个构件化的基于OSGi的微内核集成框架,该微内核框架基于符合OSGi标准规范的内核,提供一系列核心扩展能力和基本支撑能力。其中,扩展支持能力包括:部署框架、日志框架、命令框架、方面框架、配置管理、健康检查器、安全框架等;基本支撑能力包括仓库管理、部署器服务、微内核集成框架命令、声明式OSGi服务容器、声明式MBean容器、事件管理、依赖管理等,从而降低不同类型和不同应用层次的模块集成的复杂度。
微内核集成框架的体系结构如图2所示,框架包括两个组成部分:核心扩展能力部分和基本支撑能力部分。

图?2微内核集成框架体系结构
微内核集成框架包括如下子框架及特性:
部署框架:部署框架是针对Loong平台可能面对的不断扩展的构件部署需求,在符合OSGi标准规范的内核之上开发的一个用于构件部署的框架,通过?OSGi服务的方式支持对不同构件的部署器服务进行扩展。部署框架提供了热部署、命令部署、管理工具部署等部署领域的核心能力,并提供一组逻辑相关的?Bundle或构件整体部署的能力。支持对JavaEE构件和自定义构件进行部署、卸载、启动、停止、重部署等操作。
日志框架:遵循OSGi的日志规范,在符合OSGi标准规范的内核之上开发一个日志框架,为运行平台提供一种通用的日志读写方式。
命令框架:为支持用户通过命令的方式与系统交互、支持各模块提供自定义的命令,命令框架提供了命令扩展机制,定义了命令扩展接口,开发者可以根据模块的需求开发命令。
方面框架:针对微内核框架以及各集成模块在开发过程中面对的功能复用和功能扩展问题,从面向服务的角度出发,以构件化的理念实现一个方面框架,通过方面管理器解决通用的管理和控制逻辑,并提供方面处理器开发的接口,使开发者可以很容易的在对功能关注点分离的基础上进行开发、定制和复用。
配置管理:部署在微内核集成框架中的模块在启动和运行时需要进行属性参数的设置以保证运行期的动态性。每个模块都会面对配置数据的创建、销毁、变更、持久化、性能、同步等问题,配置管理服务提供了统一的接口和相应的机制来处理这些问题,提供了设置配置数据、跟踪配置数据的能力。
健康检查器:为监测网络应用服务支撑运行平台中的各个模块和运行环境的健康状态,并支持根据策略进行报警和处理的需求,健康检查器定义了健康检查探针接口,并实现策略服务。健康检查探针接口负责采集数据,用户可以通过实现此接口将需要被监测的模块纳入到健康检查器的检测范畴。策略服务负责解析并执行策略,用户可以通过对策略的修改改变当系统发生异常时报警和异常处理的逻辑。
安全框架:建立在Java安全模型之上,对Java的安全模型进行了扩充,对代码执行权限提供了功能强大的许可管理服务和条件许可管理服务。
仓库管理:为了解决构件在部署过程中对其它构件的依赖以及构件的更新管理问题,微内核集成框架提供了仓库管理能力,被管理的仓库包括了本地仓库和远程仓库。仓库管理具备解析Bundle的能力,能够查找并部署所依赖的Bundle。
部署器服务:依据部署框架定义的部署器扩展接口规范,实现针对特定组件开发的部署器,并通过服务方式将部署器注册到符合OSGi标准的内核之中。
微内核集成框架命令:提供的一组微内核集成框架命令,通过命令的方式对微内核框架以及部署在框架上的模块进行管理,充分利用微内核提供的交互能力,供用户使用这些命令与微内核框架进行交互。
声明式OSGi服务容器:提供了通过声明式的方式为POJO构件引入、发布OSGi服务、接收配置管理、管理生命周期的能力。
声明式MBean容器:提供了通过声明式的方式注册、发布MBean的能力,开发者通过在元数据文件中定义POJO构件的MBean方面,实现其管理能力的暴露,管理者通过一体化管理框架调用MBean代理进行管理。
事件管理:OSGI框架在运行过程中会产生多种类型的事件,需要建立一套有效的发布、过滤和处理这些事件的通用机制,事件管理服务提供了一个基于主题的发布-订阅机制,方便各集成模块对事件进行处理。事件管理服务引入了黑名单,将处理时间超长的处理者放入黑名单,同时采用并行处理同步事件和串行处理异步事件机制来提高事件管理服务的处理能力。
依赖管理:针对Bundle和服务因依赖不满足导致系统无法正常运行甚至崩溃的问题,微内核集成框架提供了依赖管理服务,用于对Bundle之间的依赖和服务之间的依赖进行分析和管理。
(二)、一体化管理框架
网络应用服务支撑运行平台提供了众多的公共服务和扩展服务,支持多种异构技术体系的构件容器,带来了高度复杂的可管理性问题。为了对网络应用服务支撑运行平台进行有效的监测与管理,为用户提供方便易用的管理界面,研发了基于OSGi的一体化管理框架,提供基础管理设施,设计管理互操作接口,制定一体化管理技术规范,简化配置、部署、监控、优化等管理任务。
一体化管理框架的体系结构如图3所示,框架包括三个组成部分:界面集成框架、管理工具接入框架、管理代理接入框架。

图?3一体化管理框架体系结构
体系结构图中的主要部分简述如下:
界面集成框架:为管理工具提供了界面集成模型和界面扩展接口,定义了管理工具用户界面的整体风格。
管理工具接入框架:定义了管理工具的组成内容、部署形态、配置规格和扩展接口。
管理代理接入框架:为管理代理开发者提供了一个灵活、简单并一致的编程模型,简化了管理代理的开发和部署,允许管理代理开发者以声明式的方式将管理接口暴露为内部接口和远程接口。以使管理工具可以在运行时根据具体情况选择管理接口的不同实现。
四、结束语
Loong基础平台的参考实现紧跟当今计算机软件技术潮流,并针对中国中间件特点进行创新。在“国产中间件参考实现及平台”中,基于Loong基础平台,我们成功集成了和构建了网络应用服务支撑运行平台的三个主流运行平台:JEE运行平台、WEB服务运行平台和CORBA运行平台。