专利名称:一种基于操作分离的网管系统对象管理方法
技术领域:
本发明涉及电信领域中的网管系统对象管理技术领域,具体说是一种基于操作分离的网管系统对象管理方法。
背景技术:
在电信领域中的网管系统中,为了实现对物理设备(即真实的网络设备)的管理和业务数据的配置,需要在网管系统中创建与物理设备对应的逻辑网管对象(即物理设备在网管系统中虚拟的逻辑对象,下面简称为“对象”)。通过这些与物理设备对应的对象实现网管系统对物理设备的管理、监控、业务配置等功能。网管系统中的一个对象对应一个实体的物理设备,对象就是网管系统上对物理设备的抽象,并且每个对象都会用一个全局唯一的ID来进行标识;在网管系统中用对象配置数据来描述物理设备的基本属性信息(比如对象类型、对象地址等),每个物理设备在网管系统中对应的对象配置数据都不一样,并且对象配置数据中的关键数据将决定该对象的功能(比如不同类型的网元具有不同的业务功能)。对于物理设备来说了除了基本属性信息外,更重要的还有业务配置功能和对应的业务数据的配置(业务配置数据),在网管系统中需要通过对与物理设备对应的对象进行操作来完成对物理设备的业务配置功能和业务预配置功能(所谓业务预配置是将业务配置数据已经在网管上生成好了,还没有真正下发给物理设备,可以在批量完成多个设备的业务预配置数据后,最后批量下发给设备)。所以,在网管系统中,对象以及对象配置数据是其他功能的基础,所有对物理设备的操作或对业务数据的配置都需要建立在这些对象的基础之上。在实际的工程应用中,对象配置数据的修改操作不会非常频率,大部分时间是对对象配置数据的访问,并且在进行对象访问(读对象配置数据操作)时,为了有较快的响应速度,对并发性有非常高的要求。尤其在管理容量很大、设备上报数据(如告警数据)比较频繁的情况下,对对象的访问需要支持多线程同时并发,并且需要有比较高的对象查找或比较的效率。在实现物理设备的管理、监控和业务数据的配置时,为了提高对象查找或比较的效率,根据对象的逻辑关系和层次结构,在网管系统中对对象的管理,一般都是采用在内存中作为共享数据以树形结构缓冲对象配置数据,对象的查找或遍历将在内存中完成,从而可以达到比较高的执行效率。然而,内存中共享的对象配置数据在对象配置时需要实时更新,为了保证内存中共享的对象配置数据的线程安全性,需要给内存中共享的对象配置数据的读、写操作进行多线程同步,但进行对象写操作时因为需要将对象配置数据持久化到数据库中(对象配置数据存库),需要消耗比较长的时间,如果对象写操作和对象读操作共享同一份内存中共享的对象配置数据,对象配置数据的修改会大大的降低对象访问的效率。为了实现内存中共享的对象配置数据的线程安全性,可以采用如下的一些方案
41.对象写操作与对象读操作共享同一份内存中的对象配置数据,通过全局互斥锁或全局读写锁来保证内存中的对象配置数据的线程安全性。这种方式可以保证内存中共享的对象配置数据的线程安全性,但存在如下的缺点
1)因为对象的读写操作是互斥的,并发程度不高,执行的效率比较低。因为对象写操作与对象读操作都需要对内存中共享的对象配置数据加锁互斥来保证多线程安全,在操作用户比较多,对象配置修改比较频繁时,尤其是在大数据量或复杂操作中,对象配置数据存库消耗的时间较长,导致锁占用的时间也会比较长,将大大降低了对象访问的效率。2)需要对外暴露全局锁,在函数重用时容易导致递归加锁,如果是使用读写锁,因读写锁中写锁优先的特性,还容易导致死锁或者读锁“饿死”的问题。3)如果是使用全局互斥锁,对象读操作都会互斥,效率将会更低。2.对象写操作与对象读操作共享同一份内存中的对象配置数据,对内存中共享的对象配置数据加细粒度的自定义对象读写锁,即自定义对象操作的锁类型,在对象访问过程中记录操作对象的加锁类型,在对对象进行操作之前先获取到对象操作的权限,这种方式即可以保证内存中共享的对象配置数据的线程安全性,也可以无关对象的对象写操作和对象读操作的高并发性。但也存在如下的问题
1)因为需要应用使用自定义的对象读写锁,而对象加锁的顺序难达成一致,容易形成死锁,所以必须有比较复杂的算法来检测死锁,并且在检测到死锁发生时,至少需要放弃掉一个操作来解除死锁场景。2)应用需要对自定义的锁机制有比较深入的理解,否则很容易导致错误的加锁。3)因为容易构成死锁场景,对对象操作的处理不支持嵌套,也很难重用。4)对对象进行对象写操作时,也不允许对操作对象相关的对象进行对象访问,对对象访问的效率也会有一定的影响。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于操作分离的网管系统对象管理方法,针对目前网管系统中对象管理的需求,通过将对象的读、写操作进行分离保证了读、写操作不相互影响,对象访问模块与对象配置模块中的对象配置数据通过可靠的增量对象配置上报通知进行同步,解决了对象配置修改过程中因对象配置数据持久化到数据库效率较低而导致对象配置数据访问带来的效率问题。为达到以上目的,本发明采取的技术方案是
一种基于操作分离的网管系统对象管理方法,其特征在于网管系统对对象的读、写操作进行分离,分别由对象访问模块与对象配置模块来实现,并且在内存中存储有两块各自独立的、分别对应于对象访问模块与对象配置模块的对象配置数据,保证对对象的对象配置数据的读、写操作之间不会相互影响,
所述分别对应于对象访问模块与对象配置模块的对象配置数据之间通过可靠的增量对象配置上报通知进行同步;
对象访问模块中,实现读对象配置数据操作的处理,所述读对象配置数据操作包括对象配置数据的查询、遍历,实现接收对象配置模块发送的可靠的增量对象配置上报通知,并根据可靠的增量对象配置上报通知同步更新对象配置数据的处理,保证内存中与对象访问模块对应的对象配置数据与内存中与对象配置模块对应的对象配置数据一致;
对象配置模块中,实现写对象配置数据操作的处理,所述写对象配置数据操作包括对象配置数据的增加、删除、修改,实现将写对象配置数据操作后增量的对象配置数据更新到数据库中持久化,同时给对象访问模块发送可靠的增量对象配置上报通知,所述可靠的增量对象配置上报通知中包括写对象配置数据操作后增量的对象配置数据。在上述技术方案的基础上,对象访问模块在初始化时,先从对象配置模块获取到对象配置数据的对象配置数据版本基线,并缓冲该版本基线,然后从数据库中加载持久化的对象配置数据,并将加载的对象配置数据进行缓冲,这样对象访问模块与对象配置模块具有相同的数据源和相同的对象配置变化版本基线。在上述技术方案的基础上,用流水号递增的方式来表示对象配置数据变化的版本基线。在上述技术方案的基础上,在可靠的增量对象配置上报通知中包含对象配置变化版本基线和增量的对象配置数据,
对象访问模块在接收到可靠的增量对象配置上报通知后,先回复对象配置模块该通知已接收到,然后根据可靠的增量对象配置上报通知中的版本基线确定是否有数据丢失或重复上报,如果有重复上报,则直接丢弃,如果有数据丢失,则需要重新初始化内存中的对象配置数据,只有正常的数据才更新到内存中缓冲的对象配置数据和本地的对象配置变化版本基线,并将该通知转发给所有客户端。在上述技术方案的基础上,在对象访问模块更新内存中的对象配置数据时,需要给内存中的对象配置数据加写锁来保护内存中的对象配置数据的线程安全性。在上述技术方案的基础上,对象访问模块给客户端提供按条件获取对象配置数据的接口和查询、遍历对象配置数据的接口,
在查询、遍历对象配置数据时,需要给内存中的对象配置数据加读锁来保护内存中的对象配置数据的线程安全性。在上述技术方案的基础上,对象配置模块初始化时,从数据库中加载持久化的对象配置数据,并将加载的对象配置数据中关键的对象配置属性进行缓冲作为内存中的对象配置数据,为对象配置修改时,进行数据校验提供快速查找或比较的接口。在上述技术方案的基础上,对象配置模块提供增量的对象配置修改接口,完成对象配置数据的增加、删除、修改操作,并将增量的对象配置数据持久化到数据库中,同时也更新缓冲中的对象配置数据,保持内存中缓冲的对象配置数据与数据库中的对象配置数据的一致性,包括以下的步骤
1)、根据客户端下发的对象配置数据,校验对象配置数据参数的完整性和合法性;
2)、将合法的增量对象配置数据按照业务处理逻辑处理后,持久化到数据库中;
3)、将增量的对象配置数据更新到内存中进行缓冲,维护好缓冲中对象配置数据之间的关系。在上述技术方案的基础上,对象配置模块在对象配置数据修改完成后,上报可靠的增量对象配置数据改变通知,在确认对象访问模块已接收到该通知后才上报下一条增量对象配置数据改变通知,否则,重复上报,以确保通知可靠上报。本发明所述的基于操作分离的网管系统对象管理方法,针对目前网管系统中对象管理的需求,通过将对象的读、写操作进行分离保证了读、写操作不相互影响,对象的读操作由对象访问模块处理,对象的写操作由对象配置模块处理,且对象访问模块与对象配置模块内存中的对象配置数据各自独立,即内存中存储有两块各自独立的、且分别对应于对象访问模块与对象配置模块的对象配置数据,分别对应于对象访问模块与对象配置模块的对象配置数据之间通过可靠的增量对象配置上报通知进行数据同步,解决了对象配置修改过程中因对象配置数据持久化到数据库效率较低而导致对象配置数据访问带来的效率问题。本发明所述的基于操作分离的网管系统对象管理方法,提高了共享数据并发访问 (读、写)时的安全性和高并发性,尤其是在“读操作多,写操作少”的场景中可以大大提高对象访问(读对象配置数据操作)的效率。
本发明有如下附图
图1本发明的总体方案示意图。
具体实施例方式以下结合附图对本发明作进一步详细说明。本发明所述的基于操作分离的网管系统对象管理方法中,网管系统对对象的读、 写操作进行分离,分别由对象访问模块与对象配置模块来实现,并且在内存中存储有两块各自独立的、分别对应于对象访问模块与对象配置模块的对象配置数据,保证对对象的对象配置数据的读、写操作之间不会相互影响,
所述分别对应于对象访问模块与对象配置模块的对象配置数据之间通过可靠的增量对象配置上报通知进行同步(实时同步);
对象访问模块中,实现读对象配置数据(内存中与对象访问模块对应的对象配置数据) 操作的处理,所述读对象配置数据操作包括对象配置数据的查询、遍历,实现接收对象配置模块发送的可靠的增量对象配置上报通知,并根据可靠的增量对象配置上报通知同步更新对象配置数据的处理,保证内存中与对象访问模块对应的对象配置数据与内存中与对象配置模块对应的对象配置数据一致;
对象配置模块中,实现写对象配置数据(内存中与对象配置模块对应的对象配置数据) 操作的处理,所述写对象配置数据操作包括对象配置数据的增加、删除、修改,实现将写对象配置数据操作后增量的对象配置数据更新到数据库中持久化(增加、删除、修改后引起的变更了的对象配置数据统称为增量的对象配置数据),同时给对象访问模块发送可靠的增量对象配置上报通知,所述可靠的增量对象配置上报通知中包括写对象配置数据操作后增量的对象配置数据,对象访问模块接收到这些上报通知后,会将对象访问模块内存中的对象配置数据同步修改,保证对象访问模块与对象配置模块之间对象配置数据的一致性和完整性。通过该方法可以保证网管系统中对象配置数据读写的可靠性、安全性、高并发性。如图1所示,本发明所述的基于操作分离的网管系统对象管理方法,将对象读、写操作进行分离后,分别由对象访问模块和对象配置模块来实现。
对象访问模块在初始化时,先从对象配置模块获取到对象配置数据的对象配置数据版本基线(用流水号递增的方式来表示对象配置数据变化的版本基线),并缓冲该版本基线,然后从数据库中加载持久化的对象配置数据,并将加载的对象配置数据进行缓冲,这样对象访问模块与对象配置模块具有相同的数据源和相同的对象配置变化版本基线。在可靠的增量对象配置上报通知中包含对象配置变化版本基线和对象配置数据 (增量的对象配置数据),对象访问模块在接收到可靠的增量对象配置上报通知后,先回复对象配置模块该通知已接收到,然后根据可靠的增量对象配置上报通知中的版本基线确定是否有数据丢失或重复上报,如果有重复上报,则直接丢弃,如果有数据丢失,则需要重新初始化内存中的对象配置数据,只有正常的数据(无数据丢失、无重复上报的)才更新到内存中缓冲的对象配置数据和本地的对象配置变化版本基线,并将该通知转发给所有客户端。在对象访问模块更新内存中的对象配置数据时,需要给内存中的对象配置数据加写锁来保护内存中的对象配置数据的线程安全性。这样对象访问模块中,内存中的对象配置数据的互斥仅仅限制在对象配置数据更新的时刻。对象访问模块给客户端提供按条件获取对象配置数据的接口和查询、遍历对象配置数据的接口。在查询、遍历对象配置数据时,需要给内存中的对象配置数据加读锁来保护内存中的对象配置数据的线程安全性,根据读写锁的特性(读与读是不互斥的),在获取内存中的对象配置数据时相互之间是不互斥的,仅仅在有对象数据更新时才会有互斥,并且因为对象配置数据的更新时不需要校验参数的完整性和合法性以及数据库操作等复杂的业务逻辑处理,只需要更新缓冲中的数据,效率非常高,所以,对象配置数据的更新对对象配置数据访问的效率几乎没有影响。对象配置模块初始化时,从数据库中加载持久化的对象配置数据,并将加载的对象配置数据中关键的对象配置属性进行缓冲作为内存中的对象配置数据,为对象配置修改时,进行数据校验提供快速查找或比较的接口。对象配置模块提供增量的对象配置修改接口,完成对象配置数据的增加、删除、修改操作,并将增量的对象配置数据持久化到数据库中,同时也更新缓冲中的对象配置数据, 保持内存中缓冲的对象配置数据与数据库中的对象配置数据的一致性,包括以下的步骤
1)、根据客户端下发的对象配置数据,校验对象配置数据参数的完整性和合法性;
2)、将合法的增量对象配置数据按照业务处理逻辑处理后,持久化到数据库中;
3)、将增量的对象配置数据更新到内存中进行缓冲,维护好缓冲中对象配置数据之间的关系。对象配置模块在对象配置数据修改完成后,上报可靠的增量对象配置数据改变通知,在确认对象访问模块已接收到该通知后才上报下一条增量对象配置数据改变通知,否则,重复上报,以确保通知可靠上报。综上所述,实现本发明,可以按以下步骤执行
Al、对象访问模块初始化时,从数据库中加载持久化的对象配置数据,并将加载的对象配置数据缓冲到内存中作为共享数据,给与对象相关的其他功能(比如获取对象配置数据) 进行访问。A2、对象访问模块接受并处理对象配置模块的增量对象配置数据改变通知,更新缓冲中共享的对象配置数据,然后将该通知转发给所有的网管界面和需要使用对象配置数
8据的网管其他后台模块(比如告警模块)。A3、对象访问模块对外提供获取对象配置数据接口,对内提供按条件查询、遍历对象配置数据的接口。A4、对象配置模块初始化时,从数据库中加载持久化的对象配置数据,并将加载的对象配置数据缓冲到内存中作为共享数据,为对象配置进行数据校验时,提供快速对象查找或对象属性比较接口。A5、对象配置模块提供增量的对象配置数据改变接口,完成对象配置数据的增、 删、改操作,并将增量的对象配置数据持久化到数据库中,同时也更新缓冲中的对象配置数据,保持内存中缓冲的对象配置数据与数据库中的对象配置数据的一致性。A6、对象配置模块在对象配置数据修改完成后,上报可靠的增量对象配置数据改变通知,通过该可靠通知保证对象访问模块中对象配置数据与对象配置模块中对象配置数据的一致性和完整性。其中步骤A5包括以下步骤
A51、对象配置模块根据客户端下发的对象配置数据,检验对象配置数据的完整性和合法性,如果数据不完整或不合法,将直接返回给客户端相应的错误提示;
A52、将合法的增量对象配置数据按照相应的业务逻辑处理后,持久化到数据库中,如果数据库持久化失败,将直接返回给客户端相应的错误提示; A53、将增量的对象配置数据更新到内存中进行缓冲。以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均含于本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
权利要求
1.一种基于操作分离的网管系统对象管理方法,其特征在于网管系统对对象的读、 写操作进行分离,分别由对象访问模块与对象配置模块来实现,并且在内存中存储有两块各自独立的、分别对应于对象访问模块与对象配置模块的对象配置数据,保证对对象的对象配置数据的读、写操作之间不会相互影响,所述分别对应于对象访问模块与对象配置模块的对象配置数据之间通过可靠的增量对象配置上报通知进行同步;对象访问模块中,实现读对象配置数据操作的处理,所述读对象配置数据操作包括对象配置数据的查询、遍历,实现接收对象配置模块发送的可靠的增量对象配置上报通知,并根据可靠的增量对象配置上报通知同步更新对象配置数据的处理,保证内存中与对象访问模块对应的对象配置数据与内存中与对象配置模块对应的对象配置数据一致;对象配置模块中,实现写对象配置数据操作的处理,所述写对象配置数据操作包括对象配置数据的增加、删除、修改,实现将写对象配置数据操作后增量的对象配置数据更新到数据库中持久化,同时给对象访问模块发送可靠的增量对象配置上报通知,所述可靠的增量对象配置上报通知中包括写对象配置数据操作后增量的对象配置数据。
2.如权利要求1所述的基于操作分离的网管系统对象管理方法,其特征在于对象访问模块在初始化时,先从对象配置模块获取到对象配置数据的对象配置数据版本基线,并缓冲该版本基线,然后从数据库中加载持久化的对象配置数据,并将加载的对象配置数据进行缓冲,这样对象访问模块与对象配置模块具有相同的数据源和相同的对象配置变化版本基线。
3.如权利要求2所述的基于操作分离的网管系统对象管理方法,其特征在于用流水号递增的方式来表示对象配置数据变化的版本基线。
4.如权利要求2所述的基于操作分离的网管系统对象管理方法,其特征在于在可靠的增量对象配置上报通知中包含对象配置变化版本基线和增量的对象配置数据,对象访问模块在接收到可靠的增量对象配置上报通知后,先回复对象配置模块该通知已接收到,然后根据可靠的增量对象配置上报通知中的版本基线确定是否有数据丢失或重复上报,如果有重复上报,则直接丢弃,如果有数据丢失,则需要重新初始化内存中的对象配置数据,只有正常的数据才更新到内存中缓冲的对象配置数据和本地的对象配置变化版本基线,并将该通知转发给所有客户端。
5.如权利要求4所述的基于操作分离的网管系统对象管理方法,其特征在于在对象访问模块更新内存中的对象配置数据时,需要给内存中的对象配置数据加写锁来保护内存中的对象配置数据的线程安全性。
6.如权利要求4所述的基于操作分离的网管系统对象管理方法,其特征在于对象访问模块给客户端提供按条件获取对象配置数据的接口和查询、遍历对象配置数据的接口,在查询、遍历对象配置数据时,需要给内存中的对象配置数据加读锁来保护内存中的对象配置数据的线程安全性。
7.如权利要求1所述的基于操作分离的网管系统对象管理方法,其特征在于对象配置模块初始化时,从数据库中加载持久化的对象配置数据,并将加载的对象配置数据中关键的对象配置属性进行缓冲作为内存中的对象配置数据,为对象配置修改时,进行数据校验提供快速查找或比较的接口。
8.如权利要求7所述的基于操作分离的网管系统对象管理方法,其特征在于对象配置模块提供增量的对象配置修改接口,完成对象配置数据的增加、删除、修改操作,并将增量的对象配置数据持久化到数据库中,同时也更新缓冲中的对象配置数据,保持内存中缓冲的对象配置数据与数据库中的对象配置数据的一致性,包括以下的步骤1)、根据客户端下发的对象配置数据,校验对象配置数据参数的完整性和合法性;2)、将合法的增量对象配置数据按照业务处理逻辑处理后,持久化到数据库中;3)、将增量的对象配置数据更新到内存中进行缓冲,维护好缓冲中对象配置数据之间的关系。
9.如权利要求7所述的基于操作分离的网管系统对象管理方法,其特征在于对象配置模块在对象配置数据修改完成后,上报可靠的增量对象配置数据改变通知,在确认对象访问模块已接收到该通知后才上报下一条增量对象配置数据改变通知,否则,重复上报,以确保通知可靠上报。
全文摘要
本发明涉及一种基于操作分离的网管系统对象管理方法,网管系统对对象的读、写操作进行分离,分别由对象访问模块与对象配置模块来实现,并且在内存中存储有两块各自独立的、分别对应于对象访问模块与对象配置模块的对象配置数据,保证对象配置数据的读、写操作不会相互影响,内存中的两块对象配置数据之间通过可靠的增量对象配置上报通知进行同步,保证内存中与对象访问模块对应的对象配置数据与内存中与对象配置模块对应的对象配置数据一致。本发明所述的对象管理方法,提高了共享数据并发访问(读、写)时的安全性和高并发性,尤其是在“读操作多,写操作少”的场景中可以大大提高对象访问(读对象配置数据操作)的效率。
文档编号H04L12/24GK102412985SQ20111033831
公开日2012年4月11日 申请日期2011年10月31日 优先权日2011年10月31日
发明者尹永胜, 张利兵, 张勇, 朱春燕, 邹昊 申请人:烽火通信科技股份有限公司