作为全球最大的职业社交网站,LinkedIn 会员人数在世界范围内已超过 4 亿。而随着 LinkedIn 超高访问流量和海量用户数据压力的不断增加,持续对系统架构进行改进和优化是其压力背后有力的技术支持。对于其中的系统性能优化技术和实践方案,也是我们最为关注的,更值得我们学习借鉴。
2016 年 8 月 18-19 日,由极客邦、InfoQ 和听云联合主办的 APMCon2016 中国应用性能管理大会将在北京举行(现在报名,享6 折优惠),聚焦当前最为关键的移动端、Web 端和Server 端的性能监控和管理技术。本届大会,我们有幸邀请到了LinkedIn Staff Software Engineer庄振运,前来分享《容器里面乾坤大:采用容器部署应用的性能考虑》的内容,讲述他在LinkedIn 所从事的系统性能分析和方案探索过程中的经验与实践。
现在我们就来采访庄老师,来了解LinkedIn 在性能优化上的技术考量,其内部技术氛围,以及工作之外的庄老师!
InfoQ:您的工作经历很丰富,曾在 Oracle、Salesforce、Internap 和德国电信等公司工作过,目前在 LinkedIn 从事性能优化的工作,这一路走来,每一次出于什么原因或者考虑而决定换新工作,工作多年有什么感受和体会?
庄振运:我的经历相对很多人来讲的确比较丰富。我大学毕业后先去国家部委做了几年公务员,然后连续读了两个硕士和一个博士。工作和实习过的公司大小不一,有不超过十个人的起步 Startup 公司(后来被收购了);也有几百人的中小公司;还有上万人甚至十几万人的大公司。在这些公司的工作内容虽然分布在不同领域(比如 CDN 网络性能,手机性能,系统性能等),但基本上都是性能优化相关的。每个公司工作领域不同,公司文化和大小迥异,但这些经历给予我不同方面的经验和视角。我认为这样的机会是非常难得的。
我个人比较喜欢接受新的挑战,点子和创新比较多,不太喜欢按部就班的简单重复性工作。如果一份工作对我失去挑战性,就会考虑换个岗位。
InfoQ:请介绍一下您目前在 LinkedIn 的主要工作职责?
庄振运:我加入 LinkedIn 三年多了,一直做 Performance 方面的工作,主要集中在系统性能方面,包括 Java,Linux,网络,存储等等。日常职责包括系统性能问题的分析和解决,同时也从事相关的性能工具开发。
InfoQ:请详细介绍一下您在计算机性能方面的工作成果,包括学术研究和工程优化方面?您拥有多个国际专利,这些专利是否已经现实应用,具体运用在哪些领域?
庄振运:我十多年来一直从事计算机性能方面的学术研究和工程技术优化。从在清华大学读研究生时候开始进入计算机性能领域,当时是做多媒体多播协议的性能。后来出国去佐治亚理工大学读博士,主攻无线移动网络中的应用性能优化。在公司实习上班继续在相关性能领域工作,尤其是计算机系统的性能优化方面。
我个人比较善于提出创新想法和新点子,也喜欢总结和深入探索一些性能方面的技术。所以,即使博士毕业,我还是坚持发表学术论文,到现在应该有 30 多篇了。
你提到的专利情况。有些专利已经被运用在产品中了,有的正在实现阶段,还有些是在计划实现。比如我提出的互联网多点加速专利,是在实习的时候申请的,早就被作为主要技术之一运用到平台中了。再比如 JMS 消息压缩的专利,也被运用到产品中了。
InfoQ:像您之前写的《 Designing SSD-friendly Applications for Better Application Performance and Higher IO Efficiency 》这些论文讲的主要内容是什么?你们技术团队内部有写论文的硬性要求吗?LinkedIn 的技术氛围如何?
庄振运:我个人喜欢把平时做的东西做一些总结和深化的研究,然后写成论文发表。公司没有写论文的要求,纯属个人爱好。
你提到的这篇论文是讲关于 SSD 的。众所周知 SSD 和硬盘(HDD)比起来,IO 性能要好些,所以很多软件应用采用 SSD 后,性能(比如软件的吞吐量或者延迟)一般会变好。在网上有很多这样的博客或者文章在谈说某某软件应用因为采用了 SSD,性能提高了多少多少倍。但是在我看来,这样简单采用 SSD 的方式并没有真正把 SSD 的潜力发挥到极致。因为 SSD 不仅仅是个更快的“硬盘”,它有自己的不同的内部机制和优缺点。如果软件开发人员能够知道这些特性,在开发时对 SSD 的特性扬长避短,那么实际的软件应用性能会更好。
LinkedIn 的技术氛围还是不错的。公司每周都会有至少一次的 Tech Talk。每个人都可以自愿报名给报告,讲讲自己或者自己组里做的东西。因为工程部门很多,涵盖的内容很多。包括前端,后台,大数据处理,移动 App 等等都会讲到。个人从里面获益很多。
InfoQ:可否介绍一下 LinkedIn 超高访问流量和海量用户数据压力背后的技术支持吗?
庄振运:LinkedIn 这些年来随着用户的增长和流量的加大,一直持续对系统架构进行改进和优化。这篇博客文章讲了部分的历史。在这个过程中,我们开发了很多有特色的产品,有些产品后来都开源了。比如我们开发了 Kafka 来驱动实时的数据流, Samza 来进行流处理。对于数据分析方面,我们有 Pinot 。Key-Value 数据库方面,我们有 Espresso , Databus 和 Voldemort 。对于动态负载平衡方面,我们有自己的服务架构 D2 (Dynamic Discovery)和 R2 (Request Response Framework)。网络方面,我们整合使用多家 CDN 网络并且使用多个数据中心。
InfoQ:您之前在 QCon 演讲中说到,一些运行在 JVM 上的应用程序会偶尔出现长时间的 STW(Stop-The-World)JVM GC 停顿,会导致应用程序的高延迟。如何进行深入分析,来发现造成 JVM GC 停顿的“非典型”的原因,这些原因又分别有哪些?通过什么方法来解决这些问题?对工作成效的改善体现在哪些方面?
庄振运:LinkedIn 很多的后端产品都是基于 Java 的。作为 Performance Engineer, 我们经常需要和其他的组一起合作来分析和解决一些和 JVM 有关的性能问题。 我们的产品多数是在线的,所以不能容忍大的 JVM 停顿。
引起 JVM 停顿的原因很多,有应用本身造成的,也有 OS 造成的。我在 QCon 北京 2016 上的演讲就是针对 OS 导致的 JVM 大停顿。OS 导致的停顿不像其他原因一样比较容易发现,而是“非典型”的。这些问题的原因是“跨层”的,就是由应用层,OS 层和硬件层的交互导致的。
OS 导致的 JVM 大停顿又分几种情况,需要对症下药。比如 JVM 调优、OS 调优甚至升级硬件。具体的细节大家可以看我的大会 Slides 或者 Video 。
InfoQ:可以介绍一下 APM 在 LinkedIn 的应用场景有哪些吗,以及在技术上有什么优势?
庄振运:LinkedIn 在 APM 上面投入很大,有几个系统我觉得做得很好。一个是 inGraphs , 可以做到让任何一个应用和服务都把各种性能相关的数据指标发送到后台处理,然后在前台随时调阅。另外一个是 RUM (Real User Monitoring),可以把所有用户的页面访问实时的收集起来,以便进行各种分析和优化。还有一个是 EKG ,能够自动化 Release 产品的性能测试和比较。这些产品的特点是自动化和智能化。比如 EKG,可以允许用户自己定义性能指标,如果性能指标不能达到,系统会采取相应的措施,比如停止部署。
InfoQ:您即将参加 8 月份在北京举办的 APMCon 技术大会,分享 LinkedIn 采用容器部署应用方面的一些性能考虑,可否具体介绍一下?
庄振运:随着云计算的普及,越来越多的服务在容器(比如 Docker)里面部署。相对于传统的非容器环境,容器部署对 APM 提出了新要求。一方面容器的运行需要监控新的性能参数,比如容器的虚拟内存地址空间使用 (Virtual address space) 和和守护进程的资源使用。另一方面容器的特殊机制会导致各个容器间在很多情况下互相影响性能(比如有内存压力时)。在 APM 部署应用时需要尽量避免这些情况。如果容器中的应用发生性能问题,APM 可以针对容器的特点帮助诊断。
这个演讲会分享 LinkedIn 使用容器部署中的一些经验。我会重点介绍容器部署中几种影响性能的场景,比如内存压力场景,JVM 在容器内运行的场景,不同容器互相干扰的场景等。这些经验对如何适当部署,有效监控和快速诊断容器里面的应用性能会有帮助。
InfoQ:您个人对应用性能管理有怎样深刻的理解?您觉得参加 APMCon2016 垂直领域大会的意义是什么?
庄振运:在大数据时代,我认为应用性能管理在现代互联网公司运行中的地位将日趋重要。公司里面产品通常很多,为了能够处理大数据流量,经常需要部署很多实例。这个过程随着公司的壮大会越来越复杂。所以 APM 需要尽量采用一些公认的原则和方法。这些原则和方法不是凭空诞生的,是从交流,讨论和总结中得出来的。
业界这么多互联网公司,每个公司的 APM 系统都不尽相同,所以我觉得让公司和工程师们有个交流的机会很重要。我很高兴看到你们组织这次 APMCon2016 大会,相信参会者会受益良多。
InfoQ:LinkedIn 被微软收购后,工作内容是否有调整变化?可否分享一下未来的工作计划?如何看待 LinkedIn 被微软收购这件轰动 IT 圈的大事?
庄振运:相信大家对于收购后如何整合两家公司的技术和平台都有很多期待。作为员工,我也很期待。因为最后的收购到年底才会完成,现在做解读还为时过早。
我个人认为这次收购是比较典型的双赢合并。从 LinkedIn 角度来讲,LinkedIn 会充分利用两个公司的长处,对产品的架构和业务进行重新定向和升级。但是这个过程将是渐进的,不会很快就产生剧烈的变动。我们一起拭目以待。
InfoQ:您工作之外,喜欢中国国学文化,尤其热爱历史和唐诗宋词。请分享一下这些喜好给您的工作和生活带来了哪些不一样的收获,如何将文化运用在个人生命中?
庄振运:作为一介码农,而且是在美国硅谷的码农,喜欢中国国学似乎有点不合逻辑。不过每个人都有与工作无关的爱好和思想。我一直喜欢品读历史和加强文学知识,很认同古代的士大夫的价值观和责任感。
另外也深刻感到当今社会在转型期所出现的很多方面的文化空虚和道德危机,这些负面现象和我们传统的儒家价值观是相背的。所以一直希望能够在弘扬国学文化方面能尽点绵薄之力。要弘扬国学,首先就需要丰富的底蕴。所以只要一有机会就会吸收这些知识,也会自己创作一些,比如诗词。当然,家人和朋友们对我的创作的欣赏不仅令我高兴,也起到了鼓励作用。国学的学习就成了我工作外的调剂,这对我各方面都大有益处。说个好笑的例子,老婆笑说我现在气质比以前好了很多,我回了一句:腹有诗书气自华嘛(^_^)。
InfoQ:感谢庄老师接受我们的采访,期待您在 APMCon2016 大会上的分享。
感谢陈兴璐对本文的审校。
受访嘉宾介绍
庄振运, LinkedIn Staff Software Engineer,现在美国加州 LinkedIn(领英)任职,从事性能优化的工作。曾在 Oracle、Salesforce、Internap 和德国电信等公司实习和工作。长期从事计算机性能方面的学术研究和工程技术优化,在互联网、无线网络、分布式系统、Java、操作系统和存储系统等多个领域发表过 30 余篇国际论文,拥有 10 多个国际专利。
评论