熟悉Java,对JVM有一定程度的理解,熟练掌握常用的设计模式
熟悉MyBatis,研读过Spring MVC源码,熟悉MySQL、Redis等常用数据库和缓存技术
熟悉Zookeeper、RPC框架,对Hadoop生态有一定理解,具备分布式系统的开发经验
熟悉Linux环境下编程,有相当的Linux基础
【工作经历】
阿里巴巴集团-阿里云事业群-Quick BI团队, 高级开发工程师, 2016年06月至今
负责分布式执行框架开发(独立完成)
[业务背景] 该框架是一个任务调度系统,用于负载均衡。由于业务增长迅速,大量的查询SQL会流入后端,导致单一应用结点压力过大,容易发生单点故障或造成性能瓶颈。
[效果] 调度系统分两种角色:driver机器和executor机器。一方面driver接到SQL查询请求后,可以按任务类型将其分发到不同的executor上执行,大幅减轻driver压力;另一方面,当driver因故障宕机时,候补driver可以通过抢主重新failover,避免整个系统崩溃。
负责SQL查询引擎开发(独立完成)
[业务背景] 大型企业用户倾向于将业务数据存放于HBase中,而中小型企业用户以大量零碎的CSV、EXCEL等文件作为数据的存储方式,而用户习惯使用SQL查询,但此类非结构化数据源无法支持,缺乏有效的数据分析途径。
[效果] 因此开发SQL查询引擎,构建元数据存储模块,借鉴开源Hive的设计方式,实现了外部表语法规则供用户灵活定义元数据,使用户能采用SQL有效分析业务数据。
负责OLAP引擎缓存模块开发(独立完成)
[业务背景] 频繁的SQL查询任务导致后端OLAP引擎服务器压力较大,当存储在数据库的数据量较大时,查询时间以分钟计算。分析发现业务场景下会有大量查询SQL重复的任务,因此开发缓存模块,将频繁的查询任务及其查询结果缓存起来,可大幅提高查询性能。
[效果] 缓存模块能适应包括Redis、Memcached、OSS、本地文件等在内的不同底层存储介质。利用hash将任务均分到不同队列,通过分段锁减少同步时间,同时考虑了数据库中数据发生改变时的情况,自动检测并更新查询结果到缓存中。
Advanced Digital Sciences Center, Singapore, 分布式计算实习生, 2015年11月 至 2015年12月
[业务背景] 基于流数据的分布式框架的研发,在Storm的基础上加入对GPU资源的调度
[效果] 在Storm的基础上实现RESA系统,具备GPU调度能力。实时视频去雾处理作为该系统上的一个应用例子,发表论文“A Component-driven Distributed Framework for Real-time Video Dehazing.” Multimedia Tools and Applications (SCI 4区)
Demo: https://v.youku.com/v_show/id_XMzc4MDg1Mzk0NA==.html?spm=a2hzp.8244740.0.0
中国科学院深圳先进技术研究院, 计算机视觉研究客座学生, 2014年1月 至 2014年9月
[业务背景] 研究以机器学习的方法实现单幅图像去雾处理,提高图像清晰度
[效果] 发表论文 “A Fast Single Image Haze Remosval Algorithm using Color Attenuation Prior.”
IEEE Transactions on Image Processing (SCI 2区,引用数达366,Demo: http://www.jiamingmai.vip)