【技术实现步骤摘要】
实现服务发现的方法及设备
本申请涉及计算机领域,尤其涉及一种实现服务发现的方法及设备。
技术介绍
服务发现是大部分分布式系统和面向服务架构的核心组件。服务定位问题通常可以划分为两个子问题——服务注册和服务解析,其中,服务解析在某些特定语境下也被称作服务发现。目前,ApacheZooKeeper(开源文件应用程序接口)是一个比较典型的用来做服务发现的系统。它提供的树形ZNode(节点)结构,比较适合服务发现问题中单个域名与多个服务地址之间的关系。ZooKeeper(分布式的开放源码的分布式应用程序协调服务)提供针对ZNode孩子节点列表的订阅,当有新的孩子节点被加入或者已有孩子被删除时,其父节点将会收到类型为CHILD的变更通知。孩子节点本身的值,以及孩子节点的孩子节点,当它们发生变化的时候,不会触发父节点的CHILD变更。ZooKeeper提供一种称为“临时节点”(EphemeralZNode)的机制,临时节点与创建它的会话(Session)的生命期绑定,当会话因为心跳停止而超时的时候,临时节点本身也将会一同随着会话的结束而自动删除。会话是靠ZooKeeper的客户端与服务端之间的心跳维持的。ZooKeeper主要利用了上述机制实现服务发现。当一个服务进程成功启动后,它会在ZooKeeper上创建一个临时节点,临时节点的名称或内容被用来存储服务进程的网络地址,临时节点位于某个域名节点之下。客户端应用程序列举该域名下的孩子节点,并订阅该节点的CHILD事件。当某个服务进程注册之后,域名下的CHILD事件被触发,最终通知到所有客户端应用程序,客户端应用程序将重 ...
【技术保护点】
一种服务端的服务发现方法,其中,所述方法包括:根据服务进程的服务地址创建对应的服务文件;将所述服务文件的路径写入服务列表文件中;当所述服务进程发生注销时,删除所述对应的服务文件并将所述服务文件的路径从所述服务列表文件中移除。
【技术特征摘要】
1.一种服务端的服务发现方法,其中,所述方法包括:根据服务进程的服务地址创建对应的服务文件;将所述服务文件的路径写入服务列表文件中;当所述服务进程发生注销时,删除所述对应的服务文件并将所述服务文件的路径从所述服务列表文件中移除。2.根据权利要求1所述的方法,其中,所述将所述服务文件的路径写入服务列表文件中,包括:在所述服务列表文件中写入新的服务文件的路径时,先读取所述服务列表文件中的原有的服务文件的路径,再将所述原有的服务文件的路径加上所述新的服务文件的路径作为回写内容,将所述回写内容更新到所述服务列表文件中。3.根据权利要求1或2所述的方法,其中,所述将所述服务文件的路径写入服务列表文件中,包括:当有多个新的服务文件的路径写入所述服务列表文件中时,每次在服务列表文件中只写入一个新的服务文件的路径,其中,待上一个新的服务文件的路径写入所述服务列表文件形成新的服务列表文件后,再在所述新的服务列表文件写入下一个新的服务文件的路径。4.根据权利要求1所述的方法,其中,将所述服务文件的路径写入服务列表文件中之后,包括:若所述服务进程发生异常退出,在所述服务进程的会话超时后删除所述服务文件。5.根据权利要求4所述的方法,其中,所述若所述服务进程发生异常退出,在所述服务进程的会话超时后删除所述服务文件之后,包括:判断所述服务列表文件中路径所对应的服务文件是否存在,若否,则将所述服务文件的路径从所述服务列表文件中移除。6.一种客户端的服务发现方法,其中,所述方法包括:对服务列表文件的变更进行监听,当监听到服务列表文件发生变更时,根据服务列表文件的变更确定所述服务列表文件中增加的服务文件的路径;对所述增加的服务文件的路径对应的服务文件的变更进行监听,当监听到所述服务文件发生变更时,根据所述服务文件的变更在本地路由缓存中添加或移除所述服务文件的网络地址。7.根据权利要求6所述的方法,其中,所述对服务列表文件的变更进行监听,当监听到服务列表文件发生变更时,根据服务列表文件的变更确定所述服务列表文件中增加的服务文件的路径包括:当监听到服务列表文件发生变更时,读取所述服务列表文件得到服务文件的路径;将未发生变更时的服务列表中的路径与发生变更时所述读取的服务列表中的路径进行比较,根据比较结果确定增加的服务文件的路径;根据所述增加的路径确定对应增加的服务文件。8.根据权利要求6所述的方法,其中,根据服务文件的变更在本地路由缓存中添加或移除所述服务文件的网络地址,包括:判断所述服务文件是否存在,若是,则将所述服务文件的网络地址添加到所述本地路由缓存中。9.根据权利要求6所述的方法,其中,根据所述服务文件的变更在本地路由缓存中添加或移除所述服务文件的网络地址包括:判断所述服务文件是否不存在,若是,则将所述服务文件的网络地址从本地路由缓存中移除,并解除对所述服务文件的变更的监听。10.根据权利要求6所述的方法,其中,当监听到服务列表文件发生变更时,根据服务列表文件的变更确定所述服务列表文件中增加的服务文件的路径,包括:当监听到服务列表文件先后依次发生多次变更时,根据最新的服务列表文件的变更确定所述服务列表文件中增加的服务文件的路径。11.根据权利要求6所述的方法,其中,当监听到所述服务文件发生变更时,根据服务文件的变更在本地路由缓存中添加或移除所述服务文件的网络地址,包括:当监听到所述服务文件先后依次发生多次变更时,根据最新的服务文件的变更在本地路由缓存中添加或移除所述服务文件的网络地址。12.一种用于服务发现的服务设备,其中,所述服务设备包括:创建装置,用于根据服务进程的服务地址创建对应的服务文件;写入装置,用于将所述服务文件的路径写入服务列表文件中;修改装置,用于当所述服务进...
【专利技术属性】
技术研发人员:唐治洋,卢毅军,陶云峰,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。