# 付超航
手机/微信:15001995006
邮箱:geektry@qq.com
博客:https://geektry.com
GitHub:https://github.com/geektry
地址:上海市 浦东新区 张江镇
# 教育经历
# 2012年9月-2016年7月 上海电力大学 - 学士
专业:计算机科学与技术专业(四年全日制本科)
证书:学士学位证书、CET-4
# 工作经历
# 2020年4月-2022年1月 咪咕视讯科技有限公司 - 系统/平台开发
项目:互动内容审核系统(咪咕视频等APP的UGC审核系统)
职责:项目技术负责人,后端开发
技术栈:Java、SpringFramework、SpringBoot、SpringCloud、Redis、ElasticSearch、MongoDB、Kafka、MySQL等
内容:
在咪咕视讯的一些在线服务中,有大量UGC内容需要一个审核系统做内容把关,如咪咕视频、咪咕VR、咪咕影院、咪咕视频海外版、咪咕直播等的聊天室、弹幕、评论等内容,且需要在APP使用高峰期间支撑1900w在线用户产生的内容的审核请求。
为了在2020东京奥运会期间对上游服务稳定地输出审核结果,需要对互动审核做些架构和实现层面的针对性优化,并且将之前系统里一些不合理的设计纠正过来,尽可能避免可能出现的隐患。此外,还需要承担管理方面,对两名组员进行任务分配,技术指导等的工作。
带着这个目标,梳理了业务流程代码后,对走了MySQL或Redis的网络IO处的数据,逐一使用EhCache做了本地缓存处理;对并发量最大的服务进行了扩容,以及双机房多活部署;在不改变原有业务的前提下,重构了审核人员的抢单逻辑,来规避了MySQL死锁的问题;以同步数据的方式重构了原先跨系统访问数据库的实现;将循环写库的地方重构成缓冲池批量写数据库的实现;以及将一些不合理的代码存放,做了模块迁移。
最终,将互动审核的TPS提升了14倍+,成功支撑了奥运期间日百万审核量。
项目:斥候(一个基于SkyWalking和Arthas的监控系统)
职责:项目总负责人,后端开发
技术栈:Java、SpringFramework、SpringBoot、Python、SkyWalking、Arthas、ByteBuddy、gRPC、Netty等
内容:
在咪咕视讯的内容中台,运行了超过20个业务系统,100个微服务,期间不少业务报障涉及到横跨多个系统,人工排查故障需要让多个系统逐层排查,效率低下。
为了更好地从业务层面监控咪咕视讯内容中台的微服务,我担任了斥候的总负责人兼后端开发,带领两名组员一起开始了斥候的自研之路,目标是先提升排障效率,再通过一些例如某个方法的平均执行耗时,某段时间内的请求次数等指标来实现提前告警,最后生成异常巡检日报并群邮来汇报至整个团队,建立起内部主动发现并解决问题的通路来提升整个中台的服务质量。
经过对开源社区一些主流APM工具的调研,斥候选择了建立于SkyWalking之上,并使用Arthas对原有功能做了进一步的优化增强,我负责了斥候的架构规划,原型设计,以及一些其它的日常项目支撑工作,并开发了探针端的统一配置管理,应用监控埋点的热部署,全链路日志的查询,对Java应用的虚拟机堆内存状态、垃圾收集信息、线程状态、系统参数等的实时查看等基本能力,在业务层面开发了业务概览、业务全景图、全链路指标查询、业务实体的管理、流程环节的自动补全与编排等等功能。此外,还对SkyWalking做了一些调优工作,使用Arthas生成的火焰图等工具,让服务端支持了至少C10K的请求并发量。
现在斥候已经迭代到了2.0版本,监控着近500个Java应用,并有短信告警能够及时通知对应系统负责人;在业务概览页面能够看到系统的主流程关键环节的吞吐量,平均耗时等信息;每日为团队生成异常巡检日报,能及时知道各种业务异常,慢查询SQL等隐患,帮助团队持续把关服务质量。
# 2019年4月-2020年4月 深圳壹帐通智能科技有限公司 - 高级Java开发工程师
项目:创配(平安旗下汽车后市场的配件交易平台)
职责:后端开发
技术栈:Java、SpringFramework、SpringBoot、SpringCloud、Python、ElasticSearch等
内容:负责电子合同功能的设计与开发,负责交易模块的百万级大表归档方案的调研,负责商城模块的搜索引擎数据同步功能、万行级ERP数据导入功能的设计与开发,负责神兵系统的批量执行脚本的设计与开发。
# 2016年3月-2019年4月 丰盛信息科技(上海)有限公司 - 中级Java开发工程师
项目:LSDN(直播流分发网络,通过中心节点控制分布在全球各地边缘节点来实现RTMP、HTTP-FLV、HLS等格式流媒体的分发加速功能)
职责:后端开发
技术栈:Html、JavaScript、Css、Vue、Bootstrap、Echarts、Nginx、Redis、Java、SpringBoot、Eureka、SpringCloud、PostgreSQL、Ectd、Logstash;Nginx-Http-Flv-Module、lua、geoip、python、filebeat、Ansible、Nagios、Nrpe等
内容:负责中心节点的Portal模块、CC模块、Scheduler模块、OpenApi模块、日志收集模块、配置下发模块的部分设计与开发;负责边缘节点的核心模块、日志记录模块、日志发送模块、配置获取模块、服务监控模块等的部分设计与开发。其中难点包括:中心节点的Portal需要获取数据并用Echarts渲染在页面上,中心节点Scheduler模块需要对采集上来的数据进行清洗聚合操作,日志收集模块需要配置日志解析规则并写入数据库,中心节点对边缘节点实现控制的方式为confd获取远程etcd的配置内容来渲染模板文件替换目标配置并重启核心服务,边缘节点需要对Nginx进行扩展使其支持RTMP、HTTP-FLV、HLS等不同格式流的推送,并使用nginx-lua-module来对Nginx做改造使其支持url鉴权的业务需求,由于第三方的nginx-http-flv-module不支持.flv后缀方式访问,我们负责修改了Nginx源码来实现了需求,在整个边缘节点商用的过程中发生了很多未知的问题,都需要继续新增Nginx日志输出并收集debug数据优化体验,由于边缘节点数量众多,我们还使用了Ansible+rpm的方式批量部署安装目标主机,对于服务的监控我们使用了Nagios和Nrpe。
(两个项目中间有六个月期间在外尝试自己创业,后因公司人力需要,选择继续回来就职)
项目:2BLive(面向印尼市场的的全民直播APP)
职责:后端开发
技术栈:Nginx、Redis、Java、Tomcat、Spring、SpringMVC、MyBatis、MySQL等
内容:负责项目的账号模块、关注模块、搜索模块、实名认证模块、绑定银行卡模块、实时排行榜模块等的设计与开发。其中难点包括:登录注册的短信网关对接,Facebook、Twitter等社交平台登录授权对接,用户设备需要实现不同场景互斥共存登录与否,用户列表里需要显示是否关注对方,在用户量大的情况下也要快速响应,整个后端服务的高可用,排行榜需要实时显示用户的送礼数关注数等信息。
# 自我评价
一个热爱编程的极客工程师,在家自建Linux服务器,用Docker容器技术部署网站或各种流行中间件做研究之用,也会自己写一些工具开源到GitHub,喜欢研究计算机业界的前沿技术,周末也会看些技术书籍、码代码。信奉大道至简,对代码规范十分热衷,常参照阿里巴巴代码规约进行开发。我对自己的要求是从一个代码规范、性能优秀的工程师,成长为能够独当一面的架构师!最后,感谢你的阅读。