fasionchan

读万卷书,行万里路,品万味肴,撸万行码。

陈彦霏-后台开发工程师

联系方式

教育经历

2009-2013,就读于华南理工大学-计算机科学与工程学院,主修计算机科学与技术专业, 获得工学学士学位。

2012年,独立完成一个基于inodeLinux文件系统设计,整个文件系统的实现在内存中模拟, 全面实现了设备、缓存策略、文件系统编程接口等概念。

2012年,把IP包封装在ICMP数据中进行网络通信:由于某些网络流量是不算ICMP协议的, 我便利用这个特性把从本机出去的IP包封装在ICMP中发给远程服务器, 然后在服务器解析出IP包,经过SNAT后发到公网,以此实现上网(只做技术研究用)。

2011年,在智能计算实验室做网络爬虫Web信息提取相关工作。 作为研究项目的一部分,我负责编写网络爬虫抓取网页,分析DOM树结构, 设计算法抽取其中的评论内容,并使用条件随机场算法进行信息挖掘。

工作经历

蚂蚁金服

2017年8月,在蚂蚁金服SRE团队担任开发工程师,负责网络接入基础设施(Nginx)的管控优化及稳定性提升。

大规模日志数据分析:将Nginx访问日志接入到大数据分析平台,设计调度任务进行清洗,编写SQL进行统计分析,为运维决策提供数据支撑(包括域名流量、安全算法版本占比等)。

管控优化:在管控平台上进行迭代开发,实现变更工单检验、定期巡检。

网易游戏

2013年7月至2017年4月,在网易游戏担任后台开发工程师职位,负责游戏公用后端系统开发及优化。 相关项目如下:

2016年,负责监控系统后端组件开发,工作包括: 通用插件式数据采集客户端设计实现,支持LinuxBSDWindowsOSX等系统; 插件框架设计,使用git管理插件代码,Python包进行发布,解决运行时代码加载热更新等难题; 高并发中央配置及数据传输服务器设计,单核支持3000个客户端连接; 存储模块设计,支撑每天20亿个数据记录的写入压力; 基于最小堆和线程池的主动监控插件调度模块设计,支持高并发探测; 组件间长连接通讯协议设计及异步编程库封装等等。

2016年,负责广告跳转平台开发。游戏运营会购买一些广告位(id),用于投放游戏推广信息(游戏下载链接)。 用户点击广告位后,直接请求本平台,平台根据id查询目标链接(推广或下载地址),并完成302跳转。 在跳转的同时,平台将请求的所有上下文信息记录到日志(包括来源IP以及所有HTTP头部),日志推送到大数据处理平台进行分析并反馈给运营以优化投放策略。 每个处理进程缓存全量id-目标链接对应关系,以降低数据库查询压力。 跳转平台高可用策略与手游数据平台项目类似。

2015年,负责手游数据平台开发。平台用于接收手游app在登录前的用户行为数据和推广效果数据,我负责数据接收服务及消息队列部分建设。 数据接收端是基于TornadoHTTP服务器,负责数据的校验并按照业务逻辑格式化后放进消息队列KafkaKafka下游接实时数据处理平台,主要是storm,有少部分spark(起步),由兄弟分析部门负责处理。 接收服务器采用两层高可用负载均衡设施: 首先,DNS将服务解析到不同的接入IP,接入IP实现多机房冗余,故障时可以快速切换; 其次,每个接入IP使用LVS做服务接入(VIP),LVS监控后端服务实例状态并转发请求。

2015年,负责报警系统分布式扩展。将服务从单机架构扩展到多机架构, 设计业务处理进程组织结构,并解决进程间跨机器通讯以及任务管理等难题, 成数量级提高原有服务的处理能力。

2014年,为日志收集服务器scribe加上分类功能。分析grep命令源码, 并将其改造成一个通用的函数库,编译到scribe里面;scribe在处理日志时, 调用相关函数进行正则匹配,以此作为分类的依据。

2014年,使用epoll优化端口监控模块。实现了一个基于epoll的异步连接引擎, 避免connect系统调用阻塞,以支持高并发探测。新引擎对比原先调用命令探测的方式, CPU负载降低了8倍

2013年,协助恢复ZFS误删数据。使用C语言实现磁盘数据块读取,解压缩, 根据源码数据结构定义逐步还原文件系统原有组织结构,从中恢复100T数据

腾讯

2012年,暑假期间,在腾讯公司微博事业部实习,从事后台开发工作, 独立完成实习生编程任务——高并发ftp服务器设计和编码实现, 并出色地完成几个线上需求。

技能

  • 熟练掌握C/C++/Python开发语言,操作系统、数据结构、算法理论基础扎实;
  • 熟悉Unix/Linux下程序开发,有架设、管理Linux系统的经验;
  • 熟练使用vim/git/gcc/make/pdb等开发调试工具;
  • 熟悉TCP/IP协议栈,精通socket网络编程;

作品

Comments