职业经验 坎坷的 2020 年

花菜 · 2021年01月01日 · 最后由 云深不知处 回复于 2023年07月17日 · 5701 次阅读

工作

年初 - 大厂梦破碎

一年之内换两次工作,工作 6 年来首次经历这种情况。

年初的时候,经历技术四轮面试,n 轮和 HR 各种 battle,疯狂压价,给出的月薪比跳槽前低了几 k。理由是他们公司规模大,年终至少 3 个月起步,满配公积金和社保,每个月有 1.5k 餐补。

降薪跳槽这种事情,我实在不能接受。我只能继续面其他公司,并且拿到了其他公司 offer,才愿意给我想要的薪资。

确定 offer 之后,就开始提交各种资料,接着背调(职业背景和犯罪记录),最后终于入职。(历时接近三个月)

实在是太不容易了!!!

结果,万万没想到,入职一周就想离职。

有几个原因:

  • 技术落后,9012 年立项的项目,技术栈居然是groovy
  • 没有接口文档和设计文档,前后端坐在一起开发???,有部分功能外包出去,修改代码居然直接替换文件的方式,不用 Git 管理。
  • 年度优秀项目经理兼产品经理,对接了客户的需求后,不确定的部分,叫我们猜需求???
  • 项目管理完全靠微信,Tpad 纯属摆设

第三周结束后,经过艰难的心理战后,决定开始投简历和面试,一周内就拿到了一个还不错的 offer!

于是跟 leader 提出离职。leader 和面试过我的同事都一脸懵逼,并且极力挽留。

无奈,我已经失望透顶了。当时想着是,终于跟大厂沾上关系了,实际只是打着鹅厂合作伙伴幌子的小作坊(离职时有近 2k 人)。

年中 - 重新起航

终于熬到了 last day!只是过了周末,没有多余的休息时间。就在新公司(也是近 2k 人的规模)入职了~

新工作是大数据测试,一个新的挑战,完全没有接触过的领域。

技术栈是Hadoop全家桶,Flink,Spark,HDFS,Hbase,Hive,Impala这些以前一个都没接触过,甚至没听过!

[rvcvkD.jpg

还有Redis,Kafka,Mqtt这些中间件也只是了解过,没有实战过。

大数据测试和之前做过的电商类接口,功能测试最大的最别就是没有界面,造数据只能依赖脚本。

入职后一个月左右,另一个大数据测试的同事休产假了。大数据测试就剩下一个还处于懵逼状态的我和一堆脚本。

公司发展很快,需求也越来越多,每次造数据都是在那一堆脚本上改来改去。相当的麻烦,不好维护。

于是我就开始在 GitHub 上面找有没有通过 http 接口的方式来发送 kafka 和 mqtt,避免总是改动脚本。结果很遗憾,并没有找到类似的库。

我也把想法告诉了休产假的同事,她似乎也没有更好的想法,只是说了想做就去尝试。

好!没有轮子,那就自己造轮子!

正好之前我也维护了一个接口测试平台,现在要做的只是实现 http 转发 kafka 和 mqtt 即可。

解决这个问题的难点是如何适配各种类型的 kafka 和 mqtt 主题。有 string 类型和 json 类型。

json 类型算是比较简单,内容是 key-value 方式,和顺序无关。直接发送 json 的原始消息即可。

string 类型是通过特定的分隔符切割后变成数组,数组的每个元素代表不同的字段。

例如:也是消息体”1609484030,R,hc0“,业务系统收到消息后,按照,切割后变成["1609484030","R","hc0"],再转换成 Java 对象

{"timeStamp": 1609484030, "start":"R", "deviceId":"hc0"}

为什么原始消息不发 json,而是选择发字符串。答案很简单,物流网设备流量很贵,字符串节约成本,发字符串的消息体容量会远远小于 json。上面只是一个简单的例子,实际业务字段可能有几十个。

但发字符串主题有个很麻烦的问题,就是测试的时候,字符串比较长的时候,完全不知道某个位置上的字符是什么意思。

测试是不需要考虑流量成本问题,因为不需要用真的设备发消息,只是模拟设备发消息即可。

最后的方案是:定义一个http接口,接收json格式的消息体,按照指定的模板解析成字符串,再转发成mqtt或者kafka消息

实际效果如下:

rxygzR.png
rxyroF.png
rxyDdU.png

有可视化界面后,造数据相当方便,效率也提高了很多。不再需要维护那一堆脚本,并且只需要一个人造好模板,其他人无需任何配置,直接使用!因此我也把这套推荐给开发的小伙伴们,他们也愉快的就接受了。

我们服务每天处理消息量是上亿级别的,因此几乎每次上线前都要做压测。

上面只是一个单条消息的做法,经过改造后,能实现批量发送,但发送千万级消息,耗时是小时级别的,效率较低。

一段时间后,要对新接入的mqtt服务做并发压测,因为PythonlocustJavaJmeter不能完成需求,最后通过Goboomer加成了任务。Boomer 实战压测 mqtt,2w 并发轻松实现

尝试到Go的高性能后,果断用Go重写之前Python的批量发送消息接口。

rx2iSH.png

重写和性能调优之后,1kw 消息仅需要 2min。相对之前的Python来说,性能可以说有了质的飞跃。

其他的例子就不再赘述了~看看代码贡献度(6 月份在现在公司入职)

rx2h1H.md.png

生活

  • 感情

刚过完年上来广州,就得了过敏性紫癜,症状很恐怖,我甚至都有点自暴自弃了。一度痛到无法入睡,叫了人生第一次 120!

很幸运,当时是和女票同居而不是我一个人在租房住,她可以照顾我。真的很感激女票不离不弃~经历过前五次失败的恋爱,我对爱情也产生了不少怀疑。

甚至也对自己产生了怀疑,我是否能够处理好亲密关系,维持一段长期稳定的感情。所幸,女票让我打消了一切的疑虑。

11 月底的时候,终于安排双方家长见面,结果很圆满。没什么意外的话,明年就能结婚喽~

  • 读书

今年经历了两次跳槽,下半年也很忙。整体的读书时间比 19 年下降了近 80h

rxhhIP.md.jpg

rxhnDs.md.png

rxhmuj.md.jpg

  • 兴趣爱好

已经好几年没碰过游戏了,唯一的爱好就是打台球。19 年也完成人生的第一次黑八一杆清台,所幸被监控见证了,超级开森~

20 年虽然下半年时间不多,还好趁年初手感还在,也完成了一次https://www.bilibili.com/video/BV1W7411q7cZ
(社区的 markdown 现在不能识别 iframe 标签插入视频,只能通过发链接的方式装逼了)

  • 健身

19 年是 73 次,今年因为疫情原因,报的健身房跑路了。5 月份开始,才在女票的房子附近重新报名。周末来找女票的时候才可能去,没统计,估计有 20 就不错了。

2021 年

可能要从现在的半业务测试 + 半测试平台开发,转成全职测试平台开发~

期待新的挑战~

共收到 23 条回复 时间 点赞

真是巧了, 我们的 cdh 集群的命名跟你截图的一样。。。。 还有 kafka 不是有 java,python,golang 的客户端么,你需要的不是这个么?

不用 go 就整不了这么高的压测需求?

孙高飞 回复

http 转发就是用 go 和 python 的客户端,转发是为了解决拼接消息体麻烦的痛点。
另外也封装 http 查询 redis,hbase 这些接口,这样一来就可以通过 http 接口的方式实现业务流的自动化了。

Jmeter 完全可以的,只是我不熟悉。为了快速出活,我就用了 Go。

上进的测试人,加油

匿名 #9 · 2021年01月02日

测试人加油👋

不知不觉我工作也六年半了😂 ,时间好快,加油加油✊

花菜 #11 · 2021年01月03日 Author
bugVanisher 回复

加油,测试人~

看界面好像是 fasterrunner

花菜 #13 · 2021年01月04日 Author
stevenxu 回复

没错,就是~

花菜 回复

我在我们公司也推了这个,并且改了(优化)不少东西,目前用起来感觉还不错

花菜 #13 · 2021年01月04日 Author
stevenxu 回复

嗯嗯,FasterRunner 本身做得不错,比较简单易用。我另外把优化完的开源出来,阔以一起探讨~
https://www.yuque.com/lihuacai/sggdx7/cn5ncg

优秀的测试人

棒棒哒,纯测开岗位过滤嘛

挺不错的。

好厉害,测试人!

我们目前有用 ES、Kafka 这样算是大数据测试吗

花菜 #19 · 2021年06月21日 Author
回复

大数据可以分为两种,实时计算和离线计算,你用到这两个组件是大数据很常用的。
具体算不算,我也不知道怎么定义比较好。

花菜 回复

我现在就是用 es 的一些查询功能,还有 Kafka 的生产者消费者。真正的大数据测试要会写代码吗😅 😅

花菜 #23 · 2021年06月22日 Author
回复

懂大数据常用的组件 hbase hive kafka es redis 这些就差不多啦,再高级的就是理解 Flink Spark 这些程序原理,遇到问题能够看代码定位,再再高级可能就是对 Flink 算子进行分析,提出优化建议等等

我想知道怎么入职一个全新的邻域 感觉好难啊 啥啥都不懂别人会要吗

现在看来,纯测开不是好的选择,必须有较重要的业务握在手里

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册