CN105245367A - 一种序列号生成方法及电子设备 - Google Patents
一种序列号生成方法及电子设备 Download PDFInfo
- Publication number
- CN105245367A CN105245367A CN201510645274.0A CN201510645274A CN105245367A CN 105245367 A CN105245367 A CN 105245367A CN 201510645274 A CN201510645274 A CN 201510645274A CN 105245367 A CN105245367 A CN 105245367A
- Authority
- CN
- China
- Prior art keywords
- electronic equipment
- sequence number
- application
- topology information
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种序列号生成方法及电子设备,该方法包括:接收客户端发送的序列号请求;序列号请求中携带有第一应用的应用信息;根据应用信息和预存的拓扑信息,从第一集群中确定出与第一应用对应的目标电子设备;由目标电子设备从预存的与第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号;并发送目标序列号至所述客户端。本发明提供的方法及电子设备用以解决现有技术中的序列号生成方法存在的不能兼顾适应大规模系统和保证序列号递增的技术问题。实现了兼顾适应大规模系统和保证序列号递增的技术效果。
Description
技术领域
本发明涉及电子技术领域,尤其涉及一种序列号生成方法及电子设备。
背景技术
序列号用于唯一标示系统元素,被广泛地应用于互联网领域,可以优化系统存储,简化模块交互。随着互联网大数据时代的到来,数据规模和业务规模迅速膨胀,从性能、存储、可用性、扩展性等几个方面都给现有的序列号生成方法带来严峻的挑战。
目前采用的序列号生成方法有两种:一是,集中式序列号生成方法,即由一个全局模块负责生成序列号,可以保证序列号从0开始连续递增,但这种简单的序列号生成方法采用单设备单点生成序列号,无法适应大规模分布式系统的序列号生成要求;二是,分布式序列号生成方法,即利用数据库的自增步长来生成序列号,典型的配置是两个节点,一个生成偶数序列号,一个生成奇数序列号,这种序列号生成方法虽然可以通过设置自增步长来配置服务的节点数量,以支持大规模系统的序列号生成要求,但不能保证序列号的严格递增,无法满足对时序有严格要求的应用场景。
可见,现有的序列号生成方法存在不能兼顾适应大规模系统和保证序列号递增的技术问题。
发明内容
本发明提供一种序列号生成方法及电子设备,用以解决现有技术中的序列号生成方法存在的不能兼顾适应大规模系统和保证序列号递增的技术问题。
第一方面,提供一种序列号生成方法,所述方法应用于第一集群的第一电子设备中,所述第一集群包括至少一个所述第一电子设备,所述方法包括:
接收客户端发送的序列号请求;所述序列号请求中携带有第一应用的应用信息;
根据所述应用信息和接收所述序列号请求的所述第一电子设备中预存的拓扑信息,从所述第一集群中确定出与所述第一应用对应的第一电子设备作为目标电子设备;所述拓扑信息包括所述第一集群中的第一电子设备与需要服务的应用的对应关系;
当接收所述序列号请求的所述第一电子设备是所述目标电子设备时,从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号发送至所述客户端;
当接收所述序列号请求的所述第一电子设备不是所述目标电子设备时,转发所述序列号请求至所述目标电子设备,以使所述目标电子设备从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号发送至所述客户端。
优选的,所述方法还包括:
当确定第二电子设备中存储的拓扑信息发生了更新时,获取所述第二电子设备中存储的更新后的拓扑信息;
用所述更新后的拓扑信息替换所述第一电子设备中预存的拓扑信息。
优选的,所述确定第二电子设备中存储的拓扑信息发生了更新包括:
接收到所述第二电子设备发送的拓扑信息更新通知;或
发送拓扑信息查询请求至所述第二电子设备;接收所述第二电子设备基于所述拓扑信息查询请求反馈的拓扑信息更新通知。
优选的,所述方法还包括:
接收所述第二电子设备发送的更新指令;所述更新指令携带有所述第一集群中的第一电子设备的当前状态和所述需要服务的应用的当前状态;
根据所述第一集群中的第一电子设备的当前状态和所述需要服务的应用的当前状态计算得到当前所述第一集群中的第一电子设备与需要服务的应用的对应关系;
发送所述当前所述第一集群中的第一电子设备与需要服务的应用的对应关系至所述第二电子设备,以更新所述第二电子设备中存储的拓扑信息。
优选的,所述从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号之前,还包括:
确定所述预分配序列号集合是否为空;
当所述预分配序列号集合为空时,发送预分配请求至所述第二电子设备;所述预分配请求中携带有所述第一应用的应用信息,用以获得所述第二电子设备基于所述应用信息返回的与所述第一应用对应的新序列号;
接收所述第二电子设备基于所述预分配请求返回的新序列号,并根据所述新序列号更新所述预分配序列号集合。
优选的,更新后的所述预分配序列号集合中最小的序列号大于更新前的所述预分配序列号集合中最大的序列号。
第二方面,提供一种电子设备,第一集群包括至少一个所述电子设备,所述电子设备包括:
第一接收单元,用于接收客户端发送的序列号请求;所述序列号请求中携带有第一应用的应用信息;
设备确定单元,用于根据所述应用信息和自身设备中预存的拓扑信息,从所述第一集群中确定出与所述第一应用对应的电子设备作为目标电子设备;所述拓扑信息为所述第一集群中的电子设备与需要服务的应用的对应关系;判断单元,用于判断自身设备是否是所述目标电子设备;
序列号确定单元,用于当所述判断单元的判断结果为是时,从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号;
第一发送单元,用于将所述序列号确定单元确定的目标序列号发送至所述客户端;
第二发送单元,用于当所述判断单元的判断结果为否时,转发所述序列号请求至所述目标电子设备,以使所述目标电子设备从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号发送至所述客户端。
优选的,所述电子设备还包括:
更新确定单元,用于确定存储电子设备中存储的拓扑信息发生了更新时,触发更新获取单元;
所述更新获取单元,用于获取所述存储电子设备中存储的更新后的拓扑信息;
更新单元,用于用所述更新后的拓扑信息替换所述电子设备中预存的拓扑信息。
优选的,所述更新确定单元包括:
第一更新接收子单元,用于接收所述存储电子设备发送的拓扑信息更新通知;或
请求发送子单元和第二更新接收子单元;
其中,所述请求发送子单元,用于发送拓扑信息查询请求至所述存储电子设备;
所述第二更新接收子单元,用于接收所述存储电子设备基于所述拓扑信息查询请求反馈的拓扑信息更新通知。
优选的,所述电子设备还包括:
第二接收单元,用于接收所述存储电子设备发送的更新指令;所述更新指令携带有所述第一集群中的电子设备的当前状态和所述需要服务的应用的当前状态;
拓扑信息计算单元,用于根据所述第一集群中的电子设备的当前状态和所述需要服务的应用的当前状态计算得到当前所述第一集群中的电子设备与需要服务的应用的对应关系;
第三发送单元,用于发送所述当前所述第一集群中的电子设备与需要服务的应用的对应关系至所述存储电子设备,以更新所述存储电子设备中存储的拓扑信息。
优选的,所述电子设备还包括:
空集确定单元,用于确定所述预分配序列号集合为空时,触发序列号获取单元;
所述序列号获取单元,用于发送预分配请求至所述存储电子设备;所述预分配请求中携带有所述第一应用的应用信息,用以获得所述存储电子设备基于所述应用信息返回的与所述第一应用对应的新序列号;
第三接收单元,用于接收所述存储电子设备基于所述预分配请求返回的新序列号;
序列号更新单元,用于根据所述新序列号更新所述预分配序列号集合。
优选的,更新后的所述预分配序列号集合中最小的序列号大于更新前的所述预分配序列号集合中最大的序列号。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例提供的序列号生成方法,采用分布式的集群架构来生成序列号,具体的,第一集群中包括多个第一电子设备,每个第一电子设备与需要服务的应用之间有一定的对应关系,由各第一电子设备为与之对应的应用生成序列号。一方面,通过预存的应用与第一电子设备的对应关系来确定目标电子设备,保证同一时间,集群中只有一个电子设备能为该应用提供序列号生成服务,且每次都在该应用的预分配序列号集合中确定出数值最小的序列号作为当前序列号,保证了同一个应用的序列号的递增要求;另一方面,当系统需要扩容时,只要增加集群中的第一电子设备的数量即可实现,从而能够满足大规模分布式系统的多应用序列号生成需求,且兼顾实现了适应大规模系统和保证序列号递增的技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中序列号生成方法对应的系统示意图;
图2为本发明实施例一中的序列号生成方法的流程图;
图3为本发明实施例二中的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在介绍本发明实施例之前,先介绍本发明实施例中序列号生成方法所对应的系统,如图1所示,图1为一种用于实施本发明序列号生成方法的系统,该系统包括:客户端101、第一集群102、第二电子设备103,所述第一集群102包括N个第一电子设备104,N为大于1的整数。
其中,所述客户端101可以为智能手机、智能手表或电脑,在此不作限制;所述客户端101可以是支持C++、JAVA或超级文本预处理语言(Hypertextreprocessor,PHP)等多种语言的设备,在此不作限制。
所述客户端101与所述第一集群102的通信方式、所述第一集群102与第二电子设备103的通信方式可以是基于通用移动通信系统(UniversalMobileTelecommunicationsSystem,UMTS),也可以是基于全球移动通信(GlobalSystemForMobileCommunication,GSM)系统、还可以是基于长期演进(LongTermEvolution,LTE)通信系统,还可以是基于码分多址(CodeDivisionMultipleAccess,CDMA)通信系统,还可以是基于时分同步码分多址(TimeDivision-SynchronousCodeDivisionMultipleAccess,TD-SCDMA)通信系统等,在本申请中不作限制。
实施例一
本实施例提供一种序列号生成方法,所述方法应用于第一集群102的第一电子设备104中,所述第一集群102包括至少一个所述第一电子设备104,如图2所示,所述方法包括:
步骤S201,接收客户端发送的序列号请求;所述序列号请求中携带有第一应用的应用信息。
步骤S202,根据所述第一应用的应用信息和接收所述序列号请求的所述第一电子设备中预存的拓扑信息,从所述第一集群102中确定出与所述第一应用对应的第一电子设备作为目标电子设备;所述拓扑信息包括所述第一集群中的第一电子设备与需要服务的应用的对应关系。
在步骤S202之后,判断接收所述序列号请求的所述第一电子设备是否是所述目标电子设备,如果是,进入步骤S203;如果否,进入步骤S204。
步骤S203,当接收所述序列号请求的所述第一电子设备是所述目标电子设备时,从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号,并发送所述目标序列号至所述客户端;
步骤S204,当接收所述序列号请求的所述第一电子设备不是所述目标电子设备时,转发所述序列号请求至所述目标电子设备,以使所述目标电子设备从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号并发送至所述客户端。
本申请实施例提供的序列号生成方法,采用分布式的集群架构来生成序列号,具体的,第一集群中包括多个第一电子设备,每个第一电子设备与需要服务的应用之间有一定的对应关系,由各第一电子设备为与之对应的应用生成序列号。一方面,通过预存的应用与第一电子设备的对应关系来确定目标电子设备,保证同一时间,集群中只有一个电子设备能为该应用提供序列号生成服务,且每次都在该应用的预分配序列号集合中确定出数值最小的序列号作为当前序列号,保证了同一个应用的序列号的递增要求;另一方面,当系统需要扩容时,只要增加集群中的第一电子设备的数量即可实现,从而能够满足大规模分布式系统的多应用序列号生成需求,且兼顾实现了适应大规模系统和保证序列号递增的技术效果。
下面分别从序列号的分配和系统的扩容及变更两方面来详细介绍上述序列号生成方法的具体实现步骤。
第一方面,介绍序列号的分配。
首先,执行步骤S201,接收客户端101的序列号请求;所述序列号请求中携带有第一应用的应用信息。
在具体实施过程中,所述客户端101可以直接发送序列号请求至第一集群102中的任一第一电子设备104,也可以先将序列号请求发送至负载均衡器,再通过负载均衡器将所述序列号请求随机转发至第一集群102中的一个第一电子设备104,在本实施例中不作限制。
具体来讲,所述序列号请求中携带的第一应用的应用信息表征了第一应用的种类和/或名称等特征,接收到所述应用信息的第一电子设备104能根据所述应用信息确定出需要分配的与所述第一应用对应的序列号。
在本申请实施例中,考虑到当第一集群102中的第一电子设备数量发生变化或需要服务的应用数量发生变化时,应用与第一电子设备的对应关系也会发生变化,需要保证第一电子设备104中预存的拓扑信息是当前最新的版本,故在通过步骤S201接收到序列号请求后,还需要保证预存的所述拓扑信息为最新的版本,下面详细介绍保证的方法。
在本申请实施例中,所述第一集群102包括的每个所述第一电子设备104中预存有所述拓扑信息;所述拓扑信息具体为需要服务的全部应用与全部第一电子设备104的对应关系。第一电子设备104通过所述拓扑信息来确定所述第一应用对应的目标电子设备。一般而言,需要服务的应用与第一电子设备104之间可以是多对一的关系,即为每个第一电子设备104可以为一个或多个应用提供序列号;但一般每个应用的序列号仅由一个第一电子设备104来提供。这是为了保证同一时间,集群中只有一个第一电子设备104为一个应用提供序列号生成服务,且每次都在该应用的预分配序列号集合中确定出数值最小的序列号作为当前序列号,保证了同一个应用的序列号的递增要求。
具体来讲,保证所述拓扑信息为最新的版本,就是保证所述拓扑信息与第二电子设备103中存储的最新拓扑信息一致。其中,该第二电子设备103用于存储最新的拓扑信息,且用于存储需要为每个应用分配的所有的序列号。
需要说明的是,第一集群102中包括的第一电子设备104的状态是实时变化的,例如,某些第一电子设备新加入第一集群或某些第一电子设备退出第一集群等,对于新加入的第一电子设备需要为其设定对应的需要服务的应用,而对于退出的第一电子设备,需要为该第一电子设备对应的应用设定新的用于提供序列号的第一电子设备。同时,需要服务的应用的状态也是会发生变化的。基于此,当第一集群102中包括的第一电子设备104的状态发生了变化和/或需要服务的应用的状态发生了变化时,需要及时对拓扑信息进行更新。该更新可以是,根据所述第一集群102包括的第一电子设备104的当前状态和需要服务的应用集合的当前状态计算出的需要服务的全部应用与全部第一电子设备104的对应关系。并将更新后的拓扑信息保存在第二电子设备103中,以便第一集群102中的各第一电子设备104可以及时从所述第二电子设备103中获取得到最新的拓扑信息,从而在第一电子设备104的状态发生了变化和/或需要服务的应用的状态发生变化时,仍能保证为每个应用提供正确的序列号。
在本申请实施例中,保证所述拓扑信息为最新的版本的具体步骤为:当所述第一电子设备104确定第二电子设备103中存储的拓扑信息发生了更新时,获取所述第二电子设备103中存储的更新后的拓扑信息;用所述更新后的拓扑信息替换所述第一电子设备104中预存的拓扑信息。
在具体实施过程中,确定第二电子设备103中存储的拓扑信息发生了更新至少可以包括下述两种确定方法:
第一种是,第一电子设备104每次接收到序列号请求后,主动与所述第二电子设备103通信获取所述拓扑信息的更新信息,具体步骤为:第一电子设备104发送拓扑信息查询请求至所述第二电子设备;接收所述第二电子设备103基于所述拓扑信息查询请求反馈的拓扑信息更新通知。
需要说明的是,当第二电子设备103接收到所述第一电子设备104发送的拓扑信息查询请求时,确定自身存储的拓扑信息是否发生了更新,如果发生了更新,则反馈拓扑信息更新通知至所述第一电子设备104;如果没有发生更新,则可以选择忽略该拓扑信息查询请求。
第二种是,第二电子设备103每次更新了最新拓扑信息后,均会实时通知第一集群102的全部第一电子设备104,以使第一集群102的第一电子设备104均能及时更新所述拓扑信息为最新版本,具体步骤为:第一电子设备104接收到所述第二电子设备103发送的拓扑信息更新通知。
本申请实施例中,不论基于哪种具体情况,第一电子设备104在接收到第二电子设备103发送的拓扑信息更新通知后,均可以依据该拓扑信息更新通知确定第二电子设备103中存储的拓扑信息发生了更新时,从而及时获取所述第二电子设备103中存储的更新后的拓扑信息,并用所述更新后的拓扑信息替换第一电子设备104中预存的拓扑信息。
具体来讲,所述最新拓扑信息中包括有当前最新的应用与第一电子设备的对应关系,所述最新拓扑信息的具体更新方式将在下述第二方面,系统的扩容及变更中详细介绍。
本申请实施例中,如果所述客户端101发送了所述序列号请求后,在一定时间长度内没有接收到第一集群102中的第一电子设备104反馈的目标序列号,则客户端101可以重新发起序列号分配请求。
本申请实施例中,设置由第二电子设备103来存储所述拓扑信息,第一电子设备104与第二电子设备103之间实现通信连接。由此可以实现,通过所述第二电子设备103统一管理和协调第一集群102中存储的所述对应关系,在第一集群102中的第一电子设备数量和/或需要服务的应用状态发生变化从而导致拓扑信息发生更新时,能统一的对第一集群102中各第一电子设备104中存储的拓扑信息进行协调一致,便于系统的扩容。
接下来,介绍步骤S202,在通过上述步骤保证了所述拓扑信息为最新版本后,根据所述应用信息和所述第一电子设备104中预存的拓扑信息,从所述第一集群102中确定出与所述第一应用对应第一电子设备作为目标电子设备。
具体来讲,要使一个应用的序列号满足递增要求,需要保证在同一时间,仅有一个第一电子设备在为一个应用提供序列号生成服务,根据所述拓扑信息从所述第一集群102中只能确定出一个目标电子设备来为第一应用提供服务。
在具体实施过程中,如果根据所述拓扑信息没有查找到与所述第一应用对应的目标电子设备,则所述第一电子设备104可以停止进行序列号生成服务,并返回表示应用不合法的提示信息至所述客户端101。
具体来讲,没有查找到与所述第一应用对应的目标电子设备的情况主要为所述第一应用还不属于规定的所述第一电子设备104需要提供序列号生成服务的应用,即所述拓扑信息中没有与所述第一应用相关的信息。这种情况很可能是由于拓扑信息没有及时更新造成的,或者是第二电子设备中的拓扑信息还未更新完毕造成的。基于此,当所述客户端101接收到所述应用不合法提示信息时,可以等一段时间后再重新发起序列号生成请求,如果一直接收到所述应用不合法提示信息,可以联系该应用的服务厂商先申请成为所述第一电子设备104需要提供序列号生成服务的应用后,再发起序列号生成请求。
再下来,执行步骤S203或步骤S204:
步骤S203,当接收所述序列号请求的所述第一电子设备是所述目标电子设备时,从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号,并发送所述目标序列号至所述客户端101。
步骤S204,当接收所述序列号请求的所述第一电子设备不是所述目标电子设备时,发送所述序列号请求至所述目标电子设备,以使所述目标电子设备从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号,并发送所述目标序列号至所述客户端101。
在具体实施过程中,所述最小的序列号可以是数值最小的序列号,也可以是按预设大小规则预先排列的最小的序列号,在此不作限制。
在具体实施过程中,因为序列号请求是随机分配给任一第一电子设备104的;故当所述目标电子设备正在为客户端A分配与所述第一应用对应的序列号时,有可能会又接收到客户端B发送的第二应用对应的序列号请求,则所述目标电子设备会按照接收所述序列号请求的先后顺序来依次进行请求处理;所述第一应用与所述第二应用可以为同一应用,也可以为不同应用。
在本申请实施例中,所述从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号之前,还包括:
确定所述预分配序列号集合是否为空;
当所述预分配序列号集合为空时,发送预分配请求至所述第二电子设备;所述预分配请求中携带有所述第一应用的应用信息,用以获得所述第二电子设备基于所述应用信息返回的与所述第一应用对应的新序列号;
接收所述第二电子设备基于所述预分配请求返回的新序列号,并根据所述新序列号更新所述预分配序列号集合。
其中,所述第二电子设备103与所述第一集群中的所述第一电子设备104均实现通信连接。
在具体实施过程中,第二电子设备103每次返回的所述第一应用对应的新序列号集合中数值最小的序列号大于上一次返回的所述第一应用对应的序列号集合中数值最大的序列号,以保证给同一应用分配的序列号在时间上呈递增分配。换言之,即为第一电子设备104接收到的更新后的所述预分配序列号集合中最小的序列号大于更新前的所述预分配序列号集合中最大的序列号。
例如,当需要为应用A分配序列号时:
应用A对应的目标电子设备中存储的与应用A对应的预分配序列号集合为空,没有序列号了,则目标电子设备发送预分配请求至第二电子设备103,预分配请求中携带了应用A的应用信息。
第二电子设备103接收到预分配请求后,从历史信息中查询到之前已经给第一集群分配了0001~0064作为与应用A对应的序列号,则本次递增返回0065~0128作为更新后的新序列号至所述目标电子设备。
目标电子设备将更新后的序列号0065~0128存储至预分配序列号集合中;再确定其中数值最小的0065作为目标序列号,并发送0065至所述客户端101。
在具体实施过程中,第二电子设备103每次返回的新序列号的数量,和新序列号之间的步长不作限制。
在本申请实施例中,所述应用信息中包括所述第一应用的序列号字节数,以使所述第二电子设备能根据所述序列号字节数返回符合所述序列号字节数的所述新序列号。
例如,当第二电子设备103接收到预分配请求后:
如果从应用信息中确定所述第一应用的序列号字节数为64bit,则返回64bit的新序列号至所述目标电子设备;
如果从应用信息中确定所述第一应用的序列号字节数为32bit,则返回32bit的新序列号至所述目标电子设备。
在具体实施过程中,如果目标电子设备发送所述预分配请求至第二电子设备103后,经过预设的时长都没有接收到所述第二电子设备103返回的新序列号,则所述目标电子设备可以停止提供序列号生成服务,并返回表征预分配失败的提示信息至客户端101。
第二方面,介绍系统的扩容及变更。
下面分系统的扩容,和系统的故障处理两种情况来介绍系统的扩容和变更:
第一种情况,系统的扩容。
在具体实施过程中,在第一集群102的状态和/或需要服务的应用状态发生变化后,需要重新计算第一集群中102中的第一电子设备104和需要服务的应用之间的对应关系来更新拓扑信息,具体来讲,可以是由人工或第一集群102重新计算所述对应关系;也可以是由第二电子设备103计算所述对应关系后更新所述拓扑信息的,在本实施例中不作限制。
下面主要介绍由第一集群102来重新计算所述对应关系的实施步骤:
第一电子设备104接收所述第二电子设备发送的更新指令;所述更新指令携带有所述第一集群中的第一电子设备的当前状态和所述需要服务的应用的当前状态;
第一电子设备104根据所述第一集群中的第一电子设备的当前状态和所述需要服务的应用的当前状态计算得到当前所述第一集群中的第一电子设备与需要服务的应用的对应关系;
第一电子设备104发送所述当前所述第一集群中的第一电子设备与需要服务的应用的对应关系至所述第二电子设备,以更新所述第二电子设备中存储的拓扑信息。
具体来讲:
首先,在运维人员修改、添加或减少第一集群102中的第一电子设备104,或者在运维人员修改、添加或减少需要服务的应用集合后,运维人员将修改的信息输入所述第二电子设备103,以使第二电子设备103监测到所述第一集群102的当前状态,和/或所述应用集合的当前状态发生变化,并基于所述变化生成更新指令;所述更新指令中携带有变化后的所述第一集群的当前状态和所述应用集合的当前状态;所述更新指令用于从所述第一集群中指定一第一电子设备来计算所述对应关系。
具体来讲,所述更新指令可以包括配置更改指令和分布式锁,所述分布式锁是控制分布式系统之间同步访问共享资源的一种方式。用于协调一个集群中各个电子设备的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。
接下来,第二电子设备103发送所述更新指令至所述第一集群102;所述更新指令包括配置更改指令和分布式锁。
所述第一集群102中的所有第一电子设备104均接收到所述第二电子设备103发送的表征所述第一集群102的当前状态和/或所述应用集合的当前状态发生变化的配置更改指令后,暂停正在进行的序列号生成服务;而第一集群102中只会有一个第一电子设备104接收到所述第二电子设备103发送的所述分布式锁;确定接收到所述分布式锁的第一电子设备104为主电子设备。
具体来讲,所述分布式锁是随机发送的,第一集群102中的第一电子设备104随机去接受所述分布式锁,只有一个第一电子设备104会接受到所述分布式锁。
再下来,所述主电子设备基于所述变化后的所述第一集群102的当前状态和所述应用集合的当前状态,重新计算出应用与第一电子设备的对应关系,使一个应用由一个第一电子设备提供序列号;并发送计算出的所述对应关系至所述第二电子设备103,以更新所述第二电子设备103的最新拓扑信息。
在本申请实施例中,使用所述分布式锁来确定出主电子设备来计算所述映射关系,并锁住其余没有获得所述分布式锁的第一电子设备,使其处于暂停状态,以避免多个第一电子设备同时进行计算导致的第一集群计算资源使用过大,及避免多个第一电子设备的处理步调冲突。
第二电子设备103再将更新后的最新拓扑信息下发给第一集群102中的所有第一电子设备104,以使第一电子设备104更新存储的所述拓扑信息;或者第一集群102中的第一电子设备104主动发送拓扑信息查询请求至所述第二电子设备103,以获取新的最新拓扑信息来更新存储的所述拓扑信息。
在第一集群102中的所有第一电子设备104均更新了所述拓扑信息后,第一集群102中的第一电子设备104重新开始提供序列号生成服务。
在具体实施过程中,重新开始提供序列号生成服务后:
如果第一电子设备104正在为第一应用提供服务,而更新后,第一电子设备104不再是与第一应用对应的目标电子设备,则第一电子设备将第一应用对应的序列号生成请求路由发送至当前与第一应用对应的目标电子设备上,以使目标电子设备在恢复服务后为第一应用提供序列号生成服务。
如果第一电子设备104正在为第一应用提供服务,而更新后,第一电子设备104还是与第一应用对应的目标电子设备,则第一电子设备104恢复服务后继续为第一应用提供序列号生成服务。
具体来讲,通过所述第二电子设备103来统一协调拓扑信息的更新,和通过所述第二电子设备103来统一进行新序列号预分配,能实现仅对第二电子设备上的信息的更改来方便完成系统的扩容或更新,提高了系统扩容的便利度。
第二种情况,系统的故障处理。
当第一集群102中的某第一电子设备发生故障时,其处理方法与上述第一种情况中的扩容处理步骤基本相同,不同在于:
扩容时,是由运维人员将修改的信息输入所述第二电子设备103。
在出现故障时,是第二电子设备103检测到与故障的第一电子设备之间的连接异常,并删除存储的该节点的存活信息,当第二电子设备103中存储的存活信息发生变化时,会触发以使第二电子设备103监测到所述第一集群102的当前状态发生变化,并生成更新指令。
接下来的重新计算最新拓扑信息和更新第一集群102中拓扑信息的步骤与上述第一种情况相同。
进一步,在发生故障的第一电子设备经过维修或重启恢复正常之后,可以自动接入所述第一集群102,不需要运维人员额外操作,具体步骤如下:
新启动的第一电子设备会自动发送请求至所述第二电子设备103,以获取所述第二电子设备上存储的设备信息,并根据所述设备信息判断自己是否是合法的允许加入的第一集群102的电子设备,获得第一判断结果;
如果所述第一判断结果为否,则停止加入所述第一集群102;
如果所述第一判断结果为是,则发送自己的存活信息至所述第二电子设备103,以使第二电子设备103增加该节点的存活信息,当第二电子设备103中存储的存活信息发生变化时,会触发以使第二电子设备103监测到所述第一集群102的当前状态发生变化,并生成更新指令;
接下来的重新计算最新拓扑信息和更新第一集群102中拓扑信息的步骤与上述第一种情况相同。
基于同一发明构思,本申请还提供了与实施例一中的方法对应的电子设备:
实施例二
本实施例提供一种电子设备,第一集群包括至少一个所述电子设备,如图3所示,所述电子设备包括:第一接收单元301、设备确定单元302、判断单元303、序列号确定单元304、第一发送单元305以及第二发送单元306。
所述第一接收单元301,用于接收客户端发送的序列号请求;所述序列号请求中携带有第一应用的应用信息。
所述设备确定单元302,用于根据所述应用信息和自身设备中预存的拓扑信息,从所述第一集群中确定出与所述第一应用对应的电子设备作为目标电子设备;所述拓扑信息为所述第一集群中的电子设备与需要服务的应用的对应关系。
所述判断单元303,用于判断自身设备是否是所述目标电子设备。
所述序列号确定单元304,用于当所述判断单元303的判断结果为是时,从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号。
所述第一发送单元305,用于将所述序列号确定单元确定的目标序列号发送至所述客户端。
所述第二发送单元306,用于当所述判断单元303的判断结果为否时,转发所述序列号请求至所述目标电子设备,以使所述目标电子设备从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号发送至所述客户端。
在具体实施过程中,所述第一电子设备可以为台式电脑、笔记本或服务器等,在本实施例中不再一一列举。
在本实施例中,所述的电子设备,还包括:更新确定单元、更新获取单元和更新单元。
所述更新确定单元,用于确定存储电子设备中存储的拓扑信息发生了更新时,触发更新获取单元。
所述更新获取单元,用于获取所述存储电子设备中存储的更新后的拓扑信息。
所述更新单元,用于用所述更新后的拓扑信息替换所述电子设备中预存的拓扑信息。
在本实施例中,所述更新确定单元可以包括:第一更新接收子单元,用于接收所述存储电子设备发送的拓扑信息更新通知。或者,
所述更新确定单元还可以包括:请求发送子单元和第二更新接收子单元。
其中,所述请求发送子单元,用于发送拓扑信息查询请求至所述存储电子设备。
所述第二更新接收子单元,用于接收所述存储电子设备基于所述拓扑信息查询请求反馈的拓扑信息更新通知。
在本实施例中,所述电子设备还包括:第二接收单元、拓扑信息计算单元和第三发送单元。
其中,所述第二接收单元,用于接收所述存储电子设备发送的更新指令;所述更新指令携带有所述第一集群中的电子设备的当前状态和所述需要服务的应用的当前状态。
所述拓扑信息计算单元,用于根据所述第一集群中的电子设备的当前状态和所述需要服务的应用的当前状态计算得到当前所述第一集群中的电子设备与需要服务的应用的对应关系。
所述第三发送单元,用于发送所述当前所述第一集群中的电子设备与需要服务的应用的对应关系至所述存储电子设备,以更新所述存储电子设备中存储的拓扑信息。
在本实施例中,所述电子设备还包括:空集确定单元、序列号获取单元、第三接收单元和序列号更新单元。
所述空集确定单元,用于确定所述预分配序列号集合为空时,触发序列号获取单元。
所述序列号获取单元,用于发送预分配请求至所述存储电子设备;所述预分配请求中携带有所述第一应用的应用信息,用以获得所述存储电子设备基于所述应用信息返回的与所述第一应用对应的新序列号;
所述第三接收单元,用于接收所述存储电子设备基于所述预分配请求返回的新序列号。
所述序列号更新单元,用于根据所述新序列号更新所述预分配序列号集合。
在本实施例中,更新后的所述预分配序列号集合中最小的序列号大于更新前的所述预分配序列号集合中最大的序列号。
在本实施例中,所述应用信息中包括所述第一应用的序列号字节数,以使所述第二电子设备能根据所述序列号字节数返回符合所述序列号字节数的所述新序列号。
本实施例中提供的第一电子设备与实施例一中的序列号生成方法,是基于同一发明构思下的两个方面,在前面已经对方法的实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚的了解本实施例中的设备结构及实施过程,为了说明书的简洁,在此就不再赘述了。
上述本申请实施例中的技术方案,具有至少一个如下的技术效果或优点:
本申请实施例提供的序列号生成方法,采用分布式的集群架构来生成序列号,具体的,第一集群中包括多个第一电子设备,每个第一电子设备与需要服务的应用之间有一定的对应关系,由各第一电子设备为与之对应的应用生成序列号。一方面,通过预存的应用与第一电子设备的对应关系来确定目标电子设备,保证同一时间,集群中只有一个电子设备能为该应用提供序列号生成服务,且每次都在该应用的预分配序列号集合中确定出数值最小的序列号作为当前序列号,保证了同一个应用的序列号的递增要求;另一方面,当系统需要扩容时,只要增加集群中的第一电子设备的数量即可实现,从而能够满足大规模分布式系统的多应用序列号生成需求,且兼顾实现了适应大规模系统和保证序列号递增的技术效果。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种序列号生成方法,其特征在于,所述方法应用于第一集群的第一电子设备中,所述第一集群包括至少一个所述第一电子设备,所述方法包括:
接收客户端发送的序列号请求;所述序列号请求中携带有第一应用的应用信息;
根据所述应用信息和接收所述序列号请求的所述第一电子设备中预存的拓扑信息,从所述第一集群中确定出与所述第一应用对应的第一电子设备作为目标电子设备;所述拓扑信息包括所述第一集群中的第一电子设备与需要服务的应用的对应关系;
当接收所述序列号请求的所述第一电子设备是所述目标电子设备时,从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号发送至所述客户端;
当接收所述序列号请求的所述第一电子设备不是所述目标电子设备时,转发所述序列号请求至所述目标电子设备,以使所述目标电子设备从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号发送至所述客户端。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当确定第二电子设备中存储的拓扑信息发生了更新时,获取所述第二电子设备中存储的更新后的拓扑信息;
用所述更新后的拓扑信息替换所述第一电子设备中预存的拓扑信息。
3.如权利要求2所述的方法,其特征在于,所述确定第二电子设备中存储的拓扑信息发生了更新,包括:
接收到所述第二电子设备发送的拓扑信息更新通知;或
发送拓扑信息查询请求至所述第二电子设备;接收所述第二电子设备基于所述拓扑信息查询请求反馈的拓扑信息更新通知。
4.如权利要求2所述的方法,其特征在于,所述方法还包括:
接收所述第二电子设备发送的更新指令;所述更新指令携带有所述第一集群中的第一电子设备的当前状态和所述需要服务的应用的当前状态;
根据所述第一集群中的第一电子设备的当前状态和所述需要服务的应用的当前状态计算得到当前所述第一集群中的第一电子设备与需要服务的应用的对应关系;
发送所述当前所述第一集群中的第一电子设备与需要服务的应用的对应关系至所述第二电子设备,以更新所述第二电子设备中存储的拓扑信息。
5.如权利要求1-4任一所述的方法,其特征在于,所述从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号之前,还包括:
确定所述预分配序列号集合是否为空;
当所述预分配序列号集合为空时,发送预分配请求至所述第二电子设备;所述预分配请求中携带有所述第一应用的应用信息,用以获得所述第二电子设备基于所述应用信息返回的与所述第一应用对应的新序列号;
接收所述第二电子设备基于所述预分配请求返回的新序列号,并根据所述新序列号更新所述预分配序列号集合。
6.如权利要求5所述的方法,其特征在于,更新后的所述预分配序列号集合中最小的序列号大于更新前的所述预分配序列号集合中最大的序列号。
7.一种电子设备,其特征在于,第一集群包括至少一个所述电子设备,所述电子设备包括:
第一接收单元,用于接收客户端发送的序列号请求;所述序列号请求中携带有第一应用的应用信息;
设备确定单元,用于根据所述应用信息和自身设备中预存的拓扑信息,从所述第一集群中确定出与所述第一应用对应的电子设备作为目标电子设备;所述拓扑信息为所述第一集群中的电子设备与需要服务的应用的对应关系;
判断单元,用于判断自身设备是否是所述目标电子设备;
序列号确定单元,用于当所述判断单元的判断结果为是时,从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号;
第一发送单元,用于将所述序列号确定单元确定的目标序列号发送至所述客户端;
第二发送单元,用于当所述判断单元的判断结果为否时,转发所述序列号请求至所述目标电子设备,以使所述目标电子设备从预存的与所述第一应用对应的预分配序列号集合中确定出最小的序列号,作为目标序列号发送至所述客户端。
8.如权利要求7所述的电子设备,其特征在于,所述电子设备还包括:
更新确定单元,用于确定存储电子设备中存储的拓扑信息发生了更新时,触发更新获取单元;
所述更新获取单元,用于获取所述存储电子设备中存储的更新后的拓扑信息;
更新单元,用于用所述更新后的拓扑信息替换所述电子设备中预存的拓扑信息。
9.如权利要求8所述的电子设备,其特征在于,所述电子设备还包括:
第二接收单元,用于接收所述存储电子设备发送的更新指令;所述更新指令携带有所述第一集群中的电子设备的当前状态和所述需要服务的应用的当前状态;
拓扑信息计算单元,用于根据所述第一集群中的电子设备的当前状态和所述需要服务的应用的当前状态计算得到当前所述第一集群中的电子设备与需要服务的应用的对应关系;
第三发送单元,用于发送所述当前所述第一集群中的电子设备与需要服务的应用的对应关系至所述存储电子设备,以更新所述存储电子设备中存储的拓扑信息。
10.如权利要求7-9任一所述的电子设备,其特征在于,所述电子设备还包括:
空集确定单元,用于确定所述预分配序列号集合为空时,触发序列号获取单元;
所述序列号获取单元,用于发送预分配请求至所述存储电子设备;所述预分配请求中携带有所述第一应用的应用信息,用以获得所述存储电子设备基于所述应用信息返回的与所述第一应用对应的新序列号;
第三接收单元,用于接收所述存储电子设备基于所述预分配请求返回的新序列号;
序列号更新单元,用于根据所述新序列号更新所述预分配序列号集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510645274.0A CN105245367B (zh) | 2015-10-08 | 2015-10-08 | 一种序列号生成方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510645274.0A CN105245367B (zh) | 2015-10-08 | 2015-10-08 | 一种序列号生成方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105245367A true CN105245367A (zh) | 2016-01-13 |
CN105245367B CN105245367B (zh) | 2018-11-13 |
Family
ID=55042878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510645274.0A Active CN105245367B (zh) | 2015-10-08 | 2015-10-08 | 一种序列号生成方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105245367B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108243264A (zh) * | 2016-12-27 | 2018-07-03 | 中国移动通信有限公司研究院 | 一种序列号生成方法及系统 |
CN108804442A (zh) * | 2017-04-27 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 序列号生成方法和装置 |
CN109063088A (zh) * | 2018-07-26 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 序列号的生成方法及装置 |
CN110515956A (zh) * | 2019-09-02 | 2019-11-29 | 中国工商银行股份有限公司 | 序列号获取方法、装置、系统、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139255A (zh) * | 2011-11-30 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 分配资源标识和标识段的方法 |
CN103746963A (zh) * | 2013-12-16 | 2014-04-23 | 深圳百科信息技术有限公司 | 一种sip服务器集群系统及其业务应用请求处理方法 |
CN103873389A (zh) * | 2012-12-12 | 2014-06-18 | 北京百度网讯科技有限公司 | 一种标识资源分配方法及系统 |
-
2015
- 2015-10-08 CN CN201510645274.0A patent/CN105245367B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139255A (zh) * | 2011-11-30 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 分配资源标识和标识段的方法 |
CN103873389A (zh) * | 2012-12-12 | 2014-06-18 | 北京百度网讯科技有限公司 | 一种标识资源分配方法及系统 |
CN103746963A (zh) * | 2013-12-16 | 2014-04-23 | 深圳百科信息技术有限公司 | 一种sip服务器集群系统及其业务应用请求处理方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108243264A (zh) * | 2016-12-27 | 2018-07-03 | 中国移动通信有限公司研究院 | 一种序列号生成方法及系统 |
CN108804442A (zh) * | 2017-04-27 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 序列号生成方法和装置 |
CN108804442B (zh) * | 2017-04-27 | 2022-06-07 | 北京京东尚科信息技术有限公司 | 序列号生成方法和装置 |
CN109063088A (zh) * | 2018-07-26 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 序列号的生成方法及装置 |
WO2020019894A1 (zh) * | 2018-07-26 | 2020-01-30 | 阿里巴巴集团控股有限公司 | 序列号的生成方法及装置 |
CN109063088B (zh) * | 2018-07-26 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 序列号的生成方法及装置 |
CN110515956A (zh) * | 2019-09-02 | 2019-11-29 | 中国工商银行股份有限公司 | 序列号获取方法、装置、系统、电子设备及存储介质 |
CN110515956B (zh) * | 2019-09-02 | 2022-03-25 | 中国工商银行股份有限公司 | 序列号获取方法、装置、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105245367B (zh) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108737270B (zh) | 一种服务器集群的资源管理方法和装置 | |
CN105245367A (zh) | 一种序列号生成方法及电子设备 | |
CN105099761A (zh) | 一种集中管理客户端的配置信息的方法和系统 | |
CN103516690A (zh) | 一种业务处理状态信息查询方法及装置 | |
CN110651256B (zh) | 用于在软件更新期间防止服务中断的系统和方法 | |
CN102855152A (zh) | 升级应用程序中资源文件的方法及系统 | |
CN112416969B (zh) | 分布式数据库中的并行任务调度系统 | |
CN105373420A (zh) | 数据传输方法及装置 | |
CN111858628A (zh) | 基于数据库的管理方法、平台、电子设备及存储介质 | |
CN111770176B (zh) | 流量调度方法及装置 | |
US10216593B2 (en) | Distributed processing system for use in application migration | |
CN102833101A (zh) | 一种分布式网络系统的软件升级方法及设备 | |
CN110069265B (zh) | 服务集群的升级方法、装置及存储介质 | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
CN103281356A (zh) | 一种分发文件的方法及系统 | |
CN102866927A (zh) | 基本输入输出系统的配置方法、装置、以及管理方法 | |
CN103888545A (zh) | 一种分布式系统中全局型数据的处理方法和装置 | |
CN111208974A (zh) | 组件管理方法和装置 | |
CN107305497A (zh) | 版本升级方法及装置 | |
CN105338037A (zh) | 一种动态调度方法及系统 | |
CN109144991B (zh) | 动态分表的方法、装置、电子设备和计算机可存储介质 | |
CN105338058A (zh) | 一种应用更新的方法及装置 | |
CN111064618B (zh) | 一种服务器高可用的实现方法、装置、设备和存储介质 | |
CN101222359B (zh) | 网元中的命令配置方法 | |
CN110177125B (zh) | 一种中间件平台迁移方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |