尤娜,我去面试了

前情回顾

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

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

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

面试前几天

尤娜系统经过一次拆分改造,又过去几个月了。目前系统运行稳定。但是并未向尤娜所说的有其他业务接入。在《提高用户体验的三种技术》中,我印象最深的是说学习要学一些工作中用得着的技术。最近在梳理业务,很想了解自己的下游小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点左右,我都会更新文章,如果你没有收到,记得点开【编程一生】公众号找一下(^▽^)

Original: https://www.cnblogs.com/xiexj/p/15996646.html
Author: 编程一生
Title: 尤娜,我去面试了

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610907/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux的文件结构和基本分类

    (注:此笔记默认操作系统为centOS7) Windows下的文件都是以盘符开头的,Linux中没有盘符,所有文件都在根目录下。 cd /进入根目录 ls /显示根目录下的文件查看…

    Linux 2023年6月7日
    092
  • 数据结构和算法的关系

    针对Python数据结构与算法(裘宗燕版)中的第一章绪论最后的问题 数据结构 概念 数据与数据之间的结构关系(数组、队列、树、图等结构) 类别 分为 逻辑数据结构和 存储数据结构两…

    Linux 2023年6月7日
    0123
  • pymysql模块的使用

    pymysql模块的使用 import pymysql 1、连接数据库 conn = pymysql.connect( user=’root’, # The first four …

    Linux 2023年6月14日
    090
  • 高速USB转4串口产品设计-TTL串口

    基于480Mbps 高速USB转8路串口芯片CH344Q,可以为各类主机扩展出4个独立的串口。CH344芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动…

    Linux 2023年6月7日
    0106
  • 后端编写Swagger接口管理文档

    在后端开发当中,编写好多个接口后需要通过注解编写相应的接口文档提供给前端调用接口实现前后端分离。 Swagger接口管理文档 访问接口文档的网页:http://localhost:…

    Linux 2023年6月7日
    089
  • PHP array_reduce()

    array_reduce array_reduce() 将回调函数 callback 迭代地作用到 array 数组中的每一个单元中,从而将数组简化为单一的值。 示例一: 示例二:…

    Linux 2023年6月7日
    0111
  • 四年测试的面试题分享

    其实想说为什么每次面试都要先来点自我介绍,说来说去简历上都有,我曾想过不能快速进入面试阶段嘛 我的专业技能: 基本上这些专业技能是在工作上用过或者自己摸索过,实战经验比较少,下面是…

    Linux 2023年6月8日
    083
  • 面试复盘(1)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0100
  • 搭建openvpn连接公司内网

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0115
  • Python的偏函数(Partial Function Application)

    这个概念说实话以前听过,但没深究过,也没用到过…但是被人问到了,就查来记录一下。 查下资料,发现这个东西说白了就是:部分参数有默认值的函数,Orz。再回过头来看他的英文…

    Linux 2023年6月8日
    096
  • 一篇文章学会shell脚本

    一、Shell传递参数 运行: 二、Shell数组 运行: 三、Shell运算符 1、算术运算符 注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的…

    Linux 2023年5月28日
    088
  • 判断Redis复制是否完成的方法

    当需要使用Redis的复制功能时,有时需要能及时的得到复制完成的信息,或者说复制的进度。 Redis提供的INFO命令,可以提供redis运行时的各种信息。我们这里需要关注Repl…

    Linux 2023年5月28日
    0119
  • Linux系统编程之进程概念

    注:本文中的部分图片来自互联网。如果有侵权行为,请通知我们删除。 [En] Note: some of the pictures in this article come from…

    Linux 2023年5月27日
    078
  • 渗透测试常用方法总结

    转载自 https://blog.csdn.net/qq_42636435/article/details/92839738 Original: https://www.cnblo…

    Linux 2023年6月7日
    072
  • 五分钟通俗理解自动驾驶

    大家好,我是良许。 这几年,自动驾驶这个概念非常火热,无论是百度还是谷歌,都做出了还不错的原型机,但是你真的知道什么是自动驾驶吗? 本文就花 5 分钟左右的时间,向大家科普一下什么…

    Linux 2023年6月14日
    099
  • shell 变量的默认值

    在 shell 脚本中,如果要使用某个变量又想给它设置默认值,可以用 XX=${YY-ZZ} 的方式,其中 ZZ 会是 YY 没有设置时的默认值 另一种用法是 XX=${YY:-Z…

    Linux 2023年5月28日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球