当年我面试前端进腾讯的
作者:
| 更新日期:说出来可能没人相信,当年我是一个前端。
本文首发于公众号:天空的代码世界,微信号: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
公众号ID:tiankonguse-code
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。