尤娜,我去面试了

前情回顾

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

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

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

面试前几天

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

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

(0)

大家都在看

  • 8086指令码汇总表(表格)

    8086指令码汇总表 8086指令有汇编语言指令和指令码两种形式,汇编语言指令形式经过汇编程序处理后生成指令码形式。 通过指令码形式可以帮助理解汇编语言指令格式的含义和用法。 80…

    数据库 2023年6月14日
    0154
  • jdbc-实现用户登录业务(解决sql注入问题)

    package com.cqust; import java.sql.*;import java.util.HashMap;import java.util.Map;import …

    数据库 2023年5月24日
    069
  • JavaScript进阶内容——jQuery

    JavaScript进阶内容——jQuery 我们在前面的文章中已经掌握了JavaScript的全部内容,现在让我们了解一下JavaScript库 这篇文章主要是为了为大家大致讲解…

    数据库 2023年6月14日
    0101
  • 5 float f = 3.4,是否正确

    不正确,赋值运算符 “=” 左右两边的精度类型不匹配。 Java中,有小数点的默认被存储为double类型,即双精度;而float类型的变量为单精度。 可以…

    数据库 2023年6月6日
    075
  • MySQL之多表查询、Navicat及pymysql

    一、多表查询 1.1 数据准备 — 建表 create table dep( id int primary key auto_increment, name varchar(20…

    数据库 2023年5月24日
    094
  • servlet映射路径匹配解析

    开头 servlet是javaweb用来处理请求和响应的重要对象,本文将从源码的角度分析tomcat内部是如何根据请求路径匹配得到处理请求的servlet的 假设有一个reques…

    数据库 2023年6月16日
    094
  • MYSQL–>事务

    事务是一组操作的集合,它是一个不可分割的工作单位。 事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,这些操作要么同时成功,要么同时失败 开启事务—->…

    数据库 2023年6月14日
    077
  • 给小白的 PG 容器化部署教程(下)

    作者:王志斌编辑:钟华龙 本文来自社区小伙伴 王志斌 的投稿。从小白的角度,带你一步步实现将 RadonDB PostgreSQL 集群部署到 Kubernetes 上。文章分为上…

    数据库 2023年5月24日
    0106
  • 条件控制

    1. 顺序结构 java代码顺序执行 2. 选择结构 if语句 格式 if(结果为booblean类型的表达式){ 语句体; } if(结果为booblean类型的表达式){ 语句…

    数据库 2023年6月14日
    054
  • MySQL 数据备份与恢复

    数据备份 使用 mysqldump 命令可以将数据库中的数据备份成一个文本文件,表的结构和数据以 SQL 的形式将存储生成的文本文件 mysqldump -u username -…

    数据库 2023年5月24日
    0125
  • Java 可重入锁的那些事(一)

    本文主要包含的内容:可重入锁(ReedtrantLock)、公平锁、非公平锁、可重入性、同步队列、CAS等概念的理解 显式锁🔒 上一篇文章提到的synchronized关键字为隐式…

    数据库 2023年6月6日
    0116
  • Java面试题(二)–MySQL

    1 存储引擎 1、简单描述一个Mysql的内部结构? MySQL的基本架构示意图:大体来说,MySQL可以分为 server层和 存储引擎层两部分。 ① server层包括连接器、…

    数据库 2023年6月16日
    084
  • 3、数组、集合、Lambda、Stream与Optional类

    一、数组: 数组保存在JVM堆内存中 1、数组的创建: (1)、一维数组创建方式一: //一维数组方式一 Integer[] array01 = {1,2,3}; System.o…

    数据库 2023年6月6日
    096
  • SQLZOO练习三–SELECT within SELECT Tutorial

    This tutorial looks at how we can use SELECT statements within SELECT statements to perfor…

    数据库 2023年6月16日
    051
  • Windows安装mysql数据库

    一般我安装mysql用以下两个方法: 一.phpstudy环境下的mysql安装 只需将mysql的bin目录配置到系统环境变量即可, 输入默认密码root即可登录 二.本地直接安…

    数据库 2023年5月24日
    086
  • 容器化 | 在 NFS 备份恢复 RadonDB MySQL 集群数据

    社区于上个月发布了 RadonDB MySQL Kubernetes v2.2.0,集群数据备份恢复的存储类型除了 S3,新增 NFS 存储。本文将为您演示如何进行 NFS 备份及…

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