当年我面试前端进腾讯的

作者: | 更新日期:

说出来可能没人相信,当年我是一个前端。

本文首发于公众号:天空的代码世界,微信号:tiankonguse

一、背景

在《肯定是定多个闹钟的锅》中提到,我们在做中台、上云、走EP。

而上云的过程中遇到一个有一个坑,这不,今天又遇到一个坑。

二、坑

之前提到,云上隔离没做好,后来通过绑核解决了容器间互相影响的问题。

前几天压测的时候验证绑核问题确实解决了。
今天愉快的放量发现确实很正常。

到了下午流量上涨之后,突然收到失败告警。

一分析,吓尿了,本来一个容器绑一组核的,云上竟然把我的5个容器绑在了一组核上。
这样负载跑到 20% 实际就跑满了的。

赶紧找云平台的人看看,他们说确实是BUG,周一修复。
临时方案是一台台的迁移容器,操作一台的时候没问题,多台的时候并发问题导致绑在一个核上了。

那能不能快速找到哪些容器绑在哪个核上呢?
答案是不能, 比如在A页面找到容器名,去B页面搜索操作记录,最后拿着流水ID去C页面查看绑在哪个核上。

我有几百台容器,页面第一次也需要十几秒才转出来,这样的节奏人工操作下来一天都做不完。

于是我打算写一个脚本,来自动化计算。

三、决策

很幸运,云上提供了API,但是一问,API支持查看核相关的信息。

后来我想使用 Python 去模拟浏览器把页面抓下来,分析出想要的数据。
结果一打听,云上对登录态做了强校验,这个我可以复制浏览器的 cookies 来解决。
然后尝试拉数据,发现还是不同,再一打听,云上还对来源IP做了强校验。

这就没办法了,我只能拾起 javascript 来写个 js 脚本在浏览器上跑数据了。

很多人以为我是做后台的,这个确实没错,这五六年来一直做得后台高性能服务这一块。

而在五六年前的时候,实际上我也是做前端的。
当年进入腾讯,我就是以前端的岗位面试进来的。

只不过面试的最后一分钟,我对面试官说了一句:我一直以为后台也属于网站的一部分,我的网站后台也都是我做的。
于是入职的时候,我被分配在了后台开发组,当年用的还是PHP语言,那时候很流行MVC架构。

扯远了。

虽然以前我是做前端的,但是时间相隔太久了现在语法都忘记了。

没办法,只好需要啥就去搜索语法了。

四、撸代码

敲代码之前是先梳理整个流程。

大概分三步。
1、A网页请求参数是什么,怎么抓出容器基本信息。
2、怎么拼出B网页的地址,怎么抓出流水ID。
3、怎么拼出C网页的地址,怎么抓出绑核信息。

流程梳理出来后,就是写代码了。

结果在第三步的时候,发现存在跨域问题。

于是我只好将代码分两部分。
先得到前两部分的信息,输出一个json,然后复制到另外一个窗口,加载数据,继续后面的逻辑。

就这样,我就找到了那些有冲突的所有容器。

五、面试题

最后一步 check 的时候,实际上可以当做面试题来考察大家了。

现在有每个容器的IP 和 核数信息。
问哪些容器在相同 IP 相同核上绑定了, 分组输出有冲突的容器。

大家可以想象怎么做,这个其实是一个很简单的图论题。

六、最后

最后,我终于找到了云上所有冲突的容器。

可是最开始也说了,只能一台台的修复容器。

时间不等人,我只好进行了下云操作,把我的服务搬迁到了云下实体机去了。

思考题:文中提到的面试题你会做吗?

《完》

-EOF-

本文公众号:天空的代码世界
个人微信号:tiankonguse
QQ算法群:165531769(不止算法)
知识星球:不止算法

本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。

点击查看评论

关注公众号,接收最新消息

关注小密圈,学习各种算法

tiankonguse +
穿越