一种有关电子地图协同标志时的错误检测和处理方法[技术领域]
本发明涉及电子及多媒体应用和数据处理技术领域,具体是一种有关电子地图协同标志时的错误检测和处理方法。
[背景技术]
随着电子信息科技的发展,电子设备的用途越来越广泛,如今几乎每台手机中都有电子地图的功能,而驾车者也普遍在车内安装电子地图导航来便于自己识别方向和路况。电子地图协同标注是构建基于地理信息系统的协同工作平台的必要条件, 为地域分散的群体用户提供协调与协作完成特定任务的电子虚拟环境。
现有技术中,电子地图标注的技术有许多,但在协同标注过程中,最重要的是要保障各个节点信息的一致性,即在标注界面显示的内容在各个用户节点中都应一致。现有技术中有一如公开号为CN101082912的一种通过具有位置信息的图片集对电子地图进行标注的方法,这种技术首先获取具有位置信息的图片集,通过图片集中图片的位置信息,将图片集关联到电子地图上;在图片集中找到需要标注的对象做出标记,将标注的对象定位到电子地图中。但是由于网络环境的不确定性以及各个节点操作的先后顺序不同,往往容易导致各个节点所显示的内容不一致,不够稳定可靠。
[发明内容]
本发明的目的就是为了解决现有技术中的不足和缺陷,提供一种避免在电 子地图协同编辑时,网络的不可靠等因素导致协同编辑内容遗失导致各个节点内容不同等不足之处,可扩展动态错容的有关电子地图协同标志时的错误检测和处理方法。
为实现上述目的,设计一种有关电子地图协同标志时的错误检测和处理方法,其特征在于在协同服务端采用服务点集群的方式提供协同服务,服务节点集群采用了可扩展的服务环架构,服务节点集群包含节点0,节点1,节点2,…,节点n这n+1个节点,则0,1,2,…,n,0号节点一次连接成逻辑环,对任一协同任务,系统服务环上都有其主服务节点和备份服务节点;同时,环上作为备份的节点同时也可作为其他协同任务的主服务节点,任一协同任务的主服务节点与其备份服务节点在系统服务环上是逻辑相邻的,对于协同任务T, 若节点i 是其主服务节点, 节点i- 1, i- 2, , i- r1, i+1, i+2, ,i+r2 是其备份节点, 则任务T 的主服务节点和所有备份服务节点构成任务T 的服务环,服务节点处理包括以下步骤:
a.协同标注系统服务环中每一个服务节点都有一个服务进程拷贝为客户进程提供服务,对于任一协同任务而言, 任务服务环上都有其主服务节点和备份服务节点, 任意时刻的主服务节点有且只有一个;所述的主服务节点与所述的备份服务节点的初始状态为一致,主服务节点的数据状态与备份读物节点的数据状态为同步变化,从而使任一时刻主服务节点的状态和备份服务的状态保持一致,以实现当主服务节点故障后由备份服务节点正确接管,达到一致性控制;
主服务节点与备份服务节点的一致性控制其定义如下:
1)在协同标注系统中, 为协同任务提供服务的计算机节点称为服务节点Node, 记为N, 用一个五元组来表示: N=( node_id, NL, Lmax, NS, TASKS)其中node_id 为服务节点在逻辑服务环上的节点号;NL 为节点N 的负载, 即节点N 提供服务的协同任务数量, 其等于服务节点N 上的最大任务号; Lmax 为服务节点可承载的最大负载量, 根据节点性能的不同,Lmax 的值不同; NS 为节点状态, 有效服务节点NS=true, 失效服务节点NS=false; TASKS 是服务节点Node 上的协同任务集合,初始状态下NL=0;
2)主服务节点状态P=( S, R) 是一个由S 和R 构成的二元组, 节点状态集合S 中的每个元素代表节点的一个可能状态, R 是单映射函数Ri 的集合, Ri:S→S, 每个单映射函数Ri 代表节点按照客户端的请求而进行的操作;
3)主服务节点P 启动之后在响应第一个客户端请求之前, 形成的状态S0 为初始状态,时刻t0 客户端向节点P 发出了第一个请求R1, R1( S0) =S1,以后的任何时刻t>t0, 客户端对节点P 的请求形成一个有序的集合R={R1, R2, , Rn}, Rn 为时刻t 最后一个客户端请求;对每一个请求Ri, Ri( Si- 1) =Si;根据以上定义, 对包含n 个节点的任务服务环一致性控制问题的描述为: 在任何时刻t, 任务的主服务节点Primary的状态为S, 备份节点Backups 的状态为S’i, S=S’i, 0<i<n- 1;
b. 服务节点检测
协同标注系统服务环中服务节点运行不同的工作负载, 并基于协同任务作相互的备份, 且负载互相分担, 各节点既是某些任务的主服务节点, 又是其他任务的备份服务节点,为了确保系统服务环的高可用性, 需要及时检测节点的 各种故障并迅速做出处理,服务节点检测动态容错机制中服务节点监控采用服务环中相邻节点间相互发送心跳消息探测节点是否失效;
c. 失效管理
服务节点一致性控制保证任务服务环中主备份节点具有相同状态,当检测到某一节点失效后,失效管理保证该服务节点上的每一个协同任务都能找到相应的节点作为替代节点;
1)当k 元系统服务环上节点A 失效, 则其上的任一冗余度为r 的协同任务T在其对应的任务服务环T—R=( p, r) 中存在的主服务节点即节点A 不能提供服务, 必需从其r- 1 个备份服务节点中寻找一个替代节点作为新的主服务节点;
2)利用心跳探测机制检测到服务节点N ( i) 失效后, 首先为N( i) 上任务寻找替代的服务节点, 重构服务环; 然后查询持有令牌的节点是否依然满足负载小于阈值的条件, 当不满足时, 则需要传递令牌到下一个负载小于阈值的有效节点,
3)节点N( i) 失效后服务环重构的算法描述如下:
a.遍历所有冗余节点,查询出现错误的节点,对于NL所有节点,当节点为冗余节点,则添加对此节点的容错任务;
b.查找此错误节点的最近冗余节点;
c.将操作令牌分配给错误节点,把此节点从队列中删除,最后释放令牌。
本发明同现有技术相比,解决了由于网络的不可靠等因素导致的协同编辑内容遗失,从而引起各个节点所呈现的协同编辑内容不一致现象,提供了一种高效、可靠的协同服务具有高可用性和可伸缩性的优点:
1)高可用性: 当服务环中的一个节点发生故障时, 将该节点的任务分配到集群中其他正在工作的节点上执行, 提供永不停机的服务;
2)可伸缩性: 即规模可扩展性。当系统的工作流量超出了服务环中各节点的承载能力时, 将有其他节点加入到该集群中, 从而使系统总体性能得到增强。
[具体实施方式]
下面对本发明作进一步说明,这种方法的技术和原理对本专业的人来说是非常清楚的。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明中的服务节点集群采用了可扩展的服务环架构, 假设服务节点集群包含节点0, 节点1,节点2, , 节点n 这n+1 个节点, 则0, 1, 2, , n, 0号节点依次连接成逻辑环。对任一协同任务, 系统服务环上都有其主服务节点和备份服务节点; 同时, 为提高服务性能和服务环中节点的利用率, 环上作为备份的节点同时也可作为其他协同任务的主服务节点。任一协同任务的主服务节点与其备份服务节点在系统服务环上是逻辑相邻的。对于协同任务T, 若节点i 是其主服务节点, 节点i- 1, i- 2, , i- r1, i+1, i+2, ,i+r2 是其备份节点, 则任务T 的主服务节点和所有备份服务节点构成任务T 的服务环。
动态容错算法包括服务节点一致性控制、服务节点监测、失效管理以及客户端对容错的支持4 个方面,下面分别加以介绍如何实施:
( 1) 服务节点一致性控制
协同标注系统服务环中每一个服务节点都有一个服务进程拷贝为客户进程提供服务。对于任一协同任务而言, 任务服务环上都有其主服务节点和备份服务节点, 并且任意时刻主服务节点有且只有一个。一致性控制的功能就是保证在任意时刻主服务节点的状态和备份服务节点的状态保持一致。只有保持状态的一致性, 当主服务节点故障之后备份服务节点才能够正确地接管。由于主服务节点和备份服务节点 的初始状态是一致的, 以后当主服务节点的数据状态发生变化时,备份服务节点 的数据状态也需要同步发生相同的变化。当主服务节点发生故障之后, 备份服务节点 才能正确接管主服务节点的功能, 并且用户感觉不到这种故障过程。任务服务环中主服务节点和备份服务节点 的状态一致性控制是保证协同任务服务高可靠性的基础。
为了对服务环中主服务节点和备份服务节点 的一致性控制问题进行精确地描述, 首先给出如下定义:
定义1 在协同标注系统中, 为协同任务提供服务的计算机节点称为服务节点Node, 记为N, 可以用一个五元组来表示: N=( node_id, NL, Lmax, NS, TASKS)其中node_id 为服务节点在逻辑服务环上的节点号;NL 为节点N 的负载, 即节点N 提供服务的协同任务数量, 它等于服务节点N 上的最大任务号; Lmax 为服务节点可承载的最大负载量, 根据节点性能的不同,Lmax 的值不同; NS 为节点状态, 有效服务节点NS=true, 失效服务节点NS=false; TASKS 是服务节点Node 上的协同任务集合。初始状态下NL=0。
定义2 主服务节点状态P=( S, R) 是一个由S 和R 构成的二元组, 节点状态集合S 中的每个元素代表节点的一个可能状态, R 是单映射函数Ri 的集合, Ri:S→S, 每个单映射函数Ri 代表节点按照客户端的请求而进行的操作。
定义3 主服务节点P 启动之后在响应第一个客户端请求之前, 形成的状态S0 为初始状态。时刻t0 客户端向节点P 发出了第一个请求R1, R1( S0) =S1。以后的任何时刻t>t0, 客户端对节点P 的请求形成一个有序的集合R={R1, R2, , Rn}, Rn 为时刻t 最后一个客户端请求。对每一个请求Ri, Ri( Si- 1) =Si。根据以上定义, 对包含n 个节点的任务服务环一致性控制问题的描述为: 在任何时刻t, 任务的主服务节点的状态为S, 备份节点备份服务节点的状态为S’i, S=S’i, 0<i<n- 1。
( 2) 服务节点监测
协同标注系统服务环中服务节点运行不同的工作负载, 并基于协同任务作相互的备份, 且负载可以互相分担, 各节点既是某些任务的主服务节点, 又是其他任务的备份服务节点。为了确保系统服务环的高可用性, 需要及时检测节点的各种故障并迅速做出处理。本动态容错机制中服务节点监控采用服务环中相邻节点间相互发送心跳消息探测节点是否失效。
( 3) 失效管理
服务节点一致性控制保证任务服务环中主备份节点具有相同的状态, 当检测到某一节点失效后, 失效管理保证该服务节点上的每一个协同任务都能找到相应的节点作为替代节点, 系统对任务提供的服务不会“断流”, 具体描述如下: 假设k 元系统服务环上节点A 失效, 则其上的任一冗余度为r 的协同任务T在其对应的任务服务环T—R=( p, r) 中存在的主服务节点即节点A 不能提供服务, 必需从其r- 1 个备份服务节点中寻找一个替代节点作为新的主服务节点。
利用心跳探测机制检测到服务节点N ( i) 失效后, 首先为N( i) 上任务寻找替代的服务节点, 重构服务环; 然后查询持有令牌的节点是否依然满足负载小于阈值的条件, 如果不满足, 则需要传递令牌到下一个负载小于阈值的有效节 点。算法描述如下:
算法1 节点N( i) 失效后服务环重构算法Node-