Jython技术在网管支撑系统中的应用研究

2013-06-26 06:26沈骜王磊王西点徐晶
电信工程技术与标准化 2013年5期
关键词:网管规则数据库

沈骜,王磊,王西点,徐晶

(中国移动集团设计院有限公司,北京 100080)

1 引言

网管支撑系统作为移动运营商的IT支撑平台组成部分之一,在运营商日常网络运营,管理和质量保障中发挥着重要作用。

在日常工作中,网络管理和优化人员使用网管支撑系统对网络中数据进行各类管理,比如分析、统计、监控和优化等。由于每天产生的数据量巨大,故需要系统具备良好的性能,定期收集和统计海量数据,对数据结果做出准确分析,以便网管网优人员能够及时发现并解决网络中出现的问题。通过对问题的处理,实现网络运营的可靠保障。

而目前对系统进行大量数据分析时,底层技术广泛采用的语言是Java。和Java相比,Jython不但继承了Java的优势,同时在效率,性能等方面还具备更多优势。非常适合目前大型网管支撑系统中对数据分析的要求。

2 Jython简介

Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器。Jython是基于Python语言的,先引入Python语言。

2.1 Python

Python作为一种功能强大且通用的编程语言而广受好评,它具有非常清晰的语法特点,适用于多种操作系统,目前在国际上非常流行,正在得到越来越多的应用。

Python强大的功能主要表现在:

编程语言:Python语言可以用来作为批处理语言、函数语言、过程语言、面向对象语言。

数据库:可以和多种数据库进行连接,进行数据处理,从商业型的数据库到开放源码的数据库都提供支持。例如:Oracle,Ms SQL Server等等。

Windows编程:Python不仅可以在UNIX类型的操作系统上应用,同样可以在Windows系统里有很好的表现。

多媒体:利用PIL、Piddle、ReportLab等模块,可以处理图像、声音、视频、动画等。动态图表的生成、统计分析图表都可以通过Python来完成。

网络编程:Python可以非常方便地完成网络编程的工作,提供了众多的解决方案和模块,可以非常方便的定制出自己的服务器软件,无论是c/s,还是b/s模式,都有很好的解决方法

图形用户界面:Python可以非常方便地实现GUI编程,通过Tkinter,wxPython,QT等等模块,可以根据需要编写出强大的跨平台的用户界面程序。

2.2 Jython与Python的区别

Jython是Python语言在Java中的完全实现,故Jython有很多从Python中继承的模块库。Jython不像Python或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。

Python与Jython的区别见表1。另外,Jython还有如下特点:

Python解释器shell的Jython版本可以对某些想法和API作便利的实验和研究。而不必经历一般的Java编译运行周期。

Python被设计成动态且通用的,不必通过使用复杂的库(如用于Java反射和内省的库)来添加这些特性。这使开发更简单,而且它在自动测试框架中特别有用。

部署简捷,提供了及时部署能力,无需花大量时间在打包和编译周期上。

易于学习和使用,技术门槛低,可以轻松地找到大量的使用者。

2.3 Jython与Java的比较

Jython由于继承了Java和Python二者的特性,Jython性能显得很优秀。和Java相比,Jython也具有很多优势,包括: 对Java类的无缝存取;效率更高;使用动态类型;对象内省和动态执行;使用第一类函数和函数编程;具备Java安全性;代码清新性。

3 Jython的应用研究

网管支撑系统按功能类别分为运维管理,业务开通,网络监控和质量保障。对应的系统有:综合资管、专业网管、综合监控,网优平台等。

各个系统均存储了大量的数据。系统从底层的数据库中将数据提取出来后,管理人员每天对数据做分析处理,及时发现网络中存在的问题,最终以报告或者表格等方式将数据核查结果通知相关人员处理。

3.1 网管支撑系统层级需求分析

大型的网管支撑系统从不同的应用层面大致可以分为:

(1)UI 层。该层比较稳定,或者说它的变化对于整个系统的运行不会带来特别严重的影响。

(2)接口层。该层与上层的UI以及底层的实现,都有着紧密的联系,会牵一发而动全身。作为一位大型应用系统的架构师或是系统设计人员,往往会出于维护成本以及开发成本的考虑,尽可能会让这个层面的设计与定义相对灵活。

表1 Jython与Python的区别

(3)业务层。该层是网管支撑系统最核心的层面,整个系统的核心处理逻辑都会放在这一层面上。而往往该层,在实际使用过程中也是最不稳定的,最容易从需求角度发生变化。

(4)数据层。该层就是数据库层,用于用户数据的查询、组装、更新等等,提供持久的数据服务,可以认为它也是个比较稳定的层面。

从上分析可知,问题焦点也就是应用业务层,如何让业务层更加灵活成为核心问题所在。需要注意,引入Jython进行应用的前提是:接口层和数据层已经提供了完整的接口和数据供应用业务层调用。在一般的网管支撑系统中,在进行上层应用前,接口已经基本定义完毕,可以直接调用;数据层的数据已经存储在数据库中,可随时存取。同时,在相应的系统服务器安装时,已经将Python所需的各种包和库文件导入到了系统中。以下应用和测试均基于此前提。

3.2 Jython引入业务层

一般来说,系统的应用业务层会干这些事情。第一步:接收通过接口传递过来的用户数据;第二步:依据一定的业务逻辑,处理用户数据;第三步:将处理结果更新到数据库中(可选);最后,将处理结果响应给 UI层并渲染出来。

由上可知,如何提高数据处理效率,将接口获取的数据尽快分析,并将结果显示出来是我们需要关注的重点问题。

Jython在效率,性能等方面的优势,使得它在处理数据时更高效,更方便。故将Jython应用于大型系统的数据分析,能够更好的响应系统任务,提高数据管理效率,提升用户感知度。下面以网优平台为例。

网优平台一般包含数据采集导入,数据管理和数据应用。

最底层数据采集层,将数据从现网中进行采集,生成接口文件,数据解析导入到系统中后,进行数据管理。最上层的应用业务层利用获取的数据,利用Jython实现各类规则的统计分析,比如基本的查询与核查,缺少的网元或参数核查,或者涉及到各类参数的比较,并将结果在报告中输出。

3.3 开发环境搭建与配置

3.3.1 JRE环境检查

在CMD窗口中输入:Java –version。检查当前系统的JRE版本,要求JRE版本为1.5.0以上。

3.3.2 Jython安装

运行安装程序中的Jython_installer-2.5.0.jar安装Jython2.5.0。除了路径配置外全部使用默认配置,路径可以为合适的路径(无特殊要求),并记录下该路径。

3.3.3 Eclipse配置

执行安装程序中的eclipse/eclipse.exe。共分为如下几个步骤:

(1)Workspace配置。配置Eclipse的工作空间路径,后续您可以在这里找到脚本文件。

(2)配置Jython解释器。选择菜单Window->Preferences。选择左侧的Pydev.Interpreter-Jython,选择右侧按钮New…,在弹出的窗口中选择刚才安装Jython路径下的jython.jar文件,并且为解释器设置一个名称。

点击OK后会弹出窗口,使用默认设置,点击OK。完成后回到如下界面,选择右侧的按钮New Jar/Zip(s)。在弹出的窗口中选择安装程序的eclipse/neptune目录下的所有Jar文件,连续点击OK直到上面的窗口关闭。

(3)配置PyDev工程。选择File->New->Other…,选择新建Pydev Project,点击next。如图1所示。

配置工程名称可以输入一个,配置工程类型为Jython,配置解释器语法版本为2.5,配置解释器为上一步配置的解释器。选择Finish完成工程创建。如图2所示。

3.3.4 配置服务器信息

在工程的src目录下新建login.properties文件,内容如图3(安装程序中附有样例文件),配置登录到的服务器、用户名、密码。

如果脚本文件放置在某个子目录中,则需要在该子目录中也配置login.properties文件,各个子目录的login.proerties可以配置为不同的内容。

图1 配置PyDev工程

图2 选择工程类型

3.4 应用与性能比较

首先利用IDE进行开发。针对网优平台中数据,用户需求非常多,简单的如网元参数的查询核查;参数修改记录查询等。复杂的有如同频同BSIC查询;2G、3G互操作核查等。特别的,各省用户会根据实际情况进行用户自定义规则,部分规则涉及多个网元参数的交互。目前大部分的系统相关规则使用Java实现。随着需求日益增多,志如果用Java来实现,代码会比较复杂,可读性和维护性不高。故使用Jython是个很好的选择。

3.4.1 规则编写与测试

规则编写时可以直接引入Java的类库,本段以一个简单的 Jython 方法为例,介绍如何借助 Jython 实现检查某厂家小区中的BCC参数与其下载频中的TSC参数值不相符的情况。

Jython的优势在此处得到充分体现。首先,代码非常清晰易读,即使非专业的人员,看代码也比较容易;gcells和bcc等变量不需要提前声明,因为类型是在运行时决定的。减少了代码的行数,降低了复杂性,提高了程序的效率。

其次,反射使Jython能无缝地使用任何Java类,通过引入context包(包含Java类,对数据库操作的接口封装),可以直接使用包中的接口getEntityByVendor,不需要额外的工作。

图3 服务器信息配置

规则编好之后,可以在规则中添加一些网元和参数,进行测试,测试结果在控制台直接显示。规则文件后缀名是.py。

将规则导入网优平台中进行测试,结果如图4。

图4 规则结果显示

表2 Jython与Java的比较

3.4.2 与使用Java性能测试比较

同等情况下的规则用Java代码实现,可对两方性能进行比较,从多方面考虑,具体如表2。

4 结束语

本文引入了Jython技术;以网优平台为例,对在引入Jython前后对网优平台业务层性能和效率上改变进行了分析研究。

Jython除了在业务层可以提高网管支撑系统性能外,在接口层和数据层中,也可以使用该技术,能够对系统各方面性能带来较大提升。

猜你喜欢
网管规则数据库
撑竿跳规则的制定
数独的规则和演变
给水网管的优化布置研究
让规则不规则
数据库
TPP反腐败规则对我国的启示
数据库
数据库
数据库
“五制配套”加强网管