【技术实现步骤摘要】
一种分布式系统中生成机器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维护,在服务器启动时进行加载。这种方式的缺点是,会使应用程序与运 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。