您好!大家好,我是小七,不靠谱的程序员小七打算在轻松幽默的对话中分享一些技术。如果你觉得通过小七的文章有所收获,那就给小七点个赞吧。文章持续更新中1.前言作为一个Java螺丝刀,你不需要掌握造火箭的能力就可以干活,但是面试官就是让兄弟们为难了。我受不了了。只能带着我家火箭当场向面试官证明自己了。虽然我的第二脚可能算不上火箭,但是和火箭的原理差不多。它们都被点燃并发射到天空中。掌握了这一点,就相当于掌握了造火箭的能力。关键是我的小工具工作得很好。我放到面试官桌上的时候,面试官就直接和我谈工资了。如果我能造火箭那就不一样了。至于你的问题为什么面试官明明只招会拧螺丝的玩家,却问了火箭的底层原理,如何搭建火箭集群,如何保证火箭发射的可靠性(如果是我再发射一个)发射失败),以及如何保证火箭的可靠性。幂等性(同一个火箭多次发射和发射一次效果一样)这个问题不用问面试官。上次问过,面试官的回答让我无语。..我:面试官你好,请问你为什么雇我来拧螺丝,却问我火箭的底层原理?采访者:不全是你的错。..我:我们?我们怎么了。..面试官:十年前我采访过员工。当时只有一些人说会拧螺丝。我采访了一个并雇用了一个。面试官:八年前我面试过员工,大家都说会拧螺丝。不知道招谁,然后一两个人说可以造摩托。听说他们不错,毕竟我就这两个,只会做摩托车的。他们把钱花在拧螺丝上,还请来了两个摩托车制造商。面试官:我五年前采访过员工。每个人都说他们可以制造摩托车。我不知道该雇用谁。然后一两个人说他们可以造汽车。我曾经以为它不错。我老员工不会造车,会造车就来,工资比老员工高。面试官:三年前面试员工的时候,大家都说会造车,不知道承认谁。然后一两个人说他们可以造火箭。我只能承认这两个能造火箭的人。就是这样。..,而且为了面试,还学习了一些火箭的原理。我们摩托修理厂根本就不用这些原理,但是也没办法,谁让这些人这么绕口。采访者:今天我只能采访会造火箭的人,虽然他们只会拧螺丝。..我:那既然说会造火箭的人只会拧螺丝,那你们为什么不直接招只会拧螺丝的玩家呢?面试官:你觉得我只拧螺丝不招面试吗?我招募了,结果是。..我:结果如何?采访者:他拆了公司唯一的火箭。..2、采访在一个阳光明媚的星期二,我来到了《天通苑之战生死西二旗》中著名的西二旗桥。我怀着忐忑不安的心情走向了即将去面试的公司。一路上我很不安。不知道今天的面试会不会顺利。面试官以后会不会刁难我?...不知不觉来到公司楼下,给hr打电话。她说门是给你留的,但是门没锁,直接上来。..HR:小七,对吧?你带简历了吗?我:拿着,拿着,拿着。..(吸),我把简历递给HR,急切的问什么时候开始,等不及了。..HR:别着急,先做一套笔试题吧。我:哦,我收到了一套笔试题,就来到了我做试题的会议室。这间会议室不大,却坐满了人。..我:我做完题发现微信群里的朋友问我在干什么,就拍了张照片发给他们。我是故意没接的,不过这张桌子太小了,人太多了。毕竟0.8平米的桌子周围坐??着8个人。..我:后来公司里的人要开会,差点把我们上班的人赶出去。这家公司我也服了,看我虐他们面试官一会儿就完了。面试官:让我自我介绍一下。我:面试官你好,我本科毕业于山东翔澜,精通挖掘机技术。研究生进入华清大学攻读火箭研发技术,进入大北大学攻读博士学位。学生研究如何在高并发火箭发射条件下保证火箭的一致性。不会导致其他队友误发射火箭弹。3、Zookeeper集群模式和集群角色采访者:是的,小伙子,那你说说zookeeper集群有哪些modesmodel。面试官:嗯。zookeeper集群中有哪些角色?我:三个角色。一种是Leader角色,可以处理读写请求。集群中只能有一个Leader角色。二是Follower角色,只能处理读请求,也是Leader的候选。节点,如果Leader节点挂了,Follower节点可以被选举为Leader节点,第三个是Observer节点,只能处理读请求,不能参与Leader选举。4.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命令查看各个节点的角色。这时候我们就可以看到各个节点的作用了。5.Zookeeper羊群效应采访者:嗯,小伙子很好。你能告诉我什么是动物园管理员羊群效应以及如何避免它吗?我:在使用zookeeper实现分布式锁的时候,如果有客户端A拿到锁后,客户端B、C、D会监听A有没有变化。如果A处理完业务就释放了锁,那么此时B、C、D都听到了消息,都会去抢锁。如果有100个在等,那么就会有100个上来抢锁,像一群羊一样蜂拥而至。我:这样会造成资源的浪费,因为这么多节点报警,但是只有一个节点拿到锁,为什么不只有一个节点报警。这里我们将使用zookeeper的公平锁。6、Zookeeper公平锁如何实现面试官:嗯。那么zookeeper公平锁是如何实现的呢?我:上次面试我回答了zookeeper有什么特点,其中就有临时顺序节点的特点。这时候我们可以每次创建一个临时的时序节点,然后下一个节点监听前一个节点的变化,而他只能感知前一个节点的变化,他无法感知前一个节点的变化,所以不存在抢锁的问题。我:这样可以通过临时的顺序节点实现公平锁。采访者:年轻人很棒。我在这里没有什么要问的。你有任何问题吗?(面试官眼睛一亮)我:嗯。..那是我们公司唯一的会议室吗?那里的餐桌是不是有点小?..面试官:哦,现在公司正处于快速发展阶段,钱都花在了购买二手电脑上了。就这样,你来了两年,也为公司挣了钱。换一张超大的书桌吧。我:(电脑还是二手的。。。)那我考虑一下。我还有一些预定的采访我还没有见面。完成后我会回复你。面试官:好的,你平时是怎么学习的?你这么好。我:看了小七的趣味学习编程系列,很有趣也很有用。面试官:那你可以推荐几本《编程小窍门》系列的读物。我急需人才。我:那你可以买张大一点的桌子放在会议室。终究是冲出了门,留下了帅气的背影)7.总结zookeeper这里就不整理了,后面会继续更新文章,建议收藏。文中涉及的命令必须像我一样多敲几次。只有在敲打的过程中,才能发现自己是否真正掌握了命令。如果觉得我的文章还不错,请点个赞。本文参与SegmentFault思维随笔《如何“反杀”面试官?如果您正在阅读,欢迎您加入。
