前言
现在聊的 topic 是分布式系统,面试官跟你聊完了 dubbo 相关的一些问题之后,已经确认你对分布式服务框架/RPC框架基本都有一些认知了。那么他可能开始要跟你聊分布式相关的其它问题了。
分布式锁这个东西,很常用的,你做 Java 系统开发,分布式系统,可能会有一些场景会用到。最常用的分布式锁就是基于 zookeeper 来实现的。
其实说实话,问这个问题,一般就是看看你是否了解 zookeeper,因为 zookeeper 是分布式系统中很常见的一个基础系统。而且问的话常问的就是说 zookeeper 的使用场景是什么?看你知道不知道一些基本的使用场景。但是其实 zookeeper 挖深了自然是可以问的很深很深的。
面试题剖析
大致来说,zookeeper 的使用场景如下,我就举几个简单的,大家能说几个就好了:
  • 分布式协调
  • 分布式锁
  • 元数据/配置信息管理
  • HA高可用性
分布式协调
这个其实是 zookeeper 很经典的一个用法,简单来说,就好比,你 A 系统发送个请求到 mq,然后 B 系统消息消费之后处理了。那 A 系统如何知道 B 系统的处理结果?用 zookeeper 就可以实现分布式系统之间的协调工作。A 系统发送请求之后可以在 zookeeper 上对某个节点的值注册个监听器,一旦 B 系统处理完了就修改 zookeeper 那个节点的值,A 系统立马就可以收到通知,完美解决。
分布式锁
举个栗子。对某一个数据连续发出两个修改操作,两台机器同时收到了请求,但是只能一台机器先执行完另外一个机器再执行。那么此时就可以使用 zookeeper 分布式锁,一个机器接收到了请求之后先获取 zookeeper 上的一把分布式锁,就是可以去创建一个 znode,接着执行操作;然后另外一个机器也尝试去创建那个 znode,结果发现自己创建不了,因为被别人创建了,那只能等着,等第一个机器执行完了自己再执行。
元数据/配置信息管理
zookeeper 可以用作很多系统的配置信息的管理,比如 kafka、storm 等等很多分布式系统都会选用 zookeeper 来做一些元数据、配置信息的管理,包括 dubbo 注册中心不也支持 zookeeper 么?
HA高可用性
这个应该是很常见的,比如 hadoop、hdfs、yarn 等很多大数据系统,都选择基于 zookeeper 来开发 HA 高可用机制,就是一个重要进程一般会做主备两个,主进程挂了立马通过 zookeeper 感知到切换到备用进程。
最后
欢迎大家关注我的公众号【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。

最新文章

  1. Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目
  2. Unity 插件制作笔记(持续更新)
  3. SSH 小总
  4. 1.C#中几个简单的内置Attribute
  5. Orcle 系统表
  6. MFC中关于子对话框中编辑框不能编辑的问题
  7. Java中快如闪电的线程间通讯
  8. 【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)
  9. 马上学Android开发在线视频教程全集
  10. 【POJ1442】【Treap】Black Box
  11. C# windows窗体程序打包安装及卸载
  12. 在 html 中用加色法混合颜色
  13. 在python正在使用mysql
  14. 工作流程,编程,调试,性能:Unity游戏开发者应该学习的20个改进技巧
  15. 关于tomcat的session问题
  16. C#用log4net记录日志
  17. 让docker中的mysql启动时自动执行sql文件
  18. json多态序列化
  19. T-SQL 之 游标
  20. node中的对象

热门文章

  1. shell脚本3——调试
  2. Ubuntu 16.04源码编译boost库 编写CMakeLists.txt | compile boost 1.66.0 from source on ubuntu 16.04
  3. VLAN配置及Trunk接口配置
  4. GeoServer 修改端口
  5. kafka-manager新手安装入门指南
  6. 新闻实时分析系统-Hadoop2.X分布式集群部署
  7. JAVA数组翻转
  8. 【Luogu P1502】窗口的星星
  9. vscode vue模版
  10. 【开发工具 - Android Studio】之AndroidStudio使用笔记