Dubbo 源码解析 —— Zookeeper 创建节点

前言

在之前dubbo源码解析-本地暴露中的前言部分提到了两道高频的面试题,其中一道 dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?在上周的dubbo源码解析-zookeeper连接中已经讲到,这周解析的是另一道,即 服务提供者能实现失效踢出是根据什么原理?

上周就有朋友问到我,为什么我的源码解析总是偏偏要和面试题挂上钩呢?原因很简单

1.dubbo源码这么多,试问你从哪里做为切入点?也就是说该从哪里看起?所以以面试题为切入点,你可以理解为我是在回答"怎么看源码"这个问题.

2.我们研发飞机大炮并不是为了侵略,有时候可能只是单纯的想保护自己.

3.我的源码解析虽然以面试题为基础,但却不以面试为目的.因为面试如果问到 dubbo的问题,绝大多数都是官方文档的内容,根本就没到需要看源码的程度.看源码的最终目的是为了解决实际问题,后面我会以实际的问题为例子,实战讲一讲看源码我究竟解决了什么网上搜不到,必须要看源码才能弄清楚的问题.所以现在就可以大胆在简书关注肥朝,已免后面错过精彩内容.

插播面试题

  • 服务提供者能实现失效踢出是什么原理(高频题)
  • zookeeper的有哪些节点,他们有什么区别?讲一下应用场景

直入主题

同上周的 zookeeper连接一样,这周我们讲的还是一行代码,如下图

那么我们打上断点开始

下面就要开始创建节点了

现在我们虽然看完源码了,但是还是没法回答面试题?那么下面就要敲黑板划重点了

敲黑板画重点

zookeeper中节点是有生命周期的.具体的生命周期取决于节点的类型.节点主要分为 持久节点(Persistent)临时节点(Ephemeral),但是更详细的话还可以加上 时序节点(Sequential),创建节点中往往组合使用,因此也就是4种.

  • 持久节点
  • 持久顺序节点
  • 临时节点
  • 临时顺序节点

其实不要纠结于分为几种,这就和语文的断句一样,你断句的方法不同,断出来的结果也不同.那么我们主要讲讲 持久节点临时节点的区别

持久节点

所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点,也就是说不会因为创建该节点的客户端会话失效而消失

临时节点

临时节点的生命周期和客户端会话绑定,也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉

应用场景

zookeeper常用的应用场景我在上周已经画了思维导图,这里就不重复展示了.就拿 分布式协调/通知来举例(这个例子既是在回答第一个面试题,也是在回答第二个面试题).

在分布式系统中,我们常常需要知道某个机器是否可用,传统的开发中,可以通过Ping某个主机来实现,Ping得通说明对方是可用的,相反是不可用的,ZK 中我们让所有的机其都注册一个临时节点,我们判断一个机器是否可用,我们只需要判断这个节点在ZK中是否存在就可以了,不需要直接去连接需要检查的机器,降低系统的复杂度

写在最后

集群容错后, 服务发布的内容讲得也差不多了.下周来和大家一起对 服务发布做一个总结.期待下周继续与你相遇.鉴于本人才疏学浅,不对的地方还望斧正,也欢迎关注我的简书,名称为 肥朝

原文发布于微信公众号 - 芋道源码(YunaiV)

原文发表时间:2018-01-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

【Dev Club 分享】微信 iOS SQLite 源码优化实践

Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了腾...

3768
来自专栏Pytorch实践

【Python】30行代码教你将微信变成智能回复机器人

摘要:使用微信itchat接口和图灵机器人接口,三十行代码将你的微信变成聊天机器人,自动回复来自好友的消息。 01 — itchat安装与使用说明 itcha...

72415
来自专栏腾讯架构师的专栏

云计算时代的数据库核弹头 : Tencent MySQL ( TXSQL)

作为腾讯规模最大的 MySQL 数据库服务,CDB 在腾讯云上也是最受欢迎的关系型数据库产品。CDB 不仅具备备份回档、监控、快速扩容等数据库运维的全套解决方案...

7360
来自专栏FreeBuf

第一只WiFi蠕虫的诞生:完整解析博通WiFi芯片Broadpwn漏洞(含EXP/POC)

过去的几个月里,Android 和 iOS 数十亿台设备中都曾出现过可怕的 WiFi 远程代码执行漏洞 BroadPwn。谷歌 7 月初发布了修复补丁,而苹果则...

5057
来自专栏musazhang的专栏

【 腾讯云的1001种玩法 】腾讯云数据库优化最佳实战:以 TXSQL 为例

TXSQL-Tencent MySQL 自从2016年5月份正式立项,在近一年的时间里对 MySQL 的读写性能、强同步、大并发量访问和稳定性等方面做了大量工作...

6453
来自专栏ytkah

finecms5采集接口下载

  哪里有finecms采集接口可以下载?我们在用finecms建站时比较纠结的是要如何采集文章,finecms商城是有售卖采集插件,价格是50元,有些朋友感觉...

3514
来自专栏13blog.site

微信公众号问题:{"errcode":40125,"errmsg":"invalid appsecret, view more at http:\/\/t.cn\/LOEdzVq, hints: [

在调试微信公众号授权登录时遇到了这个错误,着实是心烦了半天,公众号相关开发以前是经常做的,很久没有接触了,而且遇到了这么个以前没遇到的问题。 {"errcode...

7066
来自专栏数据和云

藏在表分区统计信息背后的小秘密

作者介绍 ? 曾令军 云和恩墨技术专家,8年数据库运维经验。思维敏捷,擅长于数据库开发、解决棘手的数据库故障和性能问题,在数据库故障诊断、运维监控、性能优化方面...

2775
来自专栏Golang语言社区

转-Golang分布式设计模式之-----分层设计

提到分布式系统,我们会想到很多机器,分别部署着各自的服务,然后整体组成一个分布式系统。在这类系统中,分布式系统与常规的集中式系统存在着以下三个区别。(来自分布...

42713
来自专栏Java进阶架构师

dubbo源码解析-详解directory

由于明天还要加班(心疼自己一秒),之前答应过小伙伴每周更新一篇dubbo的源码解析的,鉴于上次讲到了集群容错的总体架构,这次主要讲讲第一个关键词director...

955

扫码关注云+社区

领取腾讯云代金券