我的技术栈

以下是我曾经工作中或现在深度用过的

语言

  • Python
  • JavaScript
  • Go
  • Java

Framework

Python
  • SQLAlchemy
  • turbo
  • tornado
  • Flask
前端
  • Emberjs
  • React
Go
  • mux
  • Gin
  • Gorm
Java
  • Spring
  • MyBatis

编辑器

  • vscode
  • sublime text 3
  • vi
  • Goland

数据库

  • MySQL
  • MongoDB
  • Redis
  • ES

异步任务队列

  • celery
  • rq
  • beanstalkd

MQ

  • rabbitmq

云原生

  • k8s
  • istio
  • nginx-ingress

分布式缓存

  • Codis
  • Twemproxy

网关

  • Nginx
  • Openresty
  • Envoy

运维

  • Consul
  • Ansible
  • Fabric

工作发展史

CHANGE 2024.1

阿里巴巴

  • 使用 Spring 实现 HTTP 到集团 HSF 服务的本地 Proxy
  • 使用 karate 完成了主要服务核心 HTTP API 的自动化测试
  • 解决了内部的钉钉文档编辑器旧版本无法输入中文的问题,内核是 slate 0.5 之前的版本
  • 升级了内部系统的编辑器到最新的版本,并且保证了旧版本在同一个系统的兼容存在,背后改了大量的底层包的依赖
  • 使用 x6 实现了一个基于 react 的流程图工具

瓜子

  • 重构、优化、合并了云平台多个服务(部署、构建、配置中心、定时任务等等),减少了不必要的服务维护,实现了关键服务的无状态化,支持横向扩展
  • 实现了关键服务自动化测试,支持并行执行集成测试,提升了CI效率,缩短了发布时间
  • 替换了关键服务的 graphql 框架,支持自动根据 DSL 生成服务代码,实现了一份 graphql DSL 多端共享
  • 实现了CICD全链路监控
  • 实现了前端应用的统一部署,降低了集群资源的占用率
  • 实现了k8s集群从 1.10 升级到了 1.17
  • 替换了 ingress 网关 istio 为 nginx
  • 建立了支持全文索引开发知识库和用户操作手册,降低人员流动带来的风险

微车

  • 重构并优化了 RPC Proxy 服务,实现了连接管理、服务自动上下线扩缩容、健康检测,支持简单的分组路由策略
  • 重构并优化了推送服务、缓存服务、消息队列等关键服务,提升了百万用户的推送效率,提高了IOS和安卓用户的触达率
  • 实现了缓存集群从 tweproxy 到 codis 的迁移
  • 实现了 MySQL 集群、MongoDB 集群的升级
  • 实现了核心服务全链路的监控和可视化
  • 实现了各个项服务构建、发布、运维等一些列标准化流程,并且实现了自动化和在线化,降低了发布门槛,提升了交付效率

安卓壁纸

  • 一周时间写了个在线答题积分游戏,实时在线人数超千
  • 实现了前端 UI 组件、 web framework、分布式缓存系统、分布式爬虫系统、安卓自动化打包工具等等
  • 实现了文件系统上云、所有服务从物理机迁移到阿里云
  • 实现了 MongoDB 集群从 MasterSlave 升级为 Replication,并且成功从物理机迁移到阿里云
  • 开始带团队

技术发展史

CHANGE 2018.7

我读的是软件工程专业,大学在云南大学读的,空气很好,没有雾霾,云大除了校园很漂亮之外,软件工程专业在学术上并无太大建树,倒是本院院长和副院长等若干人等确实很牛逼,在国内国外都享有盛誉,可惜我从他们身上学到的不多。

科班出身,历经全英文的 C 语言、汇编、模电数电、编译、数据库、网络原理、操作系统,我的计算机生涯就这么开始了。当然为了多掌握几门语言,又学了 C++、C#、Java、PHP,一毕业用 Java 谋生,每天都是 J2EE 那一套,看不懂未来,也看不懂 Java 未来,觉得无聊,遂转行,自学了 Python 去创业了。

创业公司技术栈是 Python 和 MongoDB,于是开始走上了后端以 Python 为主,存储以 MongoDB 为主的开发生涯,逐渐从一个 Linux 的菜鸟到一人足以运维上百台机器,千以计的我没有试过,当然我不是专职做运维,而是创业这件事让我什么都干了。

创业历经 4 年,经历了太多,也思考了太多,从技术选型,技术方案调研实施落地,技术升级和改造、技术团队管理,一步一步把自己逼成了一个什么都干的程序员,当然最终大钱没赚到,成长了不少。

创业的时候没想过自己的职业生涯,就是一个心思想把事情做好,让公司活下去,让公司起来,其实最后看明白了,创业成不成,技术就是火车头,但是如果火车司机不行,火车头跑的再快,也无济于事,方向和事情不行,意味着一切努力都像在做除法,完全没有放大效应,创业就这样无果而终了。

2015 ~ 2016 年我干了几件事。

第一,用工程的手段把创业几年后端积累做成了一个工具集,包含:

这些工具集虽然没有完全实现我想要的,应付大部分场景的业务完全够用了。

第二,创业期间我做过一些前端的工作,为了解决复杂前端的业务自己用 jQuery 实现过一个 framework,那个时候前段最火的是 backbone,react 和 vue 还没问世,这件事让我对前端有了很深的认识,后来为了解决复杂的 CMS 系统,利用 emberjs 实现了一套解决方案:

这些前端的工具集足够让我一个后端程序员用最短的时间搭建完成一整套产品所需要的方方面面。

2017 年,我的大部分精力都在家庭身上,照顾孩子,这期间我断断续续写了几个小工具:

2018 年,我用 Go 和 Emberjs 写了一个运维平台,支持应用管理、发布、日志回显、consul 服务注册等等功能,主要解决了团队运维缺乏标准化的问题。