Java软件工程师,
Sep, 2018 - Jul, 201910 months
我们做了款社交app叫一罐,面向孤独、社交恐惧的用户群体。在这里我的职务是负责后端和管理后台的研发,以及工具、技术的调研。
重构和维护整个管理后台系统。后台系统的功能包括登陆认证,权限控制,日记内容过滤和审核,处理用户举报,运营话题推送,优质内容推荐,用户反馈管理等。
从Mysql迁移大表到HBase,制定迁移计划,包括rowkey设计,性能测试,边界测试,新数据双写,老数据迁移。
调研和搭建HBase集群,微服务化HBase模块。整合HBase client和SpringBoot框架,封装一些通用逻辑,例如断线重连、查询结果组装成Java POJO。设计HBase的rowkey,满足业务查询需求。正式环境关闭自动分裂,配合pre-split,分散数据到不同服务器。
调研Percona的pt-online-schema-change用来解决mysql数据库的在线更改需求。包括导出真实数据搭建离线测试平台,测试边缘情况(比如负载很大,utf8数据etc),正式环境dry run,业务低谷期正式上线。 mysql自带的online ddl功能在业务量大的情况下会带来很大性能压力而影响用户请求,所以需要调研并测试pt-osc来解决在线表的变更性能问题。
维护自研的IM服务,满足PM的feature,满足低延迟高并发的技术要求。IM接口数据大部分基于Protocol Buffer做编码解码。
搭建自动化部署流程,基于Jenkins,Gitlab,Supervisor。
写一些Groovy脚本,把关系型数据库表转换成Java POJO,避免重复性工作。
写一些bash脚本,简化部署流程和方便运维服务器。例如:定时备份数据库,定时更新https证书,定时清理过期文件。