转眼来曹操两年了,记得当时华为离职的时候,还和一同离职的一个开发说,得找个互联网服务端的干干,给出的理由却是半开玩笑,未来搞下AI,需要涉及到算法,我觉得Java用来练习算法比较合适,虽然是当时说说而已,但是的确找了一个服务端的工作,依旧在滨江
来曹操之前并没有摸过Java,因此入职前简单看了下语法,甚至数据结构图除外小撸了一遍,因为是面向对象编程语言,设计模式也“浏览”了几种,当然只能说是浏览,入职后一开始安排到了车务组,可能是因为前几个月车务的巅峰期已经忙完了,我去之后整个月相对清闲,需求连续改了半个月,这个时候我看了下接口测试自动化代码,发现之前撸的方向不对,需要的其实是dubbo框架以及spring基础,之前也没听说过,也趁这段时间每天晚上提升了下,永远也忘不了一个IOC研究了两晚上,实在没法想象写一段代码还要扯上一个XML来玩耍,工作当中最不好意思的是,第一次需求评审,我兴致勃勃地坐在了第一排,讲了一半我差不多睡着了,强忍着朦胧的双眼支撑到最后,因为那是一个电商系统,各种词汇,对于从来没接触过如此业务的东西的我感觉到了一些困惑,于是连续几个晚上熟悉各种业务词汇,第二次需求评审,其实还是快睡着了,不过这次我很乖地坐在了后排,这个项目的测试全程都在点页面,偶尔看下日志,虽然有些小无聊,心理还是很佩服那些业务玩得很精通的人
车务干了一个月之后,来到了一直干到现在的LBS项目组,Location Based Service,现在想来还是挺感激当时中台组长的,从公司wiki里才发现这项目是刚刚从中间件分过来的,可是找不到任何文档,原来开发人员也是临时抓了几个人凑的,只有源码,那会源码又看不懂,问别人别人也要看源码,钉钉群里各种奇葩的遗留问题,现在看来很难想象这会是一个出行系统的一个核心模块,刚去第一周就要上线一个功能,各种开关切换,开关里面还有开关以及配置选项,记得当时排列组合了一下有200多种生效可能性,还好这个只涉及到策略切换,其实这个需求发布了我当时还是没搞明白涉及到的调用逻辑是啥样的,也是从那时刻起,工作当中慢慢整理整个系统的实现框架以及调用逻辑,毕竟一切都是无,在此当中系统涉及到的一些中间件,数据库也是基本上每晚研究一种,不然根本没法测试,因为是基础服务,还涉及到一堆性能测试,包括后来的链路场景自动化测试,都是有收获,也有一些未完成的遗憾
总体感觉在曹操收获还是挺多的,简单回顾下旅程
收获
- dubbo,从搜索引擎看到官网,从接口测试到自建dubbo工程,注册中心测试过cp类的zookeeper和ap类的nacos
- spring framework,主要还是熟悉一些模块,bean,ioc,orm,aop,mvc,基于xml和注解
- springboot,起步依赖,自动配置,其它了解不多,主要还是创建工程,里面用的更多的还是spring framework
- mongodb,文档存储,正常操作,还研究了下geohash,存储方式,已经忘得差不多了
- redis,常用几种数据结构,常用操作,数据构造
- hbase,用来做持久化,熟悉基本操作
- mysql,正常crud,索引B+数数据结构,事务,innodb事务隔离级别,编程式和声明式事务
- zookeeper,只结合kafka熟悉了下基本操作
- kafka,基本概念,一堆名词,插件,
- h3,一堆API,空间索引算法
- 算法,动态选路贪心算法,测试手段
- 性能,常规基本性能压测,业务和技术层面配合调优
补张图,刚去公司换到这个项目一脸懵的时候,自己边测试边总结的LBS系统图,基本已经过时了,有很多其实不对,后续也都优化了不少,不涉及到商业机密,自勉吧
遗憾
- 订单回放,保证里程抓路正确性的稳定测试数据以及解决方案
- 性能分析,出现性能瓶颈后的深入分析方法
- 异常定位,计划做一个定位问题的平台,未完成