前情回顾

 

从前,有一个简单的通道系统叫尤娜……

尤娜系统的第一次飞行中换引擎的架构垂直拆分改造

四种常用的微服务架构拆分方式

 

面试前几天

 

尤娜系统经过一次拆分改造,又过去几个月了。目前系统运行稳定。但是并未向尤娜所说的有其他业务接入。在《提高用户体验的三种技术》中,我印象最深的是说学习要学一些工作中用得着的技术。最近在梳理业务,很想了解自己的下游小B公司是怎么做的。

 

自己通过对业务的观察有了初步的想法,很想确认一下。想想小B毕竟是我的好姐妹,我要去他们公司参观学习她应该不会拒绝吧。于是我约了小B来我家聚聚,顺便说出了自己的想法。没想到她跟我说了另外一件事。

 

小B说出了当年上学的时候,小A把她床板坐塌了,她们大吵一架,之后她们一直再没说过话。这背后有个我不知道的原因。

 

那时临近毕业,有个大公司招聘一个出国进修2年,回国直接担当要职的岗位,只要一个人。当时有个专场招聘会,小A是陪小B去应聘的。小A在等小B排队走流程的时候,觉得来了都来了,等也是等,不如索性自己也试试。

 

结果,小A竟然成了那唯一的幸运儿。后来,那个公司的工作人员还特地打电话给小B告知结果,并表示觉得公司也很认可小B,只可惜名额只有一个。小B为了这个职位准备了很久,最终却被小A误打误撞取代了。她咽不下这口气。那天,小A把她床板坐塌了,她觉得小A肯定是故意的,就是处处针对她。

 

小B说完,深深叹了口气。真诚的问我能不能去她公司,至少有一个好姐妹和她在一起,让她不再这样孤独。我很犹豫。小B看出来了,只说来不来没关系。正好我也想了解小B公司的系统逻辑,小B就找那个项目的人来找我聊一聊,走个面试的流程。如果我最终决定不想来,权当交流技术。

 

面试当天

 

那天,我跟尤娜请了一下午的假,去了小B公司面试。

 

面试官大概知道我和小B的关系,非常的客气。面试一开始让我做了自我介绍,面试官边听边不住地点头。然后问了我项目经历,因为我们是合作方,所以也聊得很多。我给他画了我们系统架构:

 

 

 

他问我,如果kafka出现了故障,业务连续性怎么保证。我有点蒙,直接了当的问面试官什么是业务连续性。

 

面试官告诉我:业务连续性是计算机容灾技术的升华概念,一种由计划和执行过程组成的策略,其目的是为了保证企业包括生产、销售、市场、财务、管理以及其他各种重要的功能完全在内的运营状况百分之百可用。业务连续性是覆盖整个企业的技术以及操作方式的集合,其目的是保证企业信息流在任何时候以及任何需要的状况下都能保持业务连续运行。

 

我想了想,觉得这个概念和稳定性、高可用、容灾容错和弹力设计都是近义词。但是这五个词又有所侧重。

 

我如实跟面试官说在尤娜系统中我还没有设计这块。如果让我设计的话,那我可以设计一个降级操作,如果kafka出现故障,降级http直连。

 

面试官接着问:用kafka是为了解耦,这种降级不是又耦合了呢?高峰期压力怎么办呢?

 

我想了想说:可以在直连上采用限流操作,确保不对下游造成巨大的请求压力。虽然在降级时回归直连是有耦合,但不是强耦合。只有降级时使用,上下游之间的依赖仍然是弱依赖

 

面试官继续因势利导:那如果这时候流量很大,一大半的请求被限流。请求失败了怎么办呢?我顺着这个思想又想了补救方案。

 

这时候面试官语重心长的对我说:你的想法可以解决问题,但是同时会引入新的问题。这样整个架构设计就越来越复杂。而本身这个问题并不复杂,回到最初的问题:kafka出现故障,本身有容灾机制。我本身想问的是kafka的副本、ISR、failover这些。尽量采用组件本身的容灾,也是一种领域的内聚。

 

面试出来,觉得自己在架构设计中成长了一些。我没有直接回家,而是回到了公司找尤娜。我如实地把自己面试的经过以及小B的心结告诉了尤娜。


尤娜叹了口气,说她一直知道这件事。在学校时小A就告诉了尤娜,并诉说了自己的纠结。小A当时有自己的苦衷,让尤娜不要告诉别人,哪怕是我。最后其实是尤娜和小A一起运用资源给小B争取了差不多的一个机会。

 

尤娜说希望有天小A和小B能够打开心结。至于我,她尊重我的选择。我勾了勾她的鼻子,说:“我怎么舍得离开你。” 我俩相视一笑,今晚又是我们的闺蜜之夜。

 

编者按

 

我写这个系列,原本是【编程一生】用户群里有朋友提到想知道我们项目中具体是怎么做架构的。这个我没有授权是不能说的。说了也没有很强的普适性。但是想到我可以虚拟一个项目,诠释【架构不是设计出来,而是演进出来的】。通过人物的成长,读者也如同亲身经历了一个项目的各个成长期,从而增强架构底蕴。

 

不管是面试有后门,还是合作方在面试中有优势,都是常见的社会现象,也不能一杆子敲定是好是坏。而面试中的问题是很多年前去阿里面试的真实面试题改编,请朋友们能够自己闭上眼睛自己思考一下这道题自己的思路是怎样的。欢迎留言一起探讨。

 

在尤娜系列的第一篇有朋友问为什么小A和小B到毕业一直没有说话,我其实心里有一整个故事架构蓝图。考虑到故事本身设计的反转性,当时没有明说。

 

作为一个程序员出身,不管写程序还是写故事。逻辑都是最重要的,如果发现故事中有逻辑问题,很可能是个伏笔哦。

 

另外,大家可能注意到故事中的人物都是女生。这也是我除了讲技术之外想塑造的另外一个主线。现在的很多电视剧、电影,明明讲的是女生的励志故事,具体事件中却是靠着男生的力量一步步向上爬。这并不反映社会现实。那也不是什么励志。希望本系列能掰正这些电视剧和电影对女生的误导。想活成自己想要的样子要靠自己,这一点男生女生没有什么不同。

 

编程一生

因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。

PDCA方法论,检查自己是否错过更新:每周三晚上8点左右,我都会更新文章,如果你没有收到,记得点开【编程一生】公众号找一下(*^▽^*)

posted on 2022-03-12 18:05  编程一生  阅读(813)  评论(2编辑  收藏  举报