一种分布式系统中生成机器ID的方法、装置及系统制造方法及图纸

技术编号:21458345 阅读:22 留言:0更新日期:2019-06-26 06:16
本说明书实施例公开了一种分布式系统中生成机器ID的方法、装置及系统。所述方法包括在分布式系统的zookeeper上创建根节点;获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址命名的叶节点;确定不存在时,基于zookeeper在所述根节点下创建顺序节点以及叶节点,获取与所述顺序节点对应的顺序号,根据所述顺序号为所述目标服务器生成机器ID,其中,所述叶节点是以所述网络协议地址命名的,所述叶节点中的信息包括所述顺序节点对应的顺序号。利用本说明书实施例不仅可以为服务器生成唯一的机器ID且在服务重启时保持不变,而且也可以避免人工参与造成的风险、保证版本的一致性、便于系统开发及维护。

【技术实现步骤摘要】
一种分布式系统中生成机器ID的方法、装置及系统
本说明书实施例方案属于计算机软件
,尤其涉及一种分布式系统中生成机器ID的方法、装置及系统。
技术介绍
在分布式系统中会存在许多台服务器对外提供服务,许多场景下都需要为服务器分配在系统内的唯一ID号,用来区分同一个服务请求具体是由哪台服务器来提供的服务。例如打印日志生成的日志文件名称增加ID号,来区分不同服务器打印的日志;使用雪花算法生成分布式唯一序列所使用的机器ID号;有多个服务组成的一个完整需求场景,可以使用ID号来进行服务日志追踪等等。目前,在分布式系统中为服务器生成唯一ID号的方式有多种:一是在发布的程序版本中,直接为每个服务器的启动脚本人工设定唯一机器ID。这种方式的缺点是,在服务启动脚本或配置文件中设定机器ID,会使分布式服务在不同机器上的发布版本不一致,不利于服务的集中发布管理,维护成本较高,而且由于需要人工保证ID号不重复,所以出错率也比较高。二是根据服务器特定属性设定机器ID。这种方式的缺点是,当机器属性规则发生变化时,有可能会造成机器ID重复,也就是,在运行环境产生变化时会导致不同服务器使用相同机器ID的风险,严重时甚至会产生系统故障。例如根据网络协议地址IP最后一段数值确定机器ID,当增加服务器处于不同网段时,就可能产生机器ID重复风险,如网络协议地址IP为11.22.33.44,则使用44作为本机器的ID号,这样要求所有机器必须在同一个网段,否则就会出现严重的机器ID重复风险。三是通过数据库配置等方式统一进行机器ID维护,在服务器启动时进行加载。这种方式的缺点是,会使应用程序与运行环境产生依赖,因为服务只能在特定环境或特定前提条件下才可以发布使用,所以这种依赖性往往是不可取的,此外,这种方式的开发维护成本也比较高。因此,业内亟需一种可以在分布式系统中为服务器生成唯一ID号时不需要人工参与、保证版本一致、便于系统统一发布管理维护的解决方案。
技术实现思路
本说明书实施例目的在于提供一种分布式系统中生成机器ID的方法、装置及系统,不仅可以为服务器生成唯一的机器ID且在服务重启时保持不变,而且也可以避免人工参与造成的风险、保证版本的一致性、便于系统开发及维护。一方面本申请提供了一种分布式系统中生成机器ID的方法,包括:在分布式系统的zookeeper上创建根节点;获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址命名的叶节点;确定所述根节点下不存在以所述网络协议地址命名的叶节点时,基于zookeeper在所述根节点下创建顺序节点以及叶节点,获取与所述顺序节点对应的顺序号,根据所述顺序号为所述目标服务器生成机器ID,其中,所述叶节点是以所述网络协议地址命名的,所述叶节点中的信息包括所述顺序节点对应的顺序号。本说明书提供的所述方法的另一个实施例中,还包括:确定所述根节点下存在以所述网络协议地址命名的叶节点时,获取所述叶节点中的信息,根据所述信息为所述目标服务器生成机器ID。本说明书提供的所述方法的另一个实施例中,所述机器ID的生成是在所述目标服务器服务启动过程中完成的。本说明书提供的所述方法的另一个实施例中,所述获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址命名的叶节点,包括:服务启动时,获取所述目标服务器的网络协议地址;确定连接上zookeeper时,基于zookeeper查询所述根节点下的叶节点,获得所述根节点下的所有叶节点;判断所述所有叶节点中是否存在以所述网络协议地址命名的叶节点。本说明书提供的所述方法的另一个实施例中,所述获取与所述顺序节点对应的顺序号,包括:获取与所述顺序节点对应的顺序节点名称;截取所述顺序节点名称中预设部分,作为与所述顺序节点对应的顺序号。本说明书提供的所述方法的另一个实施例中,还包括:通过zookeeper客户端查询所述根节点下的信息,获得机器ID与服务器网络协议地址的对应关系。本说明书提供的所述方法的另一个实施例中,还包括:如果对所述分布式系统中的所有服务器进行服务重构,则通过zookeeper客户端删除所述机器ID对应的根节点,然后重启服务生成新的机器ID;如果预设数服务器的网络协议地址变更,则通过zookeeper客户端删除所述根节点下以所述网络协议地址命名的叶节点,重启服务生成新的机器ID,所述预设数小于所述分布式系统中所有服务器的总数量。另一方面,本说明书实施例还提供一种分布式系统中生成机器ID的装置,所述装置包括:根节点创建模块,用于在分布式系统的zookeeper上创建根节点;叶节点判断模块,用于获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址命名的叶节点;机器ID第一生成模块,用于确定所述根节点下不存在以所述网络协议地址命名的叶节点时,基于zookeeper在所述根节点下创建顺序节点以及叶节点,获取与所述顺序节点对应的顺序号,根据所述顺序号为所述目标服务器生成机器ID,其中,所述叶节点是以所述网络协议地址命名的,所述叶节点中的信息包括所述顺序节点对应的顺序号。本说明书提供的所述装置的另一个实施例中,所述装置还包括:机器ID第二生成模块,用于确定所述根节点下存在以所述网络协议地址命名的叶节点时,获取所述叶节点中的信息,根据所述信息为所述目标服务器生成机器ID。本说明书提供的所述装置的另一个实施例中,所述叶节点判断模块,包括:网络协议地址获取单元,用于服务启动时,获取所述目标服务器的网络协议地址;叶节点获得单元,用于确定连接上zookeeper时,基于zookeeper查询所述根节点下的叶节点,获得所述根节点下的所有叶节点;叶节点判断单元,用于判断所述所有叶节点中是否存在以所述网络协议地址命名的叶节点。本说明书提供的所述装置的另一个实施例中,所述获取与所述顺序节点对应的顺序号,包括:顺序节点名称获取单元,用于获取与所述顺序节点对应的顺序节点名称;顺序号获取单元,用于截取所述顺序节点名称中预设部分,作为与所述顺序节点对应的顺序号。本说明书提供的所述装置的另一个实施例中,还包括:对应关系获得单元,用于通过zookeeper客户端查询所述根节点下的信息,获得机器ID与服务器网络协议地址的对应关系。本说明书提供的所述装置的另一个实施例中,还包括:机器ID第一更新单元,用于如果对所述分布式系统中的所有服务器进行服务重构,则通过zookeeper客户端删除所述机器ID对应的根节点,然后重启服务生成新的机器ID;机器ID第二更新单元,用于如果预设数服务器的网络协议地址变更,则通过zookeeper客户端删除所述根节点下以所述网络协议地址命名的叶节点,重启服务生成新的机器ID,所述预设数小于所述分布式系统中所有服务器的总数量。另一方面,本说明书实施例提供一种分布式系统中生成机器ID的设备,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:在分布式系统的zookeeper上创建根节点;获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址本文档来自技高网
...

【技术保护点】
1.一种分布式系统中生成机器ID的方法,其特征在于,包括:在分布式系统的zookeeper上创建根节点;获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址命名的叶节点;确定所述根节点下不存在以所述网络协议地址命名的叶节点时,基于zookeeper在所述根节点下创建顺序节点以及叶节点,获取与所述顺序节点对应的顺序号,根据所述顺序号为所述目标服务器生成机器ID,其中,所述叶节点是以所述网络协议地址命名的,所述叶节点中的信息包括所述顺序节点对应的顺序号。

【技术特征摘要】
1.一种分布式系统中生成机器ID的方法,其特征在于,包括:在分布式系统的zookeeper上创建根节点;获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址命名的叶节点;确定所述根节点下不存在以所述网络协议地址命名的叶节点时,基于zookeeper在所述根节点下创建顺序节点以及叶节点,获取与所述顺序节点对应的顺序号,根据所述顺序号为所述目标服务器生成机器ID,其中,所述叶节点是以所述网络协议地址命名的,所述叶节点中的信息包括所述顺序节点对应的顺序号。2.如权利要求1所述的一种分布式系统中生成机器ID的方法,其特征在于,还包括:确定所述根节点下存在以所述网络协议地址命名的叶节点时,获取所述叶节点中的信息,根据所述信息为所述目标服务器生成机器ID。3.如权利要求1所述的一种分布式系统中生成机器ID的方法,其特征在于,所述机器ID的生成是在所述目标服务器服务启动过程中完成的。4.如权利要求1所述的一种分布式系统中生成机器ID的方法,其特征在于,所述获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址命名的叶节点,包括:服务启动时,获取所述目标服务器的网络协议地址;确定连接上zookeeper时,查询所述根节点下的叶节点,获得所述根节点下的所有叶节点;判断所述所有叶节点中是否存在以所述网络协议地址命名的叶节点。5.如权利要求1所述的一种分布式系统中生成机器ID的方法,其特征在于,所述获取与所述顺序节点对应的顺序号,包括:获取与所述顺序节点对应的顺序节点名称;截取所述顺序节点名称中预设部分,作为与所述顺序节点对应的顺序号。6.如权利要求1所述的一种分布式系统中生成机器ID的方法,其特征在于,还包括:通过zookeeper客户端查询所述根节点下的信息,获得机器ID与服务器网络协议地址的对应关系。7.如权利要求1所述的一种分布式系统中生成机器ID的方法,其特征在于,还包括:如果对所述分布式系统中的所有服务器进行服务重构,则通过zookeeper客户端删除所述机器ID对应的根节点,然后重启服务生成新的机器ID;如果预设数服务器的网络协议地址变更,则通过zookeeper客户端删除所述根节点下以所述网络协议地址命名的叶节点,重启服务生成新的机器ID,所述预设数小于所述分布式系统中所有服务器的数量。8.一种分布式系统中生成机器ID的装置,所述装置包括:根节点创建模块,用于在分布式系统的zookeeper上创建根节点;叶节点判断模块,用于获取分布式系统中目标服务器的网络协议地址,基于zookeeper判断所述根节点下是否存在以所述网络协议地址命名的叶节点;机器ID第一生成模块,用于确定所述根节点下不存在以所述网络协议地址命名的叶节点时,基于zookeeper在所述根节点下创建顺序节点以及叶节点,获取与...

【专利技术属性】
技术研发人员:苗海柱
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1