微服务架构中分布式服务发现集群的数据一致性方法技术

技术编号:23056190 阅读:22 留言:0更新日期:2020-01-07 15:45
本发明专利技术公开了一种微服务架构中分布式服务发现集群的数据一致性方法,其包括以下步骤:当客户端一服务实例启动时,从服务发现节点集群中任选一个服务发现节点作为Leader节点进行连接,将自身的服务信息发送到Leader节点中,服务发现节点集群中其他服务发现节点作为Follower节点,服务信息包括服务名称、IP地址、端口号、服务实例当前状态、服务实例数据类型、Leader节点ID、数据版本号、数据写入某一服务发现节点的时间、数据写入服务发现节点集群的时间、以及数据是否提交状态;Leader节点以树形结构存储服务信息;Leader节点将服务信息复制到其他Follower节点中。

Data consistency method of distributed service discovery cluster in microservice architecture

【技术实现步骤摘要】
微服务架构中分布式服务发现集群的数据一致性方法
本专利技术涉及微服务架构中分布式服务发现集群
,特别是涉及一种微服务架构中分布式服务发现集群的数据一致性方法,通过改进Raft算法保证集群节点数据一致性的同时简化了算法流程。
技术介绍
微服务架构自其提出以来,因其良好的灵活性、可扩展性受到了系统设计者的青睐,并逐渐在企业级信息化系统架构设计中成为主流的解决方案。服务发现作为微服务架构的核心组件之一,其高可用性成为影响整个微服务架构整体稳定性的重要因素。单点部署服务发现不仅会带来性能瓶颈,更可能由于服务发现的故障导致整个微服务架构的不可用,所以一般会采用分布式部署的方式来提高服务发现的可用性,由多个服务器共同向外提供服务,当某个节点发生故障时,其他节点可以代替它继续提供服务,极大地减少了整个服务发现组件不可用的情况。但是,将服务发现采用分布式的方式部署后,节点间由于通信延迟、故障等原因不可避免地会出现数据不一致的问题,如何保证每次向集群读取数据都能得到正确的数据,减少节点间数据不一致的影响一直都是重要的研究领域。目前一般的分布式服务发现都采用经典Paxos、ZAB等算法保证即节点间数据的一致性,但是这些算法采用了复杂的机制来保证普遍的数据一致性。目前最经典的分布式数据一致性算法有Paxos、ZAB、Raft等算法,这些算法能够非常有效的保证数据的强一致性,并应用在很多成熟的商业软件中。但是,目前还没有一个有效针对服务发现的分布式一致性算法,直接使用这些算法实现难度上较大并而难以满足服务发现的实时性要求。
技术实现思路
本专利技术针对现有技术存在的问题和不足,提供一种微服务架构中分布式服务发现集群的数据一致性方法。本专利技术是通过下述技术方案来解决上述技术问题的:本专利技术提供一种微服务架构中分布式服务发现集群的数据一致性方法,其特点在于,其包括以下步骤:当客户端一服务实例启动时,从服务发现节点集群中任选一个服务发现节点作为Leader节点进行连接,将自身的服务信息发送到Leader节点中,服务发现节点集群中其他服务发现节点作为Follower节点,服务信息包括服务名称、IP地址、端口号、服务实例当前状态、服务实例数据类型、Leader节点ID、数据版本号、数据写入某一服务发现节点的时间、数据写入服务发现节点集群的时间、以及数据是否提交状态;Leader节点以树形结构存储服务信息;Leader节点将服务信息复制到其他Follower节点中。较佳地,客户端与Leader节点建立心跳连接,客户端每隔一段时间将发送一心跳请求给Leader节点,该心跳请求包括该服务实例的服务信息;Leader节点在树形结构中查找该心跳请求中的服务信息,在未查找到时将心跳请求中的服务信息增添至根节点下,并初始化数据版本号、数据写入Leader节点的时间以及数据状态为不可提交状态,在查找到时更新相应的服务信息,并将数据版本号更新加一操作以及数据状态更新为不可提交状态;Leader节点向其他Follower节点发送数据复制请求;Leader节点收到其他Follower节点中半数以上的Follower节点的响应成功的信息时,将该心跳请求中服务信息中的数据状态由不可提交状态修改为可提交状态,将该心跳请求中的服务信息复制到响应成功的Follower节点中,并继续向没有响应成功的Follower节点发送数据复制请求。较佳地,Follower节点收到数据复制请求时在树形结构中查找数据复制请求中的服务信息,在未查找到时将数据复制请求中的服务信息增添至根节点下,在查找到时对比数据版本号,在数据复制请求中的数据版本号小于等于根节点下的当前数据版本号,则直接反馈响应成功的信息,在数据复制请求中的数据版本号大于根节点下的当前数据版本号,则将根节点下的当前数据修改为不可提交状态,并反馈响应成功的信息,后续复制数据复制请求中的服务信息。较佳地,选出的服务发现节点以树形结构存储服务信息时,服务实例的服务名称作为根节点的子节点,并按字母表顺序排序,服务实例的IP地址和端口号作为叶子结点存放在相应服务名称的子节点下。较佳地,Leader节点在客户端发的前一个心跳请求中的服务信息还未成功复制而后一个心跳请求已接收到时,直接采用后一个心跳请求中的服务信息覆盖掉原存储的数据并将数据版本号执行加一操作。较佳地,Leader节点在收到一个心跳请求后超过一定时间阈值后还未收到心跳请求,则将对应的服务实例置为不可用。较佳地,当某个Leader节点不可用时,与其连接的服务实例自动重连上新的服务发现节点,新的服务发现节点成为服务实例的新Leader节点并向其他节点同步数据。在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本专利技术各较佳实例。本专利技术的积极进步效果在于:本专利技术根据服务发现具有客户端多而分散、数据前后关联度不高、实时性强等特点改进Raft算法,保证集群节点数据一致性的同时简化了算法流程。在本场景下,改进后的算法在出错后能以更快的速度恢复数据的一致性。本专利技术相对于原Raft算法能够以更简单的方式实现数据一致性,同时在数据过期时,能更稳定更快速地恢复到数据一致性状态。附图说明图1为本专利技术较佳实施例的分布式服务集群架构图。图2为本专利技术较佳实施例的服务节点数据存储结构图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1和2所示,本实施例提供一种微服务架构中分布式服务发现集群的数据一致性方法,其包括以下步骤:当客户端一服务实例启动时,从服务发现节点集群中任选一个服务发现节点作为Leader节点进行连接,将自身的服务信息发送到Leader节点中,服务发现节点集群中其他服务发现节点作为Follower节点,服务信息包括服务名称、IP地址、端口号、服务实例当前状态、服务实例数据类型、Leader节点ID、数据版本号、数据写入某一服务发现节点的时间、数据写入服务发现节点集群的时间、以及数据是否提交状态。Leader节点以树形结构存储服务信息;Leader节点以树形结构存储服务信息时,服务实例的服务名称作为根节点的子节点,并按字母表顺序排序,服务实例的IP地址和端口号作为叶子结点存放在相应服务名称的子节点下。Leader节点将服务信息复制到其他Follower节点中。首先为了能够快速找到某个服务实例的服务信息,为每个服务发现节点设计树形结构存储所有服务信息,如图2所示。服务实例按服务名称聚合作为根节点的子节点,并按字母表顺序排序,在查找时可以采用二分查找法在log(n)复杂度内快速找到服务。服务的IP本文档来自技高网
...

【技术保护点】
1.一种微服务架构中分布式服务发现集群的数据一致性方法,其特征在于,其包括以下步骤:/n当客户端一服务实例启动时,从服务发现节点集群中任选一个服务发现节点作为Leader节点进行连接,将自身的服务信息发送到Leader节点中,服务发现节点集群中其他服务发现节点作为Follower节点,服务信息包括服务名称、IP地址、端口号、服务实例当前状态、服务实例数据类型、Leader节点ID、数据版本号、数据写入某一服务发现节点的时间、数据写入服务发现节点集群的时间、以及数据是否提交状态;/nLeader节点以树形结构存储服务信息;/nLeader节点将服务信息复制到其他Follower节点中。/n

【技术特征摘要】
1.一种微服务架构中分布式服务发现集群的数据一致性方法,其特征在于,其包括以下步骤:
当客户端一服务实例启动时,从服务发现节点集群中任选一个服务发现节点作为Leader节点进行连接,将自身的服务信息发送到Leader节点中,服务发现节点集群中其他服务发现节点作为Follower节点,服务信息包括服务名称、IP地址、端口号、服务实例当前状态、服务实例数据类型、Leader节点ID、数据版本号、数据写入某一服务发现节点的时间、数据写入服务发现节点集群的时间、以及数据是否提交状态;
Leader节点以树形结构存储服务信息;
Leader节点将服务信息复制到其他Follower节点中。


2.如权利要求1所述的微服务架构中分布式服务发现集群的数据一致性方法,其特征在于,客户端与Leader节点建立心跳连接,客户端每隔一段时间将发送一心跳请求给Leader节点,该心跳请求包括该服务实例的服务信息;
Leader节点在树形结构中查找该心跳请求中的服务信息,在未查找到时将心跳请求中的服务信息增添至根节点下,并初始化数据版本号、数据写入Leader节点的时间以及数据状态为不可提交状态,在查找到时更新相应的服务信息,并将数据版本号更新加一操作以及数据状态更新为不可提交状态;
Leader节点向其他Follower节点发送数据复制请求;
Leader节点收到其他Follower节点中半数以上的Follower节点的响应成功的信息时,将该心跳请求中服务信息中的数据状态由不可提交状态修改为可提交状态,将该心跳请求中的服务信息复制到响应成功的Follower节点中,并继续向没有响应成功的Follower节点发送数据复制请求。


...

【专利技术属性】
技术研发人员:王伟张文毅
申请(专利权)人:江阴逐日信息科技有限公司
类型:发明
国别省市:江苏;32

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

1