哈喽!大家好,我是小奇,一位不靠谱的程序员
小奇打算以轻松风趣的对话形式来分享一些技术,如果你感觉通过小奇的文章学到了货色,那就给小奇一个赞吧
文章继续更新
一、前言
作为一名 Java 拧螺丝选手,不必要把握造火箭的能力就能够工作,然而面试官偏偏要难为兄弟们,这我就有点看不下去了,我只能带上家里的 火箭 当场向面试官证实本人。
尽管我这个 二踢脚 可能算不上火箭,然而跟火箭的原理差不多,都是点火往天上发射的,我把握了这个就相当于把握了造火箭的能力。
要害是我这玩意它好使呀,往面试官桌子上一摆,面试官间接跟我谈薪资了,会造火箭就是不一样。
至于你问为什么面试官明明只招 拧螺丝 的选手,然而却问 火箭的底层原理 、火箭的集群怎么搭建,怎么保障火箭的 投递可靠性 (发射失败我就再发射一颗),怎么保障火箭的 幂等性(同一颗火箭发射屡次和发射一次是一样的成果)
这个问题就不须要你去问面试官啦,我上次曾经问过了,面试官的答复让我理屈词穷。。。
我:面试官您好,请问为什么招我进去拧螺丝,却问我火箭的底层原理呢?
面试官:这特么还不都怪你们。。。
我:咱们?咱们怎么了。。。
面试官:十年前我面试员工,那个时候只有一部分人说会拧螺丝,我面试一个录取一个。
面试官:八年前我面试员工,所有人都说会拧螺丝了,我不晓得该录取谁了,而后有一两个人说他会造摩托,我一听这俩人不错呀,毕竟我也刚刚只会造摩托就这俩吧,花拧螺丝的钱招了两个造摩托的。
面试官:五年前我面试员工,所有人都说会造摩托了,我又不晓得该录取谁了,而后有一两个人说会造汽车,我心想这不错呀,我这的老员工没有会造汽车的,你既然会就来吧,工资给你比老员工高点。
面试官:三年前我面试员工,所有人都说会造汽车了,我又又不晓得该录取谁了,而后有一两个人说会造火箭,我特么只能录取这两个会造火箭的了。。。,并且为了面试我还去学了一些火箭的原理,咱们这个摩托车修理店基本用不到这些原理,然而没方法,谁让这些人这么卷呢。
面试官:明天,我只能面试会造火箭的人了,尽管他们进来也只会拧螺丝。。。
我:那既然说会造火箭的人也只会拧螺丝,那你为什么不间接录取只会拧螺丝的选手呢?
面试官:你认为我没有招收面试只会拧螺丝的吗,我招收了,后果。。。
我:后果怎么样?
面试官:他把公司惟一的火箭给拆了。。。
二、面试
在一个晴朗的周二,我来到了“决战天通苑、生死西二旗”中驰名的西二旗桥下。
我怀着一颗忐忑的心走向行将要去赴约面试的公司,一路上我局促不安,不晓得明天的面试会不会顺利,一会面试官会不会刁难我,接待我的 hr 小姐姐好不好看。。。
人不知; 鬼不觉我来到了公司楼下,打电话给 hr,她说给你留门了,门没锁,间接上来吧。。。
HR:小奇是吧,带简历了吗?
我:带,带,带了。。。(吸溜),我把简历交给了 HR,并急迫的询问什么时候开始呢,我等不及了。。。
HR:别急嘛,先做一套口试题
我:哦,我支付了一份口试题,并来到了做题的会议室,这个会议室不大,然而坐满了人。。。
我:我做完了题后发现好基友微信群里问我在干嘛,我就顺手拍了一张照片发给了他们,我不是故意拍答案的呀,然而这桌子太小人太多,毕竟 0.8 平米的桌子围着坐了 8 集体。。。
我:起初公司里人要散会,差点把咱们正在做题的人撵走,我也是服了这个公司了,看我一会虐不虐他们的面试官就完了。
面试官:做一个自我介绍吧。
我:面试官你好,我本科毕业于山东翔蓝,精通挖掘机技术,研究生进入华清大学学习火箭研发技术,博士进入大北大学学习在火箭高并发发射状况下如何保障火箭一致性问题,不会造成误发射了其它队友的火箭。
三、Zookeeper 集群模式与集群角色
面试官:能够呀小伙子,那你说说 zookeeper 集群有哪些模式吧
我:zookeeper 集群无非有三种搭建形式,一是单机模式、二是伪分布模式、三是分布式模式。
面试官:嗯。zookeeper 集群中都有哪些角色呢
我:有三种角色,一是 Leader 角色,能够解决读写申请,集群中只能有一个 Leader 角色,二是 Follower 角色,只能解决读申请,同时也是 Leader 的候选节点,如果 Leader 节点挂了,Follower 节点就能够选举为 Leader 节点,三是 Observer 节点,该节点只能解决读申请,不能参加 Leader 的选举。
四、Zookeeper 集群搭建形式
面试官:嗯,那你说说 zookeeper 集群搭建的具体步骤吧
我:首先咱们下在 zookeeper 后有一个配置文件为 zoo_sample.cfg,咱们能够批改为 zoo1.cfg 这样更好记一些,而后咱们编辑配置文件
dataDir=[保留数据的目录]
clientPort=[客户端连贯 zookeeper 服务器的端口]
server.[数字示意第几台服务器]= 服务器的 ip 示意如果 Leader 服务器挂了,用这个备用端口来进行选举我这里配置好后就是一个集群的节点了,这里咱们再将 zoo1.cfg 复制三个进去,示意另外三个集群节点,我这里是在一台机器上建设四个节点来搭建一个伪集群,实在的集群只有对应上 ip 地址和端口就能够了。
当初咱们有四个 cfg 文件,别离为 zoo1.cfg、zoo2.cfg、zoo3.cfg、zoo4.cfg,这四个文件只有 clientPort 不雷同即可,因为客户端连贯不同的服务器要有指定的端口号,这里咱们在一台机器上搭建的伪集群,所以 dataDir 数据存储门路也应该设置为不同的。
这个时候咱们来依据这四个配置文件来启动四个 zookeeper 实例。
这个时候咱们会发现启动失败,因为须要咱们设置标识 ID,这个时候咱们找到咱们 dataDir 目录下,在咱们的 zookeeper1 目录下新建一个 myid 文件,并且在外面写上 1,而后在 zookeeper2 目录下也新建一个 myid 文件,并且在外面写上 2,以此类推,而后咱们再启动这四个配置文件。
这个时候咱们发现启动胜利了,咱们能够应用 status 命令来查看各个节点的角色状况。
这个时候咱们能够看到每个节点的角色了。
五、Zookeeper 羊群效应
面试官:嗯,小伙子十分棒,你能说一下 zookeeper 羊群效应是怎么回事吗,如何防止呢
我:zookeeper 用来实现分布式锁的时候,如果有一个客户端 A 拿到了锁,那么客户端 B、C、D 都会监听 A 有没有变动,如果 A 解决完业务开释了锁,那么这个时候 B、C、D 都监听到了音讯,都会去抢锁,如果有一百个正在期待的,那么就会有 100 个下来抢锁,像羊群一样一拥而上。
我:这样的话就会造成资源的节约,因为这么多节点被轰动了,然而拿到锁的只有一个节点,为何不只轰动一个节点呢。这里的话咱们就要应用 zookeeper 的偏心锁了。
六、Zookeeper 偏心锁怎么实现
面试官:嗯。那 zookeeper 偏心锁怎么实现的呢
我:在上一次面试的时候我答复了 zookeeper 有哪些个性,其中就有一个长期程序节点的个性,这个时候咱们能够每一次都建设一个长期程序节点,而后后一个节点监听前一个节点的变动,只有前一个节点有变动他能力感知到,再往前的节点变动他无奈感知到,也就不存在抢锁的问题。
我:这样的话就能够通过长期程序节点来实现偏心锁。
面试官:小伙子真厉害啊,我这边没有什么要问的了,你还有什么问题要问(面试官两眼放光)
我:额。。。咱们公司的会议室就那一个吗,那外面的餐桌是不是有点小了。。。
面试官:哎呀,当初公司正在高速倒退阶段,钱都用在了二手电脑的购买上,这样,你进来干两年,给公司挣了钱了咱们换个超大的桌子
我:(电脑还是二手的。。。)这样吧,我思考思考吧,我当初手上还有几个预约好的面试没有面呢,等我面完了再回答你吧。
面试官:行,你平时怎么学习呀,这么厉害
我:我通过看小奇的趣学编程系列,干货很多又十分乏味。
面试官:那你再给我举荐几个小奇趣学编程系列的读者过去吧,我急需人才
我:那你先买个大点的桌子吧放在会议室吧,人才也须要桌子能力办公(说罢我夺门而出,留下了洒脱的背影)
七、总结
这里对于 zookeeper 还没有整顿结束,文章前面继续更新,倡议珍藏。
文章中波及到的命令大家肯定要像我一样每个都敲几遍,只有在敲的过程中能力发现自己对命令是否真正的把握了。
如果感觉我的文章还不错的话就点个赞吧
本文参加了 SegmentFault 思否征文「如何“反杀”面试官?」,欢送正在浏览的你也退出。