一种面向微服务的自注册服务发现的系统及方法技术方案

技术编号:19486921 阅读:342 留言:0更新日期:2018-11-17 11:33
本发明专利技术提供一种面向微服务的自注册服务发现的方法,包括以下步骤:通过前述系统使集群中的全部节点同步感知新发布的微服务;集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节。使得新服务发布后,集群中所有的节点都能够感知。为服务设定了统一的访问入口,在此基础之上,将负载均衡任务均摊到了集群各个节点,在保证服务后端实例负载均衡的基础之上又有效避免了负载均衡器成为性能瓶颈。同时提供实施上述方法的系统。

【技术实现步骤摘要】
一种面向微服务的自注册服务发现的系统及方法
本专利技术涉及云计算领域,尤其涉及一种面向微服务的自注册服务发现的系统及方法。
技术介绍
在云计算行业兴盛发展的趋势之下,微服务也越来越多地呈现到了人们的眼前。微服务是一种架构风格,系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务,每个任务代表着一个小的业务能力。相较于传统的单体应用程序,采用微服务架构模式有很多优点。首先,通过分解巨大单体应用为多个服务方法解决了复杂性问题,通过模块化的解决方案,降低了整体服务的开发和维护成本;其次,这种架构使得每个服务都可以有专门开发团队来开发,开发者可以自由选择开发技术,提供API服务;最后,微服务架构模式使得每个服务独立扩展。可以根据每个服务的规模来部署满足需求的实例,甚至于可以使用更适合于服务资源需求的硬件。以在线商店系统为例,图1为采用微服务架构的系统结构图。然而,在微服务架构中,会面临很多新的问题,微服务架构由一组小的服务组成,服务之间采用轻量级的通讯机制进行沟通,微服务之间调用关系是一个网状结构,一个微服务在调用另一个微服务的时候,无法知道另一个微服务的具体地址;由于每个服务属于“微”服务,每个服务生命周期不长,每个服务可能随时被关闭、重启、替换;在随着访问量增加的时候,微服务需要扩容,访问量减少时,微服务需要缩容;这样就导致每个微服务的地址在动态变化,这时候必然引入一个服务注册发现问题,也就是说客户端在调用的时候,需要知道服务端的地址,服务端在提供服务的时候,需要注册通告自己的地址,供客户端调用。为了实现服务的注册和服务发现,传统的方法是将域名和IP地址存入DNS服务器,当程序需要访问某个域名的时候首先会向本地配置的DNS服务器发起查询请求,如果本地配置的DNS服务器中有此记录就可以直接返回结果,如果没有则本地配置的DNS服务器继续向根DNS服务器查询,直至顶级DNS服务器,如果仍然没有找到则访问失败。然而对于微服务来说,每一个服务后端都可能有多个实例在运行,每个服务可能随时被关闭、重启、替换,如果采用传统的DNS服务器来解决服务发现的问题无疑是非常繁琐的,对域名的发布和管理都是很大的挑战。
技术实现思路
本专利技术的目的在于克服上述缺陷,提供一种面向微服务的自注册服务发现的系统及方法,使得新服务发布后,集群中所有的节点都能够感知。为服务设定了统一的访问入口,在此基础之上,将负载均衡任务均摊到了集群各个节点,在保证服务后端实例负载均衡的基础之上又有效避免了负载均衡器成为性能瓶颈。本专利技术采取的技术方案是:一种面向微服务的自注册服务发现的系统,包括:控制中心,用以控制微服务的发布与回收、实时收集集群各节点的心跳信息以及维护各节点的负载信息;于各节点的节点管理组件,用以对该节点实例生命周期进行管理;服务代理程序,用以定时通过APIServer向ETCD查询是否有新的服务变更,如果有变更,则针对变更调整相应的IPTABLES转发规则;APIServer,用以作为控制中心、节点管理组件、服务代理程序与ETCD集群进行交互的入口,作为控制中心与节点管理组件和服务代理程序交互的入口;ETCD,用以作为存储单元。进一步地,所述服务代理程序针对变更调整相应的IPTABLES转发规则包括:通过APIServer查询ETCD中服务状态获取服务信息或服务变更信息;判断是否有微服务发布或下线;如果有新的微服务发布,则根据服务信息,为该服务增加IPTABLES服务转发规则;如果有微服务实例下线,则根据服务变更信息,删除本地IPTABLES服务转发规则。一种基于前述系统实现的面向微服务的自注册服务发现的方法,包括以下步骤:通过前述系统使集群中的全部节点同步感知新发布的微服务;集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节。进一步地,还包括在前述系统中;部署“服务入口IP:服务端口”用以通过IPTABLES规则重新定向访问请求;部署“实例IP:实例端口”。进一步地,通过以下步骤实现集群中的全部节点同步感知新发布的微服务:填写微服务配置信息;控制中心根据集群节点负载情况,将微服务后端实例调度到至能够满足实例最低配置要求的宿主机;控制中心将微服务配置信息写入ETCD;集群各节点中服务代理程序通过APIServer定时检查ETCD中的服务信息,如果发现了新的微服务,则该服务代理程序建立相应的“服务入口IP:服务端口”到服务“实例IP:实例端口”的IPTABLES规则,将所有“服务入口IP:服务端口”的请求重定向到“实例IP:实例端口”;如果发现了微服务的下线,则该节点的服务代理程序删除相应的“服务入口IP:服务端口”到服务“实例IP:实例端口”的IPTABLES规则。进一步地,所述集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节包括;集群中各节点服务代理程序定时检查ETCD中的服务信息,如果发现了新的微服务,则节点服务代理程序建立N条IPTABLES转发规则使得服务的访问请求能够转发到后端的N个实例,且保证第i个实例的转发权重为1/i,使各后端服务实例被访问到的概率相同,其中,N为微服务的后端实例数量。通过采取上述技术方案,相较于现有技术,本专利技术的优越之处在于:首先,提供了自注册的微服务发现机制,集群各服务代理程序巧妙地使用IPTABLES转发规则,实现虚拟的服务入口地址到后端真实服务实例地址的转发。使得集群每个节点都完全掌握了集群中所有服务的信息,直接利用服务器内核IP信息过滤系统(IPTABLES)进行转发,服务发现效率较高,而且具有较高的稳定性,由此提高了集群中微服务的可用性。其次,提供了不需要额外负载均衡器的自适应负载均衡机制,将负载均衡的工作均摊到了集群中每一个节点,避免了负载均衡器成为服务可用性的瓶颈。具有良好的可扩展性,对于集群的横向扩展是很方便的,由此提高了集群中微服务的可用性。附图说明图1为微服务架构示意图;图2为传统服务发现结构示意图;图3为本专利技术实施例中部署的微服务服务架构示意图;图4为本专利技术实施例中的集群中各节点服务代理工作的流程图;图5为本专利技术实施例中的自适应负载均衡实现步骤的流程图。具体实施方式下面结合附图和具体实施方式对本专利技术进行说明。应当理解,此处所述具体实施例仅用于解释本专利技术,并不用于限定本专利技术。如图3所示,在一本专利技术的实施例中,描绘了面向集群微服务的高可用实现方法得以实施的服务架构。图中,控制中心是集群管理和调度的中心,能够控制服务的发布与回收、实时收集集群各节点的心跳信息以及维护各节点的负载信息等。节点管理组件是集群中每个节点都有运行的驻守程序,负责对该节点实例生命周期的管理,具体包括对实例的创建、监控、回收等。APIServer是控制中心、节点管理组件、服务代理程序与ETCD集群进行交互的唯一入口,同时也是控制中心与节点管理组件和服务代理程序交互的唯一入口,通过APIServer对交互进行授权和验证,提高了系统的安全性。“服务入口IP:服务端口”是一个虚拟的IP和端口,并没有相关的物理设备与之相关联,只是通过IPTABLES规则来重定向访问请求,而“实例IP:实例端口”在物理本文档来自技高网
...

【技术保护点】
1.一种面向微服务的自注册服务发现的系统,其特征在于,包括:控制中心,用以控制微服务的发布与回收、实时收集集群各节点的心跳信息以及维护各节点的负载信息;于各节点的节点管理组件,用以对该节点实例生命周期进行管理;服务代理程序,用以定时通过APIServer向ETCD查询是否有新的服务变更,如果有变更,则针对变更调整相应的IPTABLES转发规则;API Server,用以作为控制中心、节点管理组件、服务代理程序与ETCD集群进行交互的入口,作为控制中心与节点管理组件和服务代理程序交互的入口;ETCD,用以作为存储单元。

【技术特征摘要】
1.一种面向微服务的自注册服务发现的系统,其特征在于,包括:控制中心,用以控制微服务的发布与回收、实时收集集群各节点的心跳信息以及维护各节点的负载信息;于各节点的节点管理组件,用以对该节点实例生命周期进行管理;服务代理程序,用以定时通过APIServer向ETCD查询是否有新的服务变更,如果有变更,则针对变更调整相应的IPTABLES转发规则;APIServer,用以作为控制中心、节点管理组件、服务代理程序与ETCD集群进行交互的入口,作为控制中心与节点管理组件和服务代理程序交互的入口;ETCD,用以作为存储单元。2.如权利要求1所述的面向微服务的自注册服务发现的系统,其特征在于,所述服务代理程序针对变更调整相应的IPTABLES转发规则包括:通过APIServer查询ETCD中服务状态获取服务信息或服务变更信息;判断是否有微服务发布或下线;如果有新的微服务发布,则根据服务信息,为该服务增加IPTABLES服务转发规则;如果有微服务实例下线,则根据服务变更信息,删除本地IPTABLES服务转发规则。3.一种基于权利要求1或2所述系统实现的面向微服务的自注册服务发现的方法,包括以下步骤:通过前述系统使集群中的全部节点同步感知新发布的微服务;集群中的各节点的服务代理程序通过建立IPTABLES转发规则对微服务进行负载均衡调节。4.如权利要求3所述的方法,其特征在于,...

【专利技术属性】
技术研发人员:汤学海刘财宏董扬琛韩冀中
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

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

1