2021 H1 Summary
最近公司在做半年总结 & 绩效考核,已经写了很多文档,趁着这个机会总结下自己上半年的情况吧
工作
目前在做的项目是 Config Center,在基础组件中,配置中心算是比较底层的模块,经常被其他组件所依赖。
上半年的工作主要集中在两个方向:
- SDK 功能对齐 & 融合
- Server-End 稳定性 & 可用性提升
SDK 对齐是历史遗留的问题,之前美团 & 大众点评各有一套 Config Center,两者的功能与实现有所区别。服务端数据 & 功能基本融合结束,两者已经并到一套系统中;而客户端 SDK 方面还存在一些功能没有对齐,主要包括 Java,C++ 两种语言版本。Java 版还好说,毕竟是主要开发语言;C++ 版的话需要重新学习下相关语法知识。我个人对开发语言其实是不排斥的,之前在字节跳动主要写 Golang,所以学习 C++ 我还是欣然接受的。不过在 C++ 具体的开发中确实遇到了很多问题,尤其是编译环境的问题,为此我还专门为项目组搭了几套不同版本的编译环境,并把踩下的坑都记录了下来。最终,Java & C++ SDK 的功能按期对齐,也算圆满完成任务。
稳定性方面主要做了两件事:多集群能力支持 & 客户端负载均衡优化,其中多集群已经落地,而负载均衡方面还需要进一步优化。稳定性这方面在我刚参加 Config Center 项目中时就一直想解决的,去年我专门把自己的想法梳理了下:
为什么要支持多集群呢?因为现在项目架构存在一些痛点:水平扩展能力不足,数据不一致问题,集群稳定性问题,业务流量隔离性差,可维护性不足等,这些痛点均可通过集群拆分来实现,即将现有两个比较大的集群按照业务特性拆分成多个小集群。通过多集群,期望能实现业务配置数据分片,提高水平扩展能力;业务流量隔离,提高核心业务的稳定性;以集群为单位,提升可维护性。
技术方案经过了多轮评审,内部两轮评审 + 部门两轮评审,前后耗时一个多月才最终确定实现方案。整体的方案相当于将当前架构做了进一步演进,算是相当大的改动吧。目前已经成功落地,拆出来了一些集群,显著地提高了服务整体的稳定性 & 可用性。
负载均衡的背景主要是:单集群内各个节点负载差别有时较大,导致集群整体负载能力不高。有时候会收到由于部分节点负载过高导致的告警,所以我在想办法优化负载均衡。之前的实现是一致性 Hash,看起来能够实现很好的负载均衡,但是理论与实践还是有点差距;单纯的一致性 Hash 不能实现完全的负载均衡,总会存在热点节点。
我的做法是模拟集群内各个节点的实时负载,保证只下发低负载的节点。事实证明,该方法有用,线下环境验证后基本能够实现很平均的负载;但是负载平均了,引发了别的问题,就不详述了,总而言之,该方法还需要进一步优化。
工作总结
上半年工作完成度比较不错,有较大的产出,同时对自己个人能力的提升也有很大的帮助;绩效方面也基本符合自己的预期;总体打分的话在 90 分左右。
学习 & 生活
- 上半年主要对一些分布式系统的论文比较感兴趣,也看了不少,但是还没沉淀成文档,接下来会接着重新看几遍。
- 重新把 DDIA 看了一遍,做了一些笔记,又有了新的收获;这本书真的是常读常新。CSAPP 尝试啃下来,啃了一半后放弃了,越到后面既难懂又无趣。现代操作系统这本书一直没看,重新捡起来了;K8S 相关知识刚刚接触。
- 英语方面一直在学习,从一开始只背单词,到现在背短文,短期内英语水平没有明显提高,还需要继续坚持。
- 最近半年一直坚持运动,主要是晨跑,一共跑了 300 多公里;偶尔举会哑铃,做点仰卧起坐。目的是为了让自己保持健康的身体状态,多工作几年。
- 投资理财方面刚接触,摸着石头过河,需要多补充相关知识。
下半年规划
- 工作方面还是集中在稳定性方面,希望能多有一些有价值的产出,为明年晋升做准备。
- 论文与技术书籍还是一直要看,英语坚持学下去,理财知识多接触;希望同时能多读一些闲书,丰富下精神世界。