转载

专访李祎:Java在Testin的技术应用

李祎,Testin崩溃分析项目负责人。曾担任西门子手机技术创新部高级工程师,源讯公司(Atos Origin)开源软件专家全程参与2008奥运IT集成项目。www.139.com移动微博架构师,主持开发了139网站的用户平台,社区平台、监控平台,海量数据存储访问,推荐引擎架构,以及图形数据库(graph database)开发。关注移动和互联网领域的新技术和新应用。

日前,CSDN记者采访了李祎,请他分享Java在Testin的技术应用。

专访李祎:Java在Testin的技术应用

李 祎

CSDN:请先简单介绍下自己,以及目前所负责的领域。

李祎: 曾经在西门子担任高级工程师, 139微博的架构师和研发部门经理,主要是用Java做搭建平台。目前是Testin崩溃分析的项目负责人。

CSDN:你与Testin是如何结缘的?

李祎: 来Testin之前就和公司内的很多同事认识,我们在139微博的时候就有合作,都是很好的朋友,互相都比较了解。之前崩溃分析项目随着业务量的不断增长,遇到一些性能架构上的瓶颈。我受朋友邀请帮忙解决了一些技术问题,也通过这个机会逐渐走近这个产品。我发现在这里我的潜力能得到最大限度的发挥,而且这个产品还有机会实现我做一个世界级的产品人生梦想。于是义无反顾的离职加入了Testin,和小伙伴们一起打拼属于我们自己的未来。

CSDN:你们团队是如何分工的?

李祎: 麻雀虽小,五脏俱全,我们现在有客户端开发团队, W eb 前端开发团队和Java平台开发,以及测试,产品和运营的同学。基本上就是一个创业小公司的完整配置。 

CSDN:Testin在开发过程中有哪些重要的节点?你对Testin的技术改造主要体现在哪些方面?

李祎: Testin崩溃分析在发展中遇到最重要的里程碑性事件发生在一个月内访问量从3千万迅速内迅速突破5千万那个阶段。由于前期的系统为了节省开发成本都是用PHP来搭建的。当访问量暴增后,PHP不适合处理海量数据的弱点被迅速放大,造成数据处理经常延迟,大量的请求因为无法及时处理只能被丢弃,直接影响产品的用户体验。为了应付业务的暴增,整个研发团队被临时拉进一间会议室封闭开发。由于那个会议室是储藏室改建的,三面是墙一面是玻璃门,终日不见阳光,被兄弟们称为“小黑屋”。

我对Testin崩溃分析技术上的改造,主要是引入了Storm开源框架来处理海量数据的实时计算,使用Spark来进行离线数据的计算;同时对系统流程中各个重要节点,搭建完善的监控,当出现访问洪峰或者系统异常时,能及时预警和分析查找问题原因。

CSDN:Testin与其他同类产品相比,有哪些优势?

李祎: 我们的产品可以帮助开发者查找导致Bug的原因,让开发者清楚知晓哪些代码导致了应用崩溃,从而可以更为容易地修复这些问题。国外类似的产品有不久前被Twitter收购的Crashlytics。我们做了一个Testin崩溃分析和Crashlytics的全功能对比,见下图。

专访李祎:Java在Testin的技术应用

从图可以看出,在功能点上,Testin崩溃分析和Crashlytics平分秋色。不过,如果从手游开发者的角度来说,对他们最重要的就是工具对Android NDK及引擎脚本错误的分析。这个方面显然Testin要完胜Crashlytics;并且它的使用也很简单,只需嵌入Testin崩溃分析提供的SDK,就能够同步真实用户的访问体验,即时发现手游在使用过程中发生的各种问题。这一SDK的大小只有几十K,嵌入手游之中对用户体验不会有任何的影响。

CSDN:Testin的架构是怎样的?在产品开发过程中,主要采用了哪种语言?为什么?

李祎: Testin崩溃分析的主要业务是收集SDK上报的应用启动,崩溃的数据,进行实时统计和计算分析。部分跨天的业务需要进行离线计算。考虑到海量数据的实时计算和离线计算要求,我们采用了现在比较流行的Storm进行实时计算和Spark负责离线计算。这两个计算框架主要以Java语言为主。前端的API接口层由于比较简单,使用PHP+Nginx 来实现。

专访李祎:Java在Testin的技术应用

CSDN:听说你是Java技术牛人,你是从什么时候开始接触Java的?是什么地方吸引了你?

李祎: 技术牛人谈不上,只是工作中有大量的机会使用Java进行项目开发,十几年中用过学过Java知识相对其他语言多些。刚开始接触Java是在2000年毕业后到的第一家公司,那时Sun推出的Java刚兴起,公司为了培养新人,鼓励大家去考SCJP 认证,考过了公司报销相关费用。我为了考试猛学了一阵Java的基础知识。现在回头看,那段经历给为之后的Java学习打下了很扎实的基础。

CSDN:你怎么看待目前Java发展现状?Java发展至今已有二十年了,你经历了哪些技术变迁呢?

李祎: 我一直处在IT这个圈子里,身在其中感觉时间过得好快, Java都已经过二十岁生日了。太宏观的见解也谈不上,我就聊聊自己这些年和Java相关的项目。 

2000年刚毕业时, servlet刚出来不久,我们做的MIS项目主要用Servelet和JSP来编写。那时Java刚出来不久,国际化问题没有很好的解决方案。我记得当时在网上开发人员问得最多的Java问题,是各种中文乱码的解决方法。之后 JEB 和J2EE的概念开始流行,特别是4个火枪手著的《设计模式》一书影印版的引进,MVC的理念和框架几乎成了程序员面试的必谈问题。 2004年我进入西门子手机研发部,大量用到了J2ME,由于手机资源的限制,很多编码都需要考虑内存大小和包大小。那个时候最有成就感的事情,就是学习各种开源代码,裁剪移植到J2ME手机上。2008年我加入了139微博,正式进入了互联网圈。面对各种高并发,高可用性的挑战,个人认为Java是最适合解决这类问题的开发语言。因为它兼有很好的性能,同时因为使用广泛,有很多配套的工具可以使用,节省开发周期。这个时候接触较多的是Java + redis/memcache + tomcat/jboss。

CSDN:近日,Oracle宣布停止发布JDK7安全补丁和升级包,此举,你怎么看?

李祎: Java一路走来都在不断的推出新包,放弃维护老版本,这是在正常不过的软件迭代路线。不过从我的角度倾向于选用比较成熟的JDK作为基础软件。 Testin现在使用JDK7的包,我想我们很长时间内不会考虑升级的事。

CSDN:你平时最常用的开发工具有哪些?现在还会经常编码吗?

李祎: 开发编辑工具Windows下我比较喜欢用简单的文本编辑工具,加命令行的方式来写代码。这样编码不容易被编辑器的自动编译打扰,编码像写文章一样可以一气呵成。 2011年之后工作重心向管理倾斜后很少写生产类的编码了。到Testin后,虽然是我一手搭建了现在的平台,但是也在尽量限制自己编码,一方面自己时间不够,无法长时间投入编码;二是为了锻炼新人,让他们有更多的成长机会。我今年年底的目标是要研发团队所有成员的SVN提交次数都超过我。我会利用碎片时间上SVN做代码Review,发现有问题的地方面对面或邮件指出来,建议他们修改。

CSDN: 回头看这一路的努力和经历,有哪些让你最为难忘的人或事?

李祎: 最难忘的还是在2008年139微博时期,和兄弟们一起加班熬夜,快速推出产品并成功上线后的目标达成后的喜悦。我非常享受带领团队赢得胜利带来的那种喜悦和刺激大脑的兴奋。

值得一提的是,值Java二十年之际,CSDN特别策划了Java专题,邀请Java领域技术专家、知名图书作者从他们的角度谈谈Java的技术变迁以及在各个领域的技术实战。>>> 查看专题

( 欢迎继续投递Java稿件(发邮件至xiamz@csdn.net)。

专访李祎:Java在Testin的技术应用

关注CSDN官方微信(CSDNnews,请扫二维码)和 @CSDN官方微博

正文到此结束
Loading...