专访链家网平台架构师吕毅

原创
2016-06-20 12:30:37 1276浏览

PHP全球开发者大会将于2016年5月14日至15日在北京召开,会前我们对本次活动的演讲嘉宾之一,链家网平台架构师吕毅老师进行了文字专访,文中黑体字部分为DevLink记者,细体字部分为吕毅老师。

吕毅老师您好,能不能先介绍下自己的技术历程?

好的。

我在上学期间自学了一些Web开发技术。2011年毕业前半年在新浪SAE实习,实习期间参与开发了新浪微盘第一版,毕业后开发SAE前后台能力,PHP与JS都会涉及。因为SAE隶属新浪平台架构部,第一份为期一年半的工作中会与各种技术角色产生交集,那段经历开阔了不少技术视野。

2012年底加入百度移动云事业部的手机百度产品线做服务端业务开发,以PHP为主。在百度的三年间大致分为三个阶段,业务开发、移动搜索速度优化、平台化服务建设,相对应的成长也分为三个阶段,深入业务、精扣细节、横向技术方案支撑。在百度的三年赶上手百产品线发展最迅猛的三年,有幸从T4升到了T6。

在百度最后的一段时间,有想过如何走后续的技术路线,尝试过几个月的C++服务开发,也投入了几个月的TopDown重点项目,最后还是想跳出百度相对舒适的环境锻炼锻炼,故2015年9月加入链家网。

您在新浪和百度期间从事的工作主要集中在应用、前端开发,为什么加入链家后,重心转型到架构和平台开发?

的确,前几年的工作多以PHP开发业务为主。但从上面介绍可以看到,我在百度的后半段时间,已经参与到一些平台化服务建设,通过抽象业务线公共特型,开发服务横向支撑多个APP业务线。当时的我还只是平台化服务Topic中的一名参与者,但几个横向服务做下来也积累了不少设计思想、做事方法。

刚到链家网时,有几个方向的事情需要负责人,而迫切需要开展的是话务平台项目。我以公司目标为重考虑,投入到话务平台项目中,这就是一个需要横向支撑链家网内所有业务线的平台化服务,而且相当重要。在链家网后续的工作中,随着业务线的需求收集与团队人员补充,陆续开展了其他几个平台化服务项目。

所以,重心的转移不是刻意而为,也是根据公司需要与我所能,综合选择后并自然发展的结果,这也得感谢链家网给技术角色足够多的技术发展空间。

聊聊您现在的主要工作吧

目前我在链家网做一些平台化服务工作,工作的内容大致由两个方面:一方面是技术,另一方面是团队。

技术方面需要做好技术规划与架构设计,同时参与到项目开发。团队方面需要做好项目管理、团队规划与团队成员维护。两方面的工作穿插进行。

对于项目,比较成型的项目我会将项目下放给团队内同学负责,我则投入新开项目以便集中精力做好第一期整体规划,对于已经交付给团队内的稳定项目,我做好项目的迭代跟进与方向把控。

技术上我鼓励组内成员发散,我自己也会尝试用新技术解决问题,但做为团队负责任的我会做好团队技术栈收敛,任何新技术新方案的引入一定需要通过评审与详细数据对比支撑,鼓励团队成员提出更好的解决问题办法,做好技术投入产出比控制。

具体到项目,目前话务、存储、图片、统计、日志实时分析都是我们团队当前的平台化工作,均是面向链家网内部所有产品线的服务,这也很容易看到我们团队的工作内容,上游为业务线,下游为基础能力,我们来做好中间层服务衔接好上下游,让业务线有更多精力可以跑的更快更稳健。

您觉得PHP作为一个“古老”的语言,与现在Go、node.js等新兴语言相比,有什么不一样的地方?

PHP相对于这两位2009年发布的新兴语言Go和node.js来说,的确可谓“古老”的语言了。由于node.js我没有实践经验,就不加评价。对于PHP与Go,我有这么几点总结:语言运用面差异、程序传递性差异。

语言运用面差异主要由语言特性与语言目标所决定,PHP目标是快速构建服务端业务模块,Go则是原生提供并发特性以便快速开发高并发服务,这两个语言的目标差异导致运用面不同,PHP通过这么多年的积累,依然是服务端业务模块开发最优选语言,能够满足快速开发与健全的诉求,而Go则在并发处理请求、数据时大放异彩。拿常见的Web逻辑需求举例,PHP自身处理方法支持与PHP上下游对PHP的支持力度,让PHP可以稳固的开发一套Web服务端业务模块,而此时用Go的话则需要选择很多第三方库来实现业务中琐碎的需求,不然就需自己开发,并且服务上下游服务对Go的支持情况参差不齐也限制了Go的Web运用场景。

程序传递性差异由语言历史所决定,PHP历史久从而引入的语法糖多,对于初阶的PHP程序员在接手一个历史PHP项目时还是需要一定时间来梳理项目数据流与项目代码,而Go语言即便至今也没几年历史,何况Go是在最近三四年逐渐完善语言自身并建设好周边,所以要想读懂Go写的程序对初阶Go程序员是不太费力的。当然值得一提的是Go语言在被设计时特别考虑了代码编写与代码可读性的保持,让阅读理解代码变得相对容易。

综合语言运用面与程序传递性两方面差异,也就是决定了在做项目设计时选择合适的语言进行开发,这也就决定了语言的运用场景。

我看您在个人博客上提到未来会集中在Go、PHP两个语言上,能否具体讲讲这两个语言有什么互补的地方才让您如此选择?

准确说“后续会收敛向这两个语言”这事,其实在我们团队内大家都在全栈开发,目前团队项目使用到的语言有PHP、Java、Go、Lua等等。为何要做收敛主要考虑技术团队的技术栈建设,欢迎各派语言的融入同时需要有团队擅长的语言方向,在考虑团队成员情况、行业发展趋势以及手头项目运用场景,决定后续对于业务逻辑项目且排期要求较紧凑的项目使用PHP开发,对于并发要求较高项目且有一定时间周期供开发的项目使用Go开发,当然这些都需要具体项目具体看,不能强制规定。

对于您提到的“两个语言有什么互补的地方让我做此选择?”,一方面是上一个问题谈到的PHP与Go的运用场景差异可以在整体项目技术选型时形成互补,另一方面是在做整体架构设计时可以将子模块拆分成微服务,通过API或RPC通信串连各个子模块,此时PHP与Go可以分别在某个子模块中发挥所长,在整体项目里形成互补。

您在这次PHP全球开发者大会上,会讲到什么?能简单给大家预告一下么?

这次大会有幸做为讲师分享一些项目中的积累,主要分享链家网统计平台、日志实时处理平台背后的一套实时日志处理方案。这套方案会涉及日志收集、处理、记录、展示全部环节,这套方案已经运行在链家网内部,面向RD、QA提供着每份日志的分析统计工作,面向PM、运营提供产品树中各结点的多维度数据支撑。会上我会从架构到细节做丰富的介绍,并且分享链家网内的运用场景,以及这套方案可运用的更多场景。至于更多的内容,就请关注咱们5月份中旬的PHP大会吧!

您曾经写过一篇文章《致PHP路上的“年轻人”》,能否说说是怎样想到写这篇文章的?

很尴尬,我的博客变更导致历史内容丢失,新博客恰逢来链家网前搭建,而在链家网太多挑战需要去突破,从而这半年多没有怎么发博客。而这唯一的一篇文章,则是当时与一位PHP新人沟通后的感慨,为何写它主要是因为我与那位新人沟通一夜后,感觉就像是在与刚工作时的我在对话,新人的迷茫、顾虑,与我刚工作时基本一致,那夜后我想应该大多数的年轻人应该都会有这些困惑,那么不如写下我这位“过来人”的想法,让年轻人少走弯路,用更短的路径找到他们所求,遂写了那么一篇,希望能对很多刚刚踏进工作中的程序员有所帮助。

您有什么要对我们的一线开发者说的话?可不可以给大家一些专业上的建议?

我也是一名在路上的程序员,也是一名一线开发者,我想对一线开发者说的是:一定不要脱离开发而做架构。相信大家如我一样常常会崇拜业内一些牛人的架构设计与他们各种专业角度的度量,但请大家明白一切完美的架构都是建设在对细节的完美把控之上的。相信行业内的牛人一定是通过长时间对细节的掌握后做出的精美架构设计,如果没有内在能力而是简单仿照着某个方案做的架构设计,那必将有一日溃于蚁穴。即便是大家公认是技术大牛的鸟哥,也没有放弃最基本的编码工作,在链家网办公区内总会看到鸟哥晚间在工位查阅PHP社区的Bug List并投入PHP社区项目开发。

对于PHP程序员,我从我几年间的PHP开发经验给大家的建议是,一定熟读官方文档,对于内置函数、扩展的使用文档,官方的形参描述、返回值描述和示例代码,甚至页面内的评论也值得PHP程序员细细体会,并且养成遗忘时随手查官方文档的好习惯。这会帮助初中阶PHP程序员很大忙,稳固基础很重要。

谢谢您抽出时间来接受我们的访问,期待我们在今年的PHP全球开发者大会上见到您的精彩分享。

也谢谢 DevLink 给广大PHP开发者这样一个分享和交流的机会和平台,我们到时见!

由开发者互助社区 DevLink 独家主办的第二届 PHP 全球开发者大会将于2016年5月14日至15日在北京国际会议中心召开。本次会议请到了包括 PHP 创始人 Rasmus Lerdorf 、PHP7 的主要核心开发者惠新宸(鸟哥)在内的多位PHP领域的顶级专家到会并进行专题分享。

本次会议秉承DevLink开发者社区的一贯宗旨:面向中级一线开发者,专注于帮助开发者持续成长。所有演讲主题均由包括鸟哥在内的,数位PHP领域技术专家进行评审,只有真正对开发者日常工作、技术能力成长有所帮助的演讲才能登台,充分保证了内容分享的质量。

DevLink是由资深开发者、连续创业者高春辉参与创办的开发者社区。以线下专题会议、培训,线上专业媒体、互助社区等形式,为开发者提供提升技术能力、跟踪最新技术进展的可能和平台。作为一个专门面向开发者的服务机构,DevLink的每次活动只关注于一个编程语言或者话题深入讲解。力图透过分享,能让参加活动的开发者不仅可以了解到行业趋势,更多的是可以掌握具体的技术实现、架构及方法论。DevLink的活动更像是一场公开课,而不是一次会议,开发者可以透过参与活动,为自己的工作带来直接有效的帮助。

目前,本次PHP全球开发者大会有部分余票在售,您可以点击 阅读原文 了解更多详情并购票参会。

对这个采访有疑问?想在会议开始前就与诸位技术大牛展开交流?请使用微信扫下面的二维码加为好友,我们会在验证您确实为PHP开发者后,将您加入微信群,立即与技术大牛们展开互动。(技术认证服务由技术测评解决方案供应商——猿圈友情提供)

本文为DevLink独家稿件,转载前需联系DevLink取得授权,转载时不得进行修改。联系电话:13752002090

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。