实现系统间数据同步的方法

阅读: 评论:0

著录项
  • CN200410037024.0
  • 20040421
  • CN1691667
  • 20051102
  • 华为技术有限公司
  • 蓝智能
  • H04L29/06
  • H04L12/00 H04L29/06 H04L7/00

  • 广东省深圳市龙岗区坂田华为总部科研中心F1-18楼知识产权部
  • 中国,CN,广东(44)
摘要
本发明公开了一种实现系统间数据同步的方法,该方法为:第一系统采用SNMP中的请求消息向第二系统申请同步资源;如果申请失败,则结束申请或继续申请;否则得到对该资源的控制权并阻塞其他系统申请该资源;然后第一系统向第二系统发送同步开始请求,并在该请求中携带第一系统接收同步数据的地址;第二系统根据所述地址,通过传输控制协议(TCP)与第一系统建立连接,并通过该连接与第一系统进行数据的同步操作;以及在同步操作结束后,由第一系统释放所述资源,并由第二系统生成同步结果。
权利要求

1、一种实现系统间数据同步的方法,所述系统间通过简单网络管理协议 (SNMP)进行通信;其特征在于该方法包括下述步骤:

A、第一系统采用SNMP中的请求消息向第二系统申请同步资源;如果申 请成功,则得到对该资源的控制权并阻塞其他系统申请该资源,继续步骤B,否 则结束申请或继续申请;

B、第一系统向第二系统发送同步开始请求,并在该请求中携带第一系统接 收同步数据的地址;

C、第二系统根据所述地址,通过传输控制协议(TCP)与第一系统建立连 接,并通过该连接与第一系统进行数据的同步操作;以及

D、在同步操作结束后,由第一系统释放所述资源,并由第二系统生成同步 结果。

2、如权利要求1所述的方法,其特征在于,步骤A包括:

A1、第一系统向第二系统请求同步锁标识和资源占用情况;

A2、第二系统判断其资源被占用的时间是否超时,如果未超时,则直接向 第一系统返回同步锁标识和资源占用情况,否则释放该资源,并向第一系统返 回同步锁标识和资源占用情况;

A3、第一系统根据第二系统的返回消息判断资源是否被占用,如果是,则 结束请求或返回步骤A1,否则进行步骤A4;

A4、第一系统利用需要占用资源的时间和获得的同步锁标识设置第二系统;

A5、第二系统判断本系统当前的同步锁标识与接收到的同步锁标识是否相 同,如果相同则允许设置,第二系统将该同步锁标识的值增1,以及设置同步开 始时间和第一系统需要占用资源时间,并向第一系统返回设置成功消息;否则 不允许设置并向第一系统返回设置失败消息。

3、如权利要求1所述的方法,其特征在于,进行步骤B之前,第一系统还 设置第二系统同步数据的查询条件和/或过滤规则,第二系统则根据该设置来同 步数据。

4、如权利要求1所述的方法,其特征在于,在第二系统中还建立有一个同 步状态标识,第一系统在数据同步期间可对该标识进行设置,第二系统则在数 据同步周期中根据该同步状态标识来决定下一步的同步操作。

5、如权利要求1所述的方法,其特征在于,第二系统还生成同步操作结果 的详细说明。

6、如权利要求1所述的方法,其特征在于,同步操作结束后释放资源包括 步骤:

D1、第一系统将同步操作前获得的同步锁标识增加1,并将需要占用资源 的时间设置为0;

D2、利用所述需要占用资源的时间和同步锁标识设置第二系统;

D3、第二系统判断本系统当前的同步锁标识与接收到的同步锁标识是否相 同,如果相同则允许设置,第二系统将系统需要占用资源时间设置为0以释放 资源,并向第一系统返回设置成功消息;否则不允许设置并向第一系统返回设 置失败消息。

7、如权利要求1所述的方法,其特征在于,如果第一系统与第二系统在同 步数据过程中发生异常而使第一系统没有释放所申请的资源,则第二系统根据 情况自动释放该资源以防止资源被异常占用。

说明书
技术领域

技术领域

本发明涉及通信技术,尤其涉及一种实现系统间数据同步的方法。

背景技术

由于网管系统十分复杂,因此,通常采用分层管理办法,即把网管系统划 分为:网元层、网元管理层、子网管理层、网络管理层、服务管理层和事务管 理层。上、下级系统接口大部分采用简单网络管理协议(SNMP协议),这种协 议一般基于用户数据报(UDP)传输协议。因此,基于SNMP协议来同步上下 级系统数据,则会产生同步数据包丢失、数据包没有按序到达、数据流量难以 控制和同步取消等问题。采用多层系统结构,也存在一个下级系统被多个上级 系统管理的情况,因此,需要解决如何防止多个上级系统设置下级系统导致数 据不一致的问题。

目前主要通过以下几种方法来在系统间同步数据:

方法一、采用SNMP Inform同步大量数据;即采用SNMP的协议数据包类 型,有发送包和相应的响应包,如果接收到响应包则确认对方已收到发送包。 由于采用这种方法每发送一个包都需要等待确认,因此存在效率低的缺点。

方法二、把查询结果保存在下级网管的管理信息库(mib)中,等待上级系 统获取。这种方法不仅需要占用大量内存,而且不能够表达数据结构比较复杂 的数据,效率也较低。

方法三、SNMP基于TCP/IP协议,即用TCP协议代替UDP协议,从而保 证数据传输的可靠。这种方法利用特殊的SNMP API,要求上下级系统都需要基 于TCP/IP的SNMP,因此,不仅要求比较苛刻,而且通用性差。

方法四、采用trap同步数据。即采用SNMP的协议数据包类型,只有发送 包没有响应包,这种方法存在丢失数据包,难于控制流量的缺点,因而无法满 足大量数据同步。

发明内容

本发明提供一种实现系统间数据同步的方法,以解决现有技术中存在要么 效率低下,要么通用性差和要求苛刻,要么存在数据丢包、流量难于控制和数 据覆盖的问题。

为解决上述问题,本发明提供以下技术方案:

一种实现系统间数据同步的方法,所述系统间通过简单网络管理协议 (SNMP)进行通信;其特征在于该方法包括下述步骤:

A、第一系统采用SNMP中的请求消息向第二系统申请同步资源;如果申 请成功,则得到对该资源的控制权并阻塞其他系统申请该资源,继续步骤B,否 则结束申请或继续申请;

B、第一系统向第二系统发送同步开始请求,并在该请求中携带第一系统接 收同步数据的地址;

C、第二系统根据所述地址,通过传输控制协议(TCP)与第一系统建立连 接,并通过该连接与第一系统进行数据的同步操作;以及

D、在同步操作结束后,由第一系统释放所述资源,并由第二系统生成同步 结果。

其中:

步骤A包括:

A1、第一系统向第二系统请求同步锁标识和资源占用情况;

A2、第二系统判断占用资源的时间是否超时,如果未超时,则直接向第一 系统返回同步锁标识和资源占用情况,否则释放该资源,并向第一系统返回同 步锁标识和资源占用情况;

A3、第一系统根据第二系统的返回消息判断资源是否被占用,如果是,则 结束请求或返回步骤A1,否则进行步骤A4;

A4、第一系统利用需要占用资源的时间和获得的同步锁标识设置第二系统;

A5、第二系统判断本系统当前的同步锁标识与接收到的同步锁标识是否相 同,如果相同则允许设置,第二系统将该同步锁标识的值增1,以及设置同步开 始时间和第一系统需要占用资源时间,并向第一系统返回设置成功消息;否则 不允许设置并向第一系统返回设置失败消息。

在第二系统中还建立有一个同步状态标识,第一系统在数据同步期间可对 该标识进行设置,第二系统则在数据同步周期中根据该同步状态标识来决定下 一步的同步操作。

同步操作结束后释放资源包括步骤:

D1、第一系统将同步操作前获得的同步锁标识增加1,并将需要占用资源 的时间设置为0;

D2、利用所述需要占用资源的时间和同步锁标识设置第二系统;

D3、第二系统判断本系统当前地同步锁标识与接收到的同步锁标识是否相 同,如果相同则允许设置,第二系统将系统需要占用资源时间设置为0以释放 资源,并向第一系统返回设置成功消息;否则不允许设置并向第一系统返回设 置失败消息。

本发明具有以下有益效果:

1、本发明利用通用SNMP协议进行一般小数据量的查询和设置操作,但对 于大数据量的传输,采用TCP协议进行,保证大数据传输的可靠和高效;这样 避免单纯SNMP大数据量传输的不可靠和低效率,又避免了利用基于TCP的 SNMP协议的特殊要求。

2、本发明在上、下级同步数据前通过申请资源并在同步操作期间阻塞其他 系统对该资源的请求,因而能够可靠的进行数据同步,避免了多个上级系统对 下级系统进行设置而造成数据被覆盖的问题,使数据保持一致。

3、在同步结束后生成同步结果,等待上级系统查询,使得上下级系统能够 并行处理各自的任务。

4、通过设置同步状态,可控制同步操作,因而本发明能够支持同步取消、 等待和恢复等功能,并支持同步数据到指定的位置,不必与上级系统同一进程。

附图说明

图1为网络管理系统的分层结构示意图;

图2为本发明的流程图。

具体实施方式

本发明采用SNMP中的设置(Set)和获取(Get)请求实现系统间的会话 控制,当第一系统需要同步特定的数据时,采用Get和Set请求向第二系统申请 同步资源;如果申请失败则结束申请或继续申请,如果申请成功,则得到对资 源的控制权并阻塞其他系统申请该资源;然后向第二系统发送同步开始请求, 由第二系统与第一系统建立TCP SOKET连接,并通过该连接与上级系统进行数 据的同步操作;在同步操作结束后释放占用的资源并生成同步结果,第一系统 通过查询同步结果来确定是否同步成功。

以下以图1中的网管系统为例对本发明进行详细说明,其中,第一系统对 应于上级系统,第二系统对于下级系统(一个管理层即一个系统)。

参阅图2所示,具体处理流程如下

步骤10:当上级系统希望同步特定的数据时,首先向下级系统的适当的任 务(或称行,一个行对应一个任务)发送一个GetRequest消息来请求该任务当 前的同步锁标识(syncLock)和资源需要被占用的时间(syncTimeOut)的取值。

其中,同步锁标识(syncLock)用于识别数据同步当前调用情况。资源的时 间(syncTimeOut),用于表示上级系统需要占有资源的时间,单位可以为秒。

步骤20:下级系统判断占用资源的时间是否超时,如果未超时,则直接向 上级系统返回syncLock和syncTimeOut的取值,如果超时,则将syncTimeOut 设置为0即释放该资源,并向上级系统返回syncLock和syncTimeOut的取值。

下级系统,根据系统当前时间(sysUpTime.0)-同步开始时间 (syncStartTime)是否大于syncTimeOut来判断资源占用是否超时;如果大于, 则设置syncTimeOut=0,以防止上级系统异常长期占有该资源,否则不改变 syncTimeOut原来的值。

其中,同步开始时间(syncStartTime)用于表示上级系统申请资源开始时间。

步骤30:上级系统判断获得的syncTimeOut是否等于0,如果是,则继续步 骤40;否则返回步骤10,继续发送GetRequest进行测试,直到syncTimeOut等 于0为止。

步骤40:该行的syncTimeOut等于0则表示请求时资源未被占用,上级系 统就发送一个SetRequest消息,用它刚刚获得的syncLock的值K来设置下级系 统中该对象实例的syncLock值为K,并用上级系统需要占用资源的时间来设置 下级系统中的syncTimeOut值。

步骤50:下级系统中的任务判断当前的syncLock值与接收到的上级系统请 求设置的syncLock值是否相同。

如果相同(说明在这期间没有其他系统介入该资源),则设置成功,下级系 统syncLock取值递增1;将syncTimeOut设置为上级系统需要占用资源的时间 来阻塞其系统的请求;同时也将同步开始时间(syncStartTime)的值设置为系统 当前时间(sysUpTime.0),并设置同步地址(syncIpAddr)和同步端口(syncIpPort), 这样上级系统就暂时拥有该行的所有权,拥有时间为syncTimeOut的取值。

如果不相同(说明在这期间已有其他系统介入该资源),则请求设置失败。

此上级系统检索了syncLock并尝试设置为同样的取值,只有在没有其它系 统的介入情况下才能设置成功。

步骤60:上级系统通过SetRequest消息设置下级系统同步数据的查询条件 和过虑规则。

步骤70:上级系统向下级系统发送接收同步数据的IP地址(syncIpAddr) 和监听端口上级连接的IP端口(syncIpPort),并将下级系统的同步状态 (syncStatus)的值设置为开始状态开始同步,等待下级系统进行Socket连接: 即调用SyncAPI::listen(syncIpPort)。

其中,同步状态(syncStatus)用于控制同步操作,下级系统根据该同步状 态的取值决定下一步操作,取值可为:

(1)放弃同步:abort(0)

(2)开始同步:start(1)

(3)等待同步:wait(2)

(4)同步进行中或恢复同步:continue(3)

(5)同步结束:stop(4)

步骤80:下级系统收到同步开始请求,将同步结果(syncResult)设置为同 步进行中(inProgress(1)),并主动和上级系统进行TCP socket连接。

使用TCP协议,就能够进行流量控制并避免数据丢包。

步骤90:下级系统成功建立socket连接后,将同步状态(syncStatus)设置 为同步进行中(continue(3)),并根据同步查询条件和过虑规则,同步数据 SyncAPI::sendVBList(vbs,vbcount);上级系统则接收下级系统发送的数据。

下级系统在数据同步中周期检查syncStatus的值来决定下一步同步操作,而 上级系统可以通过设置syncStatus的值来中止、暂停或继续数据同步。

步骤100:下系统同步结束后,断开socket连接,即调用SyncAPI::close(), 并设置同步结果(syncResult)。

可能的同频结果值如下:

成功:success(0);

没有数据同步:notData(2);

同步被放弃:abort(3);

同步失败:failed(4);

下级系统不能执行:unAbletoRun(5);

下级系统不支持syncType同步类型:unSupported(7)。

同时,还可生成操作结果的详细说明(syncCode)。

步骤110:上级系统检索syncResult和syncCode。根据syncResult可以确定 是否同步成功。

步骤120:上级系统向下级系统发送一个SetRequest消息,将syncLock= K+1,syncTimeOut=0,如果设置成功,则表示放弃拥有同步资源的所有权,并 表明该次同步有效。

如果第一系统与第二系统在同步数据过程中发生异常而使第一系统没有释 放所申请的资源,则第二系统根据情况自动释放该资源,以防止资源被异常占 用。

以下虽以网管系统为例,但本发明不仅限于此,本发明可广泛应用于基于 SNMP的系统之间进行大数据的数据同步。

本文发布于:2023-04-13 21:23:37,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/85785.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图