方向选择

  1. 算法
  2. 工具侧
    1. 优点
    2. 缺点
    3. 做过的尝试
    4. 体验
  3. 服务器优化
    1. 优点
    2. 缺点
    3. 做过的尝试
    4. 体验
  4. 业务仔
    1. 优点
    2. 缺点
    3. 体验
  5. 重构or架构优化
    1. 优点
    2. 缺点
  1. 深入业务, 不只关注分配到的任务, 看看任务的上下游 关注下整体实现, 毕竟其他服务器的代码都有, 甚至还可以看公共服务的代码
    1. 从客户端数据进来到回包回去的流程, 确实可以看看
    2. 对整体有把握才能知道可以优化的地方.
  2. 性能压测, 编译优化
  3. KM, 对于某个需求点(如排行榜), 可以看看一个排行榜有多少种实现方式, 每种方法的坑.
  4. KM, 可以多看看极有可能发现预期之外的感兴趣的点, 一旦用到项目上直接UPUP.

算法

不喜欢这个方面还是算了, 有开源的不用白不用. 项目里的无锁队列一年半了也没认真看过.

工具侧

针对开发中遇到的问题, 对于能够自动化的想法提供自动化工具, 优化已有工具的体验.

优点

  1. 工具与工具之间独立性强, 很容易就能写出一个新的工具, 投入少见效快
  2. 对于新的工具, 每次处理的时候也算是能了解一点内容

缺点

  1. 后续需要进行工具的维护, 占用时间
  2. 工具就算写好了搭配上文档, 也会有人@你去处理, 占用时间, 重复操作比较麻烦.
  3. 难于出什么深度内容

做过的尝试

  1. GM工具优化: 这个一直在用, 属于是评价比较好的, 改动也不是很大, 主要是提高了效率.
  2. Wireshark抓包, 后台抓包工具: 前者运行在Windows机器无法支持解密, 也没法进行良好的操作和筛选. 后者运行在服务器, 支持解析. 最终都是没有太合适的应用场景, 没人用, 也就没维护了, 预期有更高级版本, 但是现在不想写工具.
  3. 服务器自动冒烟: 这个也是在用, 自动构建内网or外网的服务器, 发布服务器和配置. py脚本也不太熟练, 写的时候也比较折磨.
  4. 日志分析: 相对简单的脚本, 但是人要一直投入在上面. 就算有文档也会被@去处理. 后面尝试接入骏鹰来解决, 但感觉可能又要维护骏鹰.

体验

最近半年也算是没有写新的工具, 主要是维护自动冒烟, 日志分析(可能要负责维护骏鹰).

目前比较排斥写工具类的, 感觉没有学到太多的深度的东西, 写了之后就要负责维护和答疑甚至绑在上面操作.

服务器优化

优点

感觉比较高大上, 而且难点是找到问题在哪里

缺点

做起来太难了, 完全没这方面经验, 没有什么大的成果.

做过的尝试

Prometheus+Grafana提供的火焰图插件: 感觉这个也没什么深度的样子, 只做了一个火焰图的插件, 感觉虽然能看到 但还是找不到热点的优化方法, 不是很便宜大碗. 受限于采集频率

编译加速: 这个感觉还是挺爽的, 文件变更数量较少情况下, 编译速度大幅优化了. 但是没能做到进一步深入优化.

bpf: 这个最终甚至都没学完, 也是感觉无法落地.

服务器二进制包大小优化: 都是有损优化, 想无损的话还是没啥用途.

体验

高大上, 经验积累性质强, 成本高, 难于出成果.

业务仔

优点

培养代码的基本功

缺点

适量的话倒是没什么缺点

体验

一直在积累相关的经验, 最近半年整理的也发布出去了, 后面也打算继续整理和发布, 也算是正向的吧.

反正需求一直会有的, 这方面还是不太额外花时间了.

重构or架构优化

优点

缺点

  1. 这个更难了, 上面的优化章节还不需要对服务器有太多深入了解, 这里就需要找到问题, 并且有能力进行改动.