CN107733957B - 分布式服务配置系统及版本号分配方法 - Google Patents
分布式服务配置系统及版本号分配方法 Download PDFInfo
- Publication number
- CN107733957B CN107733957B CN201610666189.7A CN201610666189A CN107733957B CN 107733957 B CN107733957 B CN 107733957B CN 201610666189 A CN201610666189 A CN 201610666189A CN 107733957 B CN107733957 B CN 107733957B
- Authority
- CN
- China
- Prior art keywords
- version
- service node
- target
- node
- version number
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种分布式服务配置系统及版本号分配方法,属于互联网技术领域。方法包括:业务服务节点向版本服务节点发送版本号获取请求;版本服务节点接收版本号获取请求,获取目标号码段标识对应的第一目标最大版本号,根据第一目标最大版本号及目标用户标识对应的已分配版本号,为目标用户标识分配一个目标版本号;业务服务节点将目标版本号分配给目标用户数据。本发明中版本服务节点在接收到版本号获取请求时,获取目标版本号标识对应的最大版本号,进而为目标用户数据分配版本号。由于版本服务节点无需对应每个用户标识存储一个的最大版本号,而仅存储每个号码段标识与最大版本号之间的对应关系,因此,节省了存储资源,提升了系统性能。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种分布式服务配置系统及版本号分配方法。
背景技术
随着互联网技术的发展,以及通信业务的丰富,越来越多的用户借助终端进行通信。为保证通信过程顺利进行,版本服务节点会为每条用户数据分配一个版本号,该版本号实际上为用户数据的序列号,用于反映用户数据的接收顺序及数量,为避免接收到的用户数据出现后退等现象,按照接收时间顺序,用户数据的版本号采用增量的方式递增。
当前,版本服务节点在为用户数据分配版本号时,针对每个用户标识,为每个用户标识设置一个最大版本号,进而存储每个用户标识对应的最大版本号。当接收到业务服务节点发送的至少携带用户标识的版本号获取请求时,根据该用户标识,查找该用户标识对应的最大版本号,并根据最大版本号及当前已分配的版本号,为该用户数据分配一个版本号。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于互联网上的用户量较大,为每个用户均存储一个最大版本号,将占用版本服务节点的存储资源,进而降低了系统性能。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种分布式服务配置系统及版本号分配方法。所述技术方案如下:
一方面、提供了一种分布式服务配置系统,所述系统包括版本服务节点和业务服务节点;
所述业务服务节点,用于当接收到目标用户数据时,向所述版本服务节点发送版本号获取请求,所述版本号获取请求中至少携带目标用户标识、所述版本服务节点标识、所述目标用户标识所在的目标号码段标识;
所述版本服务节点,用于接收所述版本号获取请求,从预先存储的号码段标识与最大版本号之间的对应关系中,获取所述目标号码段标识对应的第一目标最大版本号,每个号码段包括多个用户标识,根据所述第一目标最大版本号及所述目标用户标识对应的已分配版本号,为所述目标用户标识分配一个目标版本号,向所述业务服务节点发送目标版本号;
所述业务服务节点,用于接收所述目标版本号,将所述目标版本号分配给所述目标用户数据。
在本发明的另一个实施例中,所述版本服务节点,还用于将所述已分配版本号加上预设数值,得到所述目标版本号,将所述目标版本号与所述第一目标最大版本号进行比较;
所述版本服务节点,还用于当所述目标版本号大于所述第一目标最大版本号时,将所述第一目标最大版本号加上预设步长,得到第二目标最大版本号,持久化所述第二目标最大版本号,将所述目标版本号分配给所述目标用户标识;当所述目标版本号小于所述第一目标最大版本号时,将所述目标版本号分配给所述目标用户标识。
在本发明的另一个实施例中,所述系统还包括:Etcd数据库;
所述版本服务节点,还用于在加入所述系统时,向所述Etcd数据库发送节点注册消息,所述节点注册消息包括所述版本服务节点的节点信息;
所述Etcd数据库,用于接收所述节点注册消息,将所述节点信息添加到节点路由表中,向所述系统内的每个版本服务节点发送节点变化消息;
所述版本服务节点,还用于接收所述节点变化消息,从所述Etcd数据库中获取所述节点路由表,根据所述节点路由表,计算本节点对应的号码段,向所述Etcd数据库发送租约申请,所述租约申请中至少携带所述号码段标识、所述版本服务节点标识;
所述Etcd数据库,还用于接收所述租约申请,根据所述租约申请,为所述版本服务节点设置租约信息,向所述业务服务节点发送租约变化消息,所述租约信息包括所述号码段标识、所述版本服务节点标识及租约期限;
所述业务服务节点,还用于接收所述租约变化消息,从所述Etcd数据库中,获取每个业务服务节点的租约信息。
在本发明的另一个实施例中,所述版本服务节点,还用于从所述节点路由表中,获取处于工作状态的多个版本服务节点,根据所述多个版本服务节点,采用指定算法,计算本节点对应的号码段。
在本发明的另一个实施例中,所述Etcd数据库,还用于查找所述号码段标识对应的版本服务节点标识,当所述版本服务节点标识与所述号码段标识对应的版本服务节点标识相同时,将所述号码段分配给所述版本服务节点,所述向所述版本服务节点发送申请成功消息;当所述版本服务节点标识与所述号码段标识对应的版本服务节点标识不相同时,向所述版本服务节点发送申请失败消息;
所述版本服务节点,还用于当接收到所述申请失败消息时,每隔预设时长向所述Etcd数据库发送租约申请,直至接收到申请成功消息。
另一方面、提供了一种版本号分配方法,所述方法应用于分布式服务配置系统中,所述系统包括版本服务节点、业务服务节点及Etcd数据库,所述方法包括:
当接收到目标用户数据时,所述业务服务节点向所述版本服务节点发送版本号获取请求,所述版本号获取请求中至少携带目标用户标识、所述版本服务节点标识、所述目标用户标识所在的目标号码段标识;
所述版本服务节点接收所述版本号获取请求,从预先存储的号码段标识与最大版本号之间的对应关系中,获取所述目标号码段标识对应的第一目标最大版本号,每个号码段包括多个用户标识,根据所述第一目标最大版本号及所述目标用户标识对应的已分配版本号,为所述目标用户标识分配一个目标版本号,向所述业务服务节点发送目标版本号;
所述业务服务节点接收所述目标版本号,将所述目标版本号分配给所述目标用户数据。
在本发明的另一个实施例中,所述根据所述第一目标最大版本号及所述目标用户标识对应的已分配版本号,为所述目标用户标识分配一个目标版本号,包括:
所述版本服务节点将所述已分配版本号加上预设数值,得到所述目标版本号,将所述目标版本号与所述第一目标最大版本号进行比较;
当所述目标版本号大于所述第一目标最大版本号时,所述版本服务节点将所述第一目标最大版本号加上预设步长,得到第二目标最大版本号,持久化所述第二目标最大版本号,将所述目标版本号分配给所述目标用户标识;
当所述目标版本号小于所述第一目标最大版本号时,所述版本服务节点将所述目标版本号分配给所述目标用户标识。
在本发明的另一个实施例中,所述方法还包括:
在加入所述系统时,所述版本服务节点向所述Etcd数据库发送节点注册消息,所述节点注册消息包括所述版本服务节点的节点信息;
所述Etcd数据库接收所述节点注册消息,将所述节点信息添加到节点路由表中,向所述系统内的每个版本服务节点发送节点变化消息;
所述版本服务节点接收所述节点变化消息,从所述Etcd数据库中获取所述节点路由表,根据所述节点路由表,计算本节点对应的号码段,向所述Etcd数据库发送租约申请,所述租约申请中至少携带所述号码段标识、所述版本服务节点标识;
所述Etcd数据库接收所述租约申请,根据所述租约申请,为所述版本服务节点设置租约信息,向所述业务服务节点发送租约变化消息,所述租约信息包括所述号码段标识、所述版本服务节点标识及租约期限;
所述业务服务节点接收所述租约变化消息,从所述Etcd数据库中,获取每个业务服务节点的租约信息。
在本发明的另一个实施例中,所述根据所述节点路由表,计算本节点对应的号码段,包括:
所述版本服务节点从所述节点路由表中,获取处于工作状态的多个版本服务节点,根据所述多个版本服务节点,采用指定算法,计算本节点对应的号码段。
在本发明的另一个实施例中,所述根据所述租约申请,为所述版本服务节点设置租约信息,包括:
所述Etcd数据库,还用于查找所述号码段标识对应的版本服务节点标识,当所述版本服务节点标识与所述号码段标识对应的版本服务节点标识相同时,将所述号码段分配给所述版本服务节点,向所述版本服务节点发送申请成功消息;当所述版本服务节点标识与所述号码段标识对应的版本服务节点标识不相同时,向所述版本服务节点发送申请失败消息;
所述版本服务节点,还用于当接收到所述申请失败消息时,每隔预设时长向所述Etcd数据库发送租约申请,直至接收到申请成功消息。
本发明实施例提供的技术方案带来的有益效果是:
本发明中版本服务节点在接收到版本号获取请求时,获取目标版本号标识对应的最大版本号,进而为目标用户数据分配版本号。由于版本服务节点无需对应每个用户标识存储一个最大版本号,而仅存储每个号码段标识与最大版本号之间的对应关系,因此,节省了存储资源,提升了系统性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种分布式服务配置系统的架构图;
图2是本发明另一个实施例提供的一种版本号分配方法的流程图;
图3是本发明另一个实施例提供的一种版本号分配方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
参见图1,其示出了分布式服务配置系统,该分布式服务配置系统包括:版本服务集群、业务服务组及Etcd集群。版本服务集群包括VS1、VS2、…、VSn等多个版本服务节点101,每个版本服务节点101可以单独设置于一台计算设备上,也可多个版本服务节点设置于一台计算设备,在实际应用中,可根据计算设备的处理能力而定。业务群组包括业务服务节点1、业务服务节点2、…、业务服务节点n等多个业务服务节点102,每个业务服务节点102可以单独设置于一台计算设备上,也可多个业务服务节点102设置于同一台计算设备上,在实际应用中,可根据计算设备的处理能力而定。在本实施例中,计算设备可以为服务器,还可以为计算机等。Etcd集群包括多个Etcd数据库103,每个Etcd数据库103可用于存储一种类型的业务数据。
其中,版本服务节点101内维护两个数据库,一个数据库为ETS数据库,另一个数据库为Mnesia数据库。ETS数据库既具有数据库功能,可在分布式服务配置系统运行过程中存储数据,还具有接口功能,为版本服务节点101提供访问本数据库的接口,以缩短了版本服务节点101访问ETS数据库的访问时间。Mnesia数据库为一个分布式数据库管理系统,该Mnesia数据库具有快速实时的键(Key)/值(Value)查找功能、运营和维护的非实时复杂查询功能、高容错功能、动态配置功能等等,正是基于上述这些功能,Mnesia数据库应用于电信和其他需要持续运行以及具备软实时特性的分布式服务配置系统,已成为构建电信应用的控制系统平台开放式电信平台(OTP)的一部分。在本实施例中,Mnesia数据库用于存储版本服务节点的数据,并保持版本服务节点内数据的一致性。版本服务节点101能够接收业务服务节点102发送的版本号获取请求,并为用户数据分配相应的版本号,以保证同一用户的用户数据不回退,对端在接收到该用户的用户数据时,可根据版本号顺序显示用户数据。
每个业务服务节点102可用来处理一种类型的通信业务,该通信业务可为移动、联通、电信等运营商提供的通信业务,也可以为基于各种即时通讯应用提供的通信业务,包括语音通信业务、文字通信业务等等。业务服务节点102能够接收用户发送的用户数据,并向版本服务节点101发送版本号获取请求,以使版本服务节点101可为该用户的用户数据分配一个合适的版本号,该合适的版本号与该用户已分配的版本号相比按照一定的增量递增。
Etcd数据库103是一个高可用的键值存储系统,主要用于共享配置和服务发现,在本实施例中,Etcd数据库103维护一个节点路由表,该节点路由表中存储着分布式服务配置系统内的每个版本服务节点的节点信息,以实现各个版本服务节点之间的数据同步。另外,Etcd数据库103在接收到每个版本服务节点的租约申请后,为每个版本服务节点101分配租约信息,该租约信息实际上为每个版本服务节点负责管理的用户标识构成的号码段及管理期限等。
基于上述图1所示的分布式服务配置系统的架构图,本发明实施例提供了一种版本号分配方法,该方法应用于分布式服务配置系统中,该分布式服务配置系统包括版本服务节点、业务服务节点及Etcd数据库,参见图2,本实施例提供的方法流程包括:
201、当接收到目标用户数据时,业务服务节点向版本服务节点发送版本号获取请求,版本号获取请求中至少携带目标用户标识、版本服务节点标识、目标用户标识所在的目标号码段标识。
202、版本服务节点接收版本号获取请求,从预先存储的号码段标识与最大版本号之间的对应关系中,获取目标号码段标识对应的第一目标最大版本号,每个号码段包括多个用户标识,根据第一目标最大版本号及目标用户标识对应的已分配版本号,为目标用户标识分配一个目标版本号,向业务服务节点发送目标版本号。
203、业务服务节点接收目标版本号,将目标版本号分配给目标用户数据。
本发明实施例提供的方法,版本服务节点在接收到版本号获取请求时,获取目标版本号标识对应的最大版本号,进而为目标用户数据分配版本号。由于版本服务节点无需对应每个用户标识存储一个的最大版本号,而仅存储每个号码段标识与最大版本号之间的对应关系,因此,节省了存储资源,提升了系统性能。
在本发明的另一个实施例中,根据第一目标最大版本号及目标用户标识对应的已分配版本号,为目标用户标识分配一个目标版本号,包括:
版本服务节点将已分配版本号加上预设数值,得到目标版本号,将目标版本号与第一目标最大版本号进行比较;
当目标版本号大于第一目标最大版本号时,版本服务节点将第一目标最大版本号加上预设步长,得到第二目标最大版本号,持久化第二目标最大版本号,将目标版本号分配给目标用户标识;
当目标版本号小于第一目标最大版本号时,版本服务节点将目标版本号分配给目标用户标识。
在本发明的另一个实施例中,该方法还包括:
在加入系统时,版本服务节点向Etcd数据库发送节点注册消息,节点注册消息包括版本服务节点的节点信息;
Etcd数据库接收节点注册消息,将节点信息添加到节点路由表中,向系统内的每个版本服务节点发送节点变化消息;
版本服务节点接收节点变化消息,从Etcd数据库中获取节点路由表,根据节点路由表,计算本节点对应的号码段,向Etcd数据库发送租约申请,租约申请中至少携带号码段标识、版本服务节点标识;
Etcd数据库接收租约申请,根据租约申请,为版本服务节点设置租约信息,向业务服务节点发送租约变化消息,租约信息包括号码段标识、版本服务节点标识及租约期限;
业务服务节点接收租约变化消息,从Etcd数据库中,获取每个业务服务节点的租约信息。
在本发明的另一个实施例中,根据节点路由表,计算本节点对应的号码段,包括:
版本服务节点从节点路由表中,获取处于工作状态的多个版本服务节点,根据多个版本服务节点,采用指定算法,计算本节点对应的号码段。
在本发明的另一个实施例中,根据租约申请,为版本服务节点设置租约信息,包括:
Etcd数据库,还用于查找号码段标识对应的版本服务节点标识,当版本服务节点标识与号码段标识对应的版本服务节点标识相同时,将号码段分配给版本服务节点,向版本服务节点发送申请成功消息;当版本服务节点标识与号码段标识对应的版本服务节点标识不相同时,向版本服务节点发送申请失败消息;
版本服务节点,还用于当接收到申请失败消息时,每隔预设时长向Etcd数据库发送租约申请,直至接收到申请成功消息。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
基于上述图1所示的分布式服务配置系统的架构图,本发明实施例提供了一种版本号分配方法,该方法应用于分布式服务配置系统中,该分布式服务配置系统包括版本服务节点、业务服务节点及Etcd数据库,参见图3,本实施例提供的方法流程包括:
301、业务服务节点接收目标用户数据。
其中,用户数据为通信场景下用于承载用户间交流信息的数据,目标用户数据为业务服务节点当前接收到的用户数据,该目标用户数据也是本实施例中需要为其分配版本号的用户数据。
在本实施例中,版本号(Version)为一个64位的整数,为确保通信过程顺利进行,每个用户数据都具有单独的版本号,对于同一用户而言,该用户发送的用户数据,按照接收时间顺序,版本号呈递增趋势。为了便于为每个用户数据分配版本号,版本服务节点会为每个用户标识设置一个最大上限版本号,从而在接收到任一用户发送的用户数据时,可根据该最大上限版本号为用户数据分配版本号。为了节省版本服务节点的存储资源,降低因查询每个用户的最大版本号版本服务节点IO次数过多,所造成的系统性能下降等问题,在本实施例中可将多个用户标识按照一定的规则划分为不同的号码段,同一号码段的用户标识共享一个最大上限版本号。表1为同一号码段的多个用户标识共享一个最大上限版本号的逻辑关系。
表1
其中,Cur_version为当前版本号,Max_version为最大版本号。参见表1,用户A、用户B、用户C等多个用户共享一个最大上限版本号100。
通过多个用户标识共用一个最大上限版本号,有效地减少了版本服务节点的存储空间,同时减少了服务启动时IO次数。
在分布式服务配置系统中,版本服务节点维护两个数据库,一个为ETS数据库,另一个为Mnesia数据库,ETS数据库中所存储的数据与Mnesia数据库中所存储的数据是不同的。其中,ETS数据库中存储着版本服务节点标识、最大上限版本号、用户标识、号码段标识、用户标识对应的已分配版本号等,处于数据可靠性的考量,Mnesia数据库中存储着号码段标识、最大上限版本号等。由于ETS数据库中不仅存储着最大上限版本号,还存储着用户标识对应的已分配版本号,因此,针对这两种数据,ETS数据库中数据在存储时,可采用表2、表3分别进行存储。
表2
Key | value |
UID | Cur_version |
其中,Key为负责管理的号码标识,value为版本服务节点标识,UID为用户标识,Cur_version为当前版本号。
表3
Key | value |
Section_id | Max_version |
其中,Key为负责管理的号码标识,value为版本服务节点标识,Max_version为最大版本号。
对于Mnesia数据库中数据的存储形式,可参见表4。
表4
Section_id | 号码段ID |
Max_version | 最大版本号 |
其中,Section_id为号码段标识,Max_version为最大版本号。
为避免分布式服务配置系统内的各个版本服务节点所管理的号码段发生冲突,每个版本号服务节点可自行向Etcd数据库申请租约,该租约实际上为其所管理的号段段及对该号码段的管理期限,如果申请成功,则可在管理期限内为位于该号码段内的用户数据分配版本号,如果申请不成功,将继续申请,直至申请成功。由于版本服务节点所管理的号码段具有管理期限,当租约到期后,版本服务节点将丧失对其所管理的号段的管理权限,此时该版本服务节点重新向Etcd数据库申请租约。
在本发明的另一个实施例中,由于每个版本服务节点的工作范围(负责号码段内用户版本号的生成和维护)以及工作时长(租约期限)都是向Etcd数据库申请得到的,在工作时长到期之前,需要再次续约,以保证服务可用。如果版本服务节点在工作时长到期之前未续约,则在到达工作时长之后,将停止工作,同时将拒绝对外服务。
在本发明的另一个实施例中,Etcd数据库会自动清除过期的租约,当任一版本服务节点的租约到期后,其他版本服务节点才可向Etcd数据库成功申请到租约。如果任一版本服务节点的租约未到期,其他版本服务节点无法成功申请到该版本服务节点的租约,直至该版本服务节点的租约到期,Etcd数据库清除过期的租约。
在分布式服务配置系统中,当任一版本服务节点加入到版本服务集群时,该版本服务节点将会向Etcd数据库发送节点注册消息(参见图1中的①,该节点注册消息中包括该版本服务节点信息,该节点信息包括节点名称、节点状态等等。当接收到节点注册信息时,Etcd数据库将该版本服务节点的节点信息添加到节点路由表中,并向分布式配置管理服务节点中的每个版本服务节点发送节点变化消息(参见图1中的②,当接收到节点变化消息时,每个版本服务节点从Etcd数据库中获取最新的节点路由表(参见图1中的③,并根据节点路由表,计算本节点对应的号码段,进而向Etcd数据库发送租约申请(参见图1中的④,该租约申请中至少携带号码段标识、版本服务节点标识、租约期限等,当接收到租约申请,Etcd数据库根据租约申请,为版本服务节点设置租约信息(参见图1中的⑤,该租约信息包括号码段标识、版本服务节点标识及租约期限等等。
其中,每个版本服务节点根据节点路由表,计算本节点对应的号码段时,可采用如下方式:
对于任一版本服务节点,该版本服务节点可通过查询节点路由表,从节点路由表中,查找处于工作状态的版本服务节点,并采用指定算法,计算本节点对应的号码段。其中,指定算法可以为一致性哈希算法等。例如,设定总号码段为1,节点路由表中存储有5个版本服务节点,3个版本服务节点处于工作状态,则该版本服务节点通过采用一致性哈希算法,可计算出本节点对应的号码段为1/3。
其中,Etcd数据库根据租约申请,为版本服务节点设置租约信息,可采用如下方式:
Etcd数据库根据号码段标识,查找号码段标识对应的版本服务节点标识,当版本服务节点标识与号码段标识对应的版本服务节点标识相同时,将号码段标识对应的号码段分配给该版本服务节点,并向版本服务节点发送申请成功消息;当版本服务节点标识与号码段标识对应的版本服务节点标识不相同时,不会为版本服务节点分配号码段,并向版本服务节点发送申请失败消息。
版本服务节点向Etcd数据库申请租约时,可采用如下过程实现:版本服务节点尝试向Etcd数据库写入租约,该写入的租约包括key、value及租约期限。其中,key是租约ID(即号码标识),value为自身的版本服务节点标识。Etcd数据库根据CAS(Compare andswap,比较与交换)无锁算法,如果所申请的key存在,且Key的value与当前发起租约申请的版本服务节点标识不同,则确定租约申请失败,进而向版本服务节点发送租约申请失败消息;如果所申请的key存在,且Key的value与当前发起租约申请的版本服务节点标识相同,则确定租约申请成功,进而向版本服务节点发送租约申请成功消息。
其中,CAS是一种无锁算法,具有3个操作数,分别为内存值V、旧的预期值A、待修改的新值B。CAS的语义是“预先设定V的值为A,如果V=A,则将V的值更新为B,否则不修改并告知V的实际值”,也即是,当且仅当预期值A和内存值V相同时,将内存值V修改为B。
CAS比较与交换的伪代码可以表示为:
do{
备份旧数据;
基于旧数据构造新数据;
}while(!CAS(内存地址,备份的旧数据,新数据))
当将旧数据与新数据两者进行比较时,如果二者相等,则证明共享数据没有被修改,可将旧值替换成新值,然后继续往下运行;如果二者不相等,说明共享数据已经被修改,此时放弃已经所做的操作,然后重新执行刚才的操作。
进一步地,如果租约申请成功,版本服务节点接收到申请成功消息时,可根据所申请的租约,为所申请的号码段内的用户标识对应的用户数据分配版本号。如果租约申请失败,版本号服务节点接收到申请失败消息时,将每隔预设时长如1秒钟、2秒钟等向Etcd数据库发送租约申请,直至接收到申请成功消息。
当为版本服务节点申请租约后,Etcd数据库将向业务服务节点发送租约变化消息,该租约信息包括号码段标识、版本服务节点标识及租约期限。当接收租约变化消息,业务服务节点从Etcd数据库中,获取每个业务服务节点的租约信息(参见图1中的⑥)。
302、业务服务节点向版本服务节点发送版本号获取请求,该版本号获取请求中至少携带目标用户标识、版本服务节点标识、目标用户标识所在的目标号码段标识。
当接收到目标用户数据之后,业务服务节点根据租约信息,向版本服务节点发送版本号获取请求,以获取到目标用户数据的版本号(参见图1中的⑦。其中,版本号获取请求中至少携带目标用户标识、版本服务节点标识、目标用户标识所在的目标号码段标识等等。
303、版本服务节点接收版本号获取请求,从预先存储的号码段标识与最大版本号之间的对应关系中,获取目标号码段标识对应的第一目标最大版本号,根据第一目标最大版本号及目标用户标识对应的已分配版本号,为目标用户标识分配一个目标版本号,向业务服务节点发送目标版本号。
在本实施例中,版本服务节点的ETS数据库中存储有号码段标识与最大版本号之间的对应关系,当接收到版本号获取请求时,版本号服务节点根据目标号码段标识,从ETS数据库中获取到目标号码段标识对应的第一目标最大版本号,进而根据第一目标最大版本号及目标用户标识对应的已分配版本号,为目标用户标识分配一个目标版本号。
在本实施例中,版本服务节点根据第一目标最大版本号及目标用户标识对应的已分配版本号,为目标用户标识分配一个目标版本号,可采用如下步骤3031~3033:
3031、版本服务节点将已分配版本号加上预设数值,得到目标版本号,将目标版本号与第一目标最大版本号进行比较。
其中,预设数值可以为1、2、3等,本实施例以预设数值为1为例进行说明。
3032、当目标版本号大于第一目标最大版本号时,版本服务节点将第一目标最大版本号加上预设步长,得到第二目标最大版本号,持久化第二目标最大版本号,将目标版本号分配给目标用户标识。
其中,预设步长可以为10000、20000等,本实施例以预设步长为10000为例进行说明。
3033、当目标版本号小于第一目标最大版本号时,版本服务节点将目标版本号分配给目标用户标识。
需要说明的是,在系统正常运行过程中,每个版本服务节点分配出去的版本号是顺序递增的,当系统重启时,为避免为用户数据所分配的版本号回退,可将最大的版本号赋给当前已分配的版本号。
304、业务服务节点接收目标版本号,将目标版本号分配给目标用户数据。
如果版本号申请成功,接收到目标版本号,业务服务节点可将目标版本号分配给目标用户数据。在该过程中,为确保对端接收到的用户数据完整,业务服务节点会接收到两个版本号,一个为所分配的目标版本号,另一个为上一次已分配的版本号,基于所接收到的两个版本号,业务服务节点将目标版本号与已分配的版本号进行比较,如果目标版本号为5,上一次已分配的版本号为3,则可确定当前接收到的用户数据并不完整,缺少版本号为4的用户数据,如果目标版本号为5,上一次已分配的版本号为4,则可确定当前接收到的用户数据完整。
如果版本号申请失败,未接收到目标版本号,业务服务节点根据申请失败原因,采用不同的方式进行处理。如果因版本服务节点未响应导致版本号申请失败,则业务服务节点可将版本号获取请求重新加入到队列中,并每隔一定时长再次发送;如果版本服务节点响应,但节点路由信息错误,也即是业务服务节点向不具有分配权利的其他版本号服务节点发送版本号获取请求,此时业务服务节点可重新拉取节点路由表,如果已存储的节点路由表相对重新拉取的节点路由表未变化,则将版本号申请请求重新加入到队列中,每隔一定时长再次发送,如果已存储的节点路由表相对重新拉取的节点路由表变化,则向新的版本服务节点发送版本号获取请求。
本发明实施例提供的方法,版本服务节点在接收到版本号获取请求时,获取目标版本号标识对应的最大版本号,进而为目标用户数据分配版本号。由于版本服务节点无需对应每个用户标识存储一个的最大版本号,而仅存储每个号码段标识与最大版本号之间的对应关系,因此,节省了存储资源,提升了系统性能。
本发明实施例提供了一种分布式服务配置系统,参见图1,分布式服务配置系统包括版本服务节点101和业务服务节点102;
业务服务节点102,用于当接收到目标用户数据时,向版本服务节点发送版本号获取请求,该版本号获取请求中至少携带目标用户标识、版本服务节点标识、目标用户标识所在的目标号码段标识;
版本服务节点101,用于接收版本号获取请求,从预先存储的号码段标识与最大版本号之间的对应关系中,获取目标号码段标识对应的第一目标最大版本号,每个号码段包括多个用户标识,根据第一目标最大版本号及目标用户标识对应的已分配版本号,为目标用户标识分配一个目标版本号,向业务服务节点发送目标版本号;
业务服务节点102,用于接收目标版本号,将目标版本号分配给目标用户数据。
在本发明的另一个实施例中,版本服务节点101,还用于将已分配版本号加上预设数值,得到目标版本号,将目标版本号与第一目标最大版本号进行比较;
版本服务节点101,还用于当目标版本号大于第一目标最大版本号时,将第一目标最大版本号加上预设步长,得到第二目标最大版本号,持久化第二目标最大版本号,将目标版本号分配给目标用户标识;当目标版本号小于第一目标最大版本号时,将目标版本号分配给目标用户标识。
参见图1,分布式服务配置系统还包括:Etcd数据库103;
版本服务节点101,还用于在加入系统时,向Etcd数据库103发送节点注册消息,节点注册消息包括版本服务节点的节点信息;
Etcd数据库103,用于接收节点注册消息,将节点信息添加到节点路由表中,向系统内的每个版本服务节点发送节点变化消息;
版本服务节点101,还用于接收节点变化消息,从Etcd数据库中获取节点路由表,根据节点路由表,计算本节点对应的号码段,向Etcd数据库发送租约申请,租约申请中至少携带号码段标识、版本服务节点标识;
Etcd数据库103,还用于接收租约申请,根据租约申请,为版本服务节点设置租约信息,向业务服务节点发送租约变化消息,租约信息包括号码段标识、版本服务节点标识及租约期限;
业务服务节点102,还用于接收租约变化消息,从Etcd数据库中,获取每个业务服务节点的租约信息。
在本发明的另一个实施例中,版本服务节点101,还用于从节点路由表中,获取处于工作状态的多个版本服务节点,根据多个版本服务节点,采用指定算法,计算本节点对应的号码段。
在本发明的另一个实施例中,Etcd数据库103,还用于查找号码段标识对应的版本服务节点标识,当版本服务节点标识与号码段标识对应的版本服务节点标识相同时,将号码段分配给版本服务节点,向版本服务节点发送申请成功消息;当版本服务节点标识与号码段标识对应的版本服务节点标识不相同时,向版本服务节点发送申请失败消息;
版本服务节点101,还用于当接收到申请失败消息时,每隔预设时长向Etcd数据库发送租约申请,直至接收到申请成功消息。
本发明实施例提供的系统,版本服务节点在接收到版本号获取请求时,获取目标版本号标识对应的最大版本号,进而为目标用户数据分配版本号。由于版本服务节点无需对应每个用户标识存储一个的最大版本号,而仅存储每个号码段标识与最大版本号之间的对应关系,因此,节省了存储资源,提升了系统性能。
需要说明的是:上述实施例提供的分布式服务配置系统在分配版本号时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将分布式服务配置系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式服务配置系统与版本号分配方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种分布式服务配置系统,其特征在于,所述系统包括版本服务节点和业务服务节点;
所述业务服务节点,用于当接收到目标用户数据时,向所述版本服务节点发送版本号获取请求,所述版本号获取请求中至少携带目标用户标识、版本服务节点标识、所述目标用户标识所在的目标号码段标识;
所述版本服务节点,用于接收所述版本号获取请求,从预先存储的号码段标识与最大版本号之间的对应关系中,获取所述目标号码段标识对应的第一目标最大版本号,每个号码段包括多个用户标识,根据所述第一目标最大版本号及所述目标用户标识对应的已分配版本号,为所述目标用户标识分配一个目标版本号,向所述业务服务节点发送目标版本号;
所述业务服务节点,用于接收所述目标版本号,将所述目标版本号分配给所述目标用户数据。
2.根据权利要求1所述的系统,其特征在于,所述版本服务节点,还用于将所述已分配版本号加上预设数值,得到所述目标版本号,将所述目标版本号与所述第一目标最大版本号进行比较;
所述版本服务节点,还用于当所述目标版本号大于所述第一目标最大版本号时,将所述第一目标最大版本号加上预设步长,得到第二目标最大版本号,持久化所述第二目标最大版本号,将所述目标版本号分配给所述目标用户标识;当所述目标版本号小于所述第一目标最大版本号时,将所述目标版本号分配给所述目标用户标识。
3.根据权利要求1所述的系统,其特征在于,所述系统还包括:Etcd数据库;
所述版本服务节点,还用于在加入所述系统时,向所述Etcd数据库发送节点注册消息,所述节点注册消息包括所述版本服务节点的节点信息;
所述Etcd数据库,用于接收所述节点注册消息,将所述节点信息添加到节点路由表中,向所述系统内的每个版本服务节点发送节点变化消息;
所述版本服务节点,还用于接收所述节点变化消息,从所述Etcd数据库中获取所述节点路由表,根据所述节点路由表,计算本节点对应的号码段,向所述Etcd数据库发送租约申请,所述租约申请中至少携带所述号码段标识、所述版本服务节点标识;
所述Etcd数据库,还用于接收所述租约申请,根据所述租约申请,为所述版本服务节点设置租约信息,向所述业务服务节点发送租约变化消息,所述租约信息包括所述号码段标识、所述版本服务节点标识及租约期限;
所述业务服务节点,还用于接收所述租约变化消息,从所述Etcd数据库中,获取每个业务服务节点的租约信息。
4.根据权利要求3所述的系统,其特征在于,所述版本服务节点,还用于从所述节点路由表中,获取处于工作状态的多个版本服务节点,根据所述多个版本服务节点,采用指定算法,计算本节点对应的号码段。
5.根据权利要求3所述的系统,其特征在于,所述Etcd数据库,还用于查找所述号码段标识对应的版本服务节点标识,当所述版本服务节点标识与所述号码段标识对应的版本服务节点标识相同时,将所述号码段分配给所述版本服务节点,所述向所述版本服务节点发送申请成功消息;当所述版本服务节点标识与所述号码段标识对应的版本服务节点标识不相同时,向所述版本服务节点发送申请失败消息;
所述版本服务节点,还用于当接收到所述申请失败消息时,每隔预设时长向所述Etcd数据库发送租约申请,直至接收到申请成功消息。
6.一种版本号分配方法,其特征在于,所述方法应用于分布式服务配置系统中,所述系统包括版本服务节点、业务服务节点及Etcd数据库,所述方法包括:
当接收到目标用户数据时,所述业务服务节点向所述版本服务节点发送版本号获取请求,所述版本号获取请求中至少携带目标用户标识、版本服务节点标识、所述目标用户标识所在的目标号码段标识;
所述版本服务节点接收所述版本号获取请求,从预先存储的号码段标识与最大版本号之间的对应关系中,获取所述目标号码段标识对应的第一目标最大版本号,每个号码段包括多个用户标识,根据所述第一目标最大版本号及所述目标用户标识对应的已分配版本号,为所述目标用户标识分配一个目标版本号,向所述业务服务节点发送目标版本号;
所述业务服务节点接收所述目标版本号,将所述目标版本号分配给所述目标用户数据。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一目标最大版本号及所述目标用户标识对应的已分配版本号,为所述目标用户标识分配一个目标版本号,包括:
所述版本服务节点将所述已分配版本号加上预设数值,得到所述目标版本号,将所述目标版本号与所述第一目标最大版本号进行比较;
当所述目标版本号大于所述第一目标最大版本号时,所述版本服务节点将所述第一目标最大版本号加上预设步长,得到第二目标最大版本号,持久化所述第二目标最大版本号,将所述目标版本号分配给所述目标用户标识;
当所述目标版本号小于所述第一目标最大版本号时,所述版本服务节点将所述目标版本号分配给所述目标用户标识。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在加入所述系统时,所述版本服务节点向所述Etcd数据库发送节点注册消息,所述节点注册消息包括所述版本服务节点的节点信息;
所述Etcd数据库接收所述节点注册消息,将所述节点信息添加到节点路由表中,向所述系统内的每个版本服务节点发送节点变化消息;
所述版本服务节点接收所述节点变化消息,从所述Etcd数据库中获取所述节点路由表,根据所述节点路由表,计算本节点对应的号码段,向所述Etcd数据库发送租约申请,所述租约申请中至少携带所述号码段标识、所述版本服务节点标识;
所述Etcd数据库接收所述租约申请,根据所述租约申请,为所述版本服务节点设置租约信息,向所述业务服务节点发送租约变化消息,所述租约信息包括所述号码段标识、所述版本服务节点标识及租约期限;
所述业务服务节点接收所述租约变化消息,从所述Etcd数据库中,获取每个业务服务节点的租约信息。
9.根据权利要求8所述的方法,其特征在于,所述根据所述节点路由表,计算本节点对应的号码段,包括:
所述版本服务节点从所述节点路由表中,获取处于工作状态的多个版本服务节点,根据所述多个版本服务节点,采用指定算法,计算本节点对应的号码段。
10.根据权利要求8所述的方法,其特征在于,所述根据所述租约申请,为所述版本服务节点设置租约信息,包括:
所述Etcd数据库,还用于查找所述号码段标识对应的版本服务节点标识,当所述版本服务节点标识与所述号码段标识对应的版本服务节点标识相同时,将所述号码段分配给所述版本服务节点,向所述版本服务节点发送申请成功消息;当所述版本服务节点标识与所述号码段标识对应的版本服务节点标识不相同时,向所述版本服务节点发送申请失败消息;
所述版本服务节点,还用于当接收到所述申请失败消息时,每隔预设时长向所述Etcd数据库发送租约申请,直至接收到申请成功消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610666189.7A CN107733957B (zh) | 2016-08-12 | 2016-08-12 | 分布式服务配置系统及版本号分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610666189.7A CN107733957B (zh) | 2016-08-12 | 2016-08-12 | 分布式服务配置系统及版本号分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107733957A CN107733957A (zh) | 2018-02-23 |
CN107733957B true CN107733957B (zh) | 2020-10-16 |
Family
ID=61201119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610666189.7A Active CN107733957B (zh) | 2016-08-12 | 2016-08-12 | 分布式服务配置系统及版本号分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107733957B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111182014B (zh) * | 2018-11-09 | 2022-04-26 | 北京华为数字技术有限公司 | 一种数据同步方法和装置 |
CN110287022A (zh) * | 2019-05-28 | 2019-09-27 | 北京大米科技有限公司 | 一种调度节点选择方法、装置、存储介质及服务器 |
CN110502523A (zh) * | 2019-08-01 | 2019-11-26 | 广东浪潮大数据研究有限公司 | 业务数据存储方法、装置、服务器及计算机可读存储介质 |
CN115516840A (zh) * | 2020-06-04 | 2022-12-23 | 深圳市欢太科技有限公司 | 一种信息处理方法、设备、系统、介质、芯片及程序 |
CN111782614B (zh) * | 2020-06-23 | 2024-04-05 | 北京青云科技股份有限公司 | 数据访问方法、装置、设备及存储介质 |
CN112256930A (zh) * | 2020-10-09 | 2021-01-22 | 北京沃东天骏信息技术有限公司 | 针对分布式业务批量生成识别码的方法、装置和系统 |
CN112367214B (zh) * | 2020-10-12 | 2022-06-14 | 成都精灵云科技有限公司 | 基于etcd的主节点快速检测和切换方法 |
CN113067848B (zh) * | 2021-02-05 | 2023-09-26 | 厦门亿联网络技术股份有限公司 | 一种通话记录同步方法、系统及电子设备 |
CN115145942B (zh) * | 2022-09-05 | 2023-01-17 | 北京奥星贝斯科技有限公司 | 一种分布式数据库系统及其单调读的实现方法、装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023903A (zh) * | 2009-09-10 | 2011-04-20 | 联想(北京)有限公司 | 一种数据备份的版本管理方法及装置 |
CN102110121A (zh) * | 2009-12-24 | 2011-06-29 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其系统 |
CN103259824A (zh) * | 2012-02-21 | 2013-08-21 | 深圳市腾讯计算机系统有限公司 | 分布式数据存储系统中数据路由的同步方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489184B2 (en) * | 2011-12-30 | 2016-11-08 | Oracle International Corporation | Adaptive selection of programming language versions for compilation of software programs |
-
2016
- 2016-08-12 CN CN201610666189.7A patent/CN107733957B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023903A (zh) * | 2009-09-10 | 2011-04-20 | 联想(北京)有限公司 | 一种数据备份的版本管理方法及装置 |
CN102110121A (zh) * | 2009-12-24 | 2011-06-29 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其系统 |
CN103259824A (zh) * | 2012-02-21 | 2013-08-21 | 深圳市腾讯计算机系统有限公司 | 分布式数据存储系统中数据路由的同步方法和装置 |
Non-Patent Citations (1)
Title |
---|
面向云存储的基于属性加密的多授权中心访问控制方案;关志涛等;《通信学报》;20150625;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107733957A (zh) | 2018-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107733957B (zh) | 分布式服务配置系统及版本号分配方法 | |
CN111694649B (zh) | 资源调度方法、装置、计算机设备和存储介质 | |
CN107528816B (zh) | 分布式数据库中id的处理方法、管理系统及服务器 | |
CN106817432B (zh) | 云计算环境下虚拟资源弹性伸展的方法,系统和设备 | |
CN104954468A (zh) | 资源的分配方法及装置 | |
CN107404509B (zh) | 分布式服务配置系统及信息管理方法 | |
CN109889401B (zh) | 流量统计方法、装置、计算机设备和存储介质 | |
CN107870954B (zh) | 一种分布式数据库的扩展方法及装置 | |
WO2021109750A1 (zh) | 节点管理方法、装置、设备、存储介质和系统 | |
CN110569302A (zh) | 一种基于lucene的分布式集群的物理隔离的方法及装置 | |
CN111291062A (zh) | 数据同步写入方法、装置、计算机设备及存储介质 | |
US20090100436A1 (en) | Partitioning system including a generic partitioning manager for partitioning resources | |
CN110798507B (zh) | 一种dhcp地址分配记忆的方法与系统 | |
CN110417876A (zh) | 会话方法、分布式系统中的节点服务器及主控设备 | |
CN110798492B (zh) | 数据存储方法及装置、数据处理系统 | |
CN110113217B (zh) | 微服务管理方法、装置、管理平台及存储介质 | |
CN110798358A (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN112749172A (zh) | 一种缓存与数据库之间的数据同步方法及系统 | |
CN111404978A (zh) | 一种数据存储方法及云存储系统 | |
CN115801733A (zh) | 一种网络地址分配方法、装置、电子设备及可读介质 | |
CN113055448B (zh) | 一种元数据管理方法及装置 | |
CN113468140B (zh) | 数据迁移处理方法、电子设备及计算机可读存储介质 | |
CN113542013B (zh) | 虚拟化网络功能管理消息分配方法、装置及设备 | |
CN112667642A (zh) | 一种信息生成方法及装置、电子设备 | |
CN113660353A (zh) | 基于蓝牙Mesh的Provisioner地址管理的方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |