一种ldap服务节点及同步方法

文档序号:9690948阅读:1042来源:国知局
一种ldap服务节点及同步方法
【技术领域】
[0001]本发明涉及轻型目录访问协议(LightweightDirectory Access Protocol,LDAP),更具体来说,涉及一种LDAP服务节点及同步方法。
【背景技术】
[0002]LDAP是轻量目录访问协议,英文全称是Lightweight Directory AccessProtocol,简称为LDAP,是一个访问在线目录服务的协议。鉴于原先的目录访问协议(Directory Access Protocol即DAP)对于简单的互联网客户端使用太复杂,IETF设计并指定LDAP作为使用X.500目录的更好的途径。LDAP在TCP/IP之上定义了一个相对简单的升级和搜索目录的协议。
[0003]常用词“LDAP目录”可能会被误解,而实际并没有“LDAP目录”这么一个目录种类。通常可以用它来描述任何使用LDAP协议访问并能用X.500标识符标识目录中对象的目录。LDAP目录的条目(entry)由属性(attribute)的一个聚集组成,并由一个唯一'丨生的名字引用,即专有名称(distinguished name, DN)。
[0004]LDAP目录与普通数据库的主要不同之处在于数据的组织方式,它是一种有层次的、树形结构。所有条目的属性的定义是对象类ob j ect c 1 ass的组成部分,并组成在一起构成schema ;那些在组织内代表个人的schema被命名为white pages schema。数据库内的每个条目都与若干对象类联系,而这些对象类决定了一个属性是否为可选和它保存哪些类型的信息。属性的名字一般是一个易于记忆的字符串,例如用cn为通用名(common name)命名,而“mai 1 ”代表e-mai 1地址。
[0005]LDAP目录条目可描述一个层次机构,这个结构可以反映一个政治、地理或者组织的范畴。在原始的X.500模型中,反应国家的条目位于树的顶端;接着是州或者民族组织。典型的LDAP配置使用DNS名称作为树形结构的顶端,下列是代表人、文档、组织单元、打印机和其他任何事务的条目。
[0006]目前对LDAP 同步机制的实现如 OpenLDAP、0UD (Oracle Unified Directory)、ITDS (IBM Tivoli Directory Server)大都是通过 refreshOnly 和 refreshAndPersist两种同步模式来实现的,这两种模式中,同步均由客户端发起,所不同的是同步完成后的操作refreshOnly (“拉模式”)是客户端通过轮询的方式来获取服务端的数据变化,尤其对互为主备或者多机互备的LDAP Server来讲,必然会导致双机性能的下降及资源的浪费;refreshAndPersist (“推模式”)下LDAP backend主动发起推送,具有相对较好的性能及准实时性,但对大数据量用户系统的高并发数据修改,会导致系统频繁的分配、回收系统资源,影响了 LDAP Server本身的性能。
[0007]因此,需要一种可以解决高并发数据修改情况下的LDAP数据同步方法。

【发明内容】

[0008]为解决上述问题,根据本发明的一个方面,提供了一种LDAP服务节点,包括:前端单元,用于处理与客户端所有连接操作和工作线程池的管理;后端单元,用于操作后台数据库;以及基于事件驱动的同步单元;其中,在所述前端单元接收到所述客户端发起的增、删或改请求时,所述前端单元将该增、删或改请求封装为同步消息,并将所述同步消息以进程间通信的方式发送到所述基于事件驱动的同步单元,并且所述基于事件驱动的同步单元在收到所述消息后,以网络通信的方式将所述消息分别发送给一个或多个其他LDAP服务节点的同步单元。
[0009]在上述LDAP服务节点中,所述进程间的通信通过消息队列以及共享内存的结合来实现。
[0010]在上述LDAP服务节点中,所述基于事件驱动的同步单元适于配置所述一个或多个其他LDAP服务节点的同步单元的监听端口与服务IP。
[0011]在上述LDAP服务节点中,所述同步消息为可读事件,用于触发基于事件驱动的同步单元的可写事件,进而所述同步单元发起针对所述其他一个或多个LDAP服务节点的同步单元的同步请求。
[0012]在上述LDAP服务节点中,所述基于事件驱动的同步单元配置成在接收所述同步消息后,从预先分配的事件链表中获取第一事件,在预先分配的任务链表中注册与所述第一事件对应的第一回调函数,唤醒第一工作线程并执行所述第一回调函数。
[0013]在上述LDAP服务节点中,所述基于事件驱动的同步单元进一步配置成在执行第一回调函数后从预先分配的事件链表中获取第二事件,在预先分配的任务链表中注册与所述第二事件对应的第二回调函数,唤醒第二工作线程并执行所述第二回调函数,其中所述第一回调函数与所述第二回调函数不同。
[0014]在上述LDAP服务节点中,所述第一回调函数为读操作,而所述第二回调函数为写操作。
[0015]根据本发明的另一个方面,提供了一种在LDAP服务节点间实现同步的方法,包括:第一 LDAP服务节点接收来自客户端的增、删或改请求;所述第一 LDAP服务节点将该增、删或改请求封装为同步消息;所述第一 LDAP服务节点内的基于事件驱动的同步单元将所述同步消息以网络通信的方式发送给第二 LDAP服务节点内的同步单元。
[0016]在上述方法中,所述第一 LDAP服务节点内的前端单元以进程间通信的方式发送到所述基于事件驱动的同步单元,并且其中所述进程间的通信通过消息队列以及共享内存的结合来实现。
[0017]在上述方法中,所述基于事件驱动的同步单元配置所述第二 LDAP服务节点的同步单元的监听端口与服务IP。
[0018]在上述方法中,所述同步消息为可读事件,用于触发所述基于事件驱动的同步单元的可写事件,进而触发所述同步单元发起针对所述第二 LDAP服务节点的同步单元的同步请求。
[0019]在上述方法中,所述第一 LDAP服务节点内的基于事件驱动的同步单元将所述同步消息以网络通信的方式发送给第二 LDAP服务节点内的同步单元包括:所述基于事件驱动的同步单元在接收所述同步消息后,从预先分配的事件链表中获取第一事件,在预先分配的任务链表中注册与所述第一事件对应的第一回调函数,唤醒第一工作线程并执行所述第一回调函数。
[0020]在上述方法中,所述第一 LDAP服务节点内的基于事件驱动的同步单元将所述同步消息以网络通信的方式发送给第二 LDAP服务节点内的同步单元还包括:所述基于事件驱动的同步单元在执行第一回调函数后从预先分配的事件链表中获取第二事件,在预先分配的任务链表中注册与所述第二事件对应的第二回调函数,唤醒第二工作线程并执行所述第二回调函数,其中所述第一回调函数与所述第二回调函数不同。
[0021]在上述方法中,所述第一回调函数为读操作,而所述第二回调函数为写操作。
[0022]上述技术方案非常适用于有高并发修改LDAP条目信息的情况。在该情况下,一方面解决了修改LDAP —个节点条目信息的情况下,对另外节点同一条目实时访问的可靠性问题。另一方面,相比之前的轮询及频繁的分配回收系统资源的LDAP同步方案相比,降低了系统的开销,从而使更多的系统资源为目录服务本身所用,提高了目录服务本身的性能。
【附图说明】
[0023]在参照附图阅读了本发明的【具体实施方式】以后,本领域技术人员将会更清楚地了解本发明的各个方面。本领域技术人员应当理解的是:这些附图仅仅用于配合【具体实施方式】说明本发明的技术方案,而并非意在对本发明的保护范围构成限制。
[0024]图1是根据本申请的实施例,LDAP服务节点的结构示意图;
图2是根据本申请的实施例,LDAP服务节点中的同步单元的操作示意图。
【具体实施方式】
[0025]下面介绍的是本发明的多个可能实施例中的一些,旨在提供对本发明的基本了解,并不旨在确认本发明的关键或决定性的要素或限定所要保护的范围。容易理解,根据本发明的技术方案,在不变更本发明的实质精神下,本领域的一般技术人员可以提出可相互替换的其它实现方式。因此,以下【具体实施方式】以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。
[0026]图1是根据本申请的实施例,LDAP服务节点的结构示意图。如图1所示,在本申请的技术方案中,LDAP服务节点特别设置有一个进程模块SyncModule来负责接受并分发同步请求。LDAP服务
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1