本文首发在“美团技术团队”微信公众号,内容已覆盖截止至2017年1月23日最新的技术文章。
1955年3月15日,爱因斯坦给刚去世的密友Michele Besso家人的信中说:
“像我们这样信仰物理学的人都知道,过去、现在和未来之间的分别只不过是持久而顽固的幻觉。”
然而,临近岁末,我们这些普通人还是难以免俗地做一番回顾与展望。
算起来,“美团技术团队”这个公众号始自2014年9月,已经运营两年多了。
公众号对应的美团技术博客开始得更早,是2013年的12月。那时候,美团创立不到4年,千团大战还在如火如荼,美团酒旅和美团外卖都刚刚开始不久。
而现在,美团外卖今天刚刚宣布日订单突破900万,离美团酒旅按间夜数也已成为业界第一。
在美团,我们信仰耐心和坚持的力量,愿意持续去做一些正确、有积累、可能表面看上去不那么重要实则非常关键的事情。
正如美团联合创始人穆荣均在今年一次Hackathon上说的: “这个世界不缺乏有勇气的人,很多人都会想做各种惊天动地的事业。而最缺乏的,是耐心和坚持。”
技术博客和技术公众号正是耐心与坚持的结果。
从2013年的4篇文章开始,我们多年来一直坚持把团队在一线实践中获得的经验和思考写成文章,对外发布。
2016年,我们发表了55篇技术文章,终于实现了最初公司老大给我们提出的每周一篇的目标(耶!)。
让我们一起来倒数美团技术博客/公众号的年度Top 10(基于微信和博客网页浏览量统计数字,第10名也超过了1万,最高的接近3万),看看你是否错过了珠玑。
2016年,美团和大众点评两大平台实现了非常高效的融合,原来一南一北两个技术团队也迅速实现了融合,大家互相学习,获益良多。我们公众号也非常高兴地增加了来自美团上海团队的给力作者群。
李力这篇文章的主题是一个高可用系统的演进,可以视为另一篇上海团队经验总结《高可用性系统在大众点评的实践与经验》的案例。由于是交易系统,要求更高。文中提出的针对故障渠道的fail-fast机制是亮点之一。
在美团,技术最重要的作用是解决业务问题。这也是我们整个博客和公众号的重点。2016年,这方面优秀的实战文章还有不少,包括新鲜出炉的《美团酒店直连产品数据一致性演进》,和9月上海技术沙龙上分析的《大促活动前团购系统流量预算和容量评估》(这篇文章的作者是今年两位女作者之一),还有一篇重量级的文章《美团业务风控系统构建经验》,介绍了美团的风控系统在与黑色产业斗争中的一些经验以及系统构建过程中的体会。
CAT是美团在公司外应用最为广泛的开源项目,也是目前最优秀的开源分布式监控系统之一。本文作者是项目目前的负责人,在之前介绍性文章的基础上,对设计思路做了更加深入全面的剖析。
美团的监控体系中,在服务器端的CAT之上,还需要客户端监控,这就是美团外卖团队开发的《移动端性能监控方案Hertz》。
目前,美团在基础架构层面已经基本形成体系,除了CAT外,我们今年还介绍了《分布式会话跟踪系统架构设计与实践》。
明年,我们会陆续发表相关的技术文章,包括但不限于:高性能服务框架及服务治理演进、容器集群管理及弹性伸缩平台的设计与实践、大规模分布式KV存储系统、消息中间件设计与实践、分布式会话链跟踪系统设计与实践,等等。
以日订单数计,美团已经成为中国第二大电子商务平台,底层大数据系统的支撑至关重要。而其中,Spark又发挥了核心作用。今年我们一共发布了4篇Spark相关的文章,而且有2篇都进入了Top 10,可见Spark的热度。本文通过多个项目以比较广的视角,介绍了Spark在各种场景的应用。
我们目前的实时计算平台同时接入了Storm和Spark Streaming,这方面推荐阅读《Spark Streaming + Elasticsearch构建App异常监控平台》和《Storm 的可靠性保证测试》。
大数据方面,Hadoop生态仍然是我们的基础平台,今年我们有两篇深入分析HDFS NameNode内存的文章:《HDFS NameNode内存全景》和《HDFS NameNode内存详解》,都是来自实战的经验之谈。
美团外卖3年从0到900万日订单,算是互联网发展历史上的一个奇迹。外卖的实时性非常强,在这样狂飙突进式发展的背后,技术是怎么支撑的,是很好的话题。本文以时间维度,系统地总结了订单核心系统的演进过程。
这只是外卖系统演进系列文章之一,2017年我们会邀请更多美团外卖的同学分享更多领域。
同样是订单系统,大众点评平台华蔚的《大众点评订单系统分库分表实践》分享了数据库切分实践;今天发表的文章《美团团购订单系统优化记》又介绍了团购系统的优化历程。
针对类似数据库问题,外卖团队自行研发了中间件,《MTDDL——美团分布式数据访问层中间件》。
10月的美团技术沙龙是数据库专题,其中《美团的DBProxy实践》介绍了DBA团队基于360的Atlas研发的数据库中间件MTAtlas,现如今已更名为DBProxy,正式开源啦~并且发布了新的博客《美团数据库中间件DBProxy开源》,内附开源地址以及开源后的新功能。《RDS平台介绍》讨论了MySQL自动化服务平台RDS,《美团数据库运维自动化系统构建之路》介绍了我们DBA自动化运维的演进。
刘丁是我们的老作者,特别善于思考和总结。他在负责美团广告部CRM系统开发的过程中,从如何帮助决策者的角度,对CRM这个企业信息系统的核心之一做了全面和深入的思考。在我看来,这篇文章其实不限于CRM,还很好地阐述了互联网+在技术上怎么落地。
各行各业现在都要拥抱互联网,本质上是数字化,而刘丁在本文中提出,数字化分为三个层次:标准化(你的业务概念、数据类型是否能够结构化?)、自动化(你的业务流程是否能规则化、编程化?)和智能化(运用算法来改进流程)。此外他还讨论了数字化最难的方面:组织保证,构建优秀的研发团队。
这些思考虽然还比较初步,但从无到有,弥足珍贵。
类似的,《数据驱动精准化营销在大众点评的实践》也很好地通过精准营销这个场景阐述了大数据如何具体落地。
Android热更新是移动客户端技术的一个热点。Robust基于Google最新的Instant Run技术,与之前的方案相比兼容性更强而且实时生效。文章发表后引起了广泛关注,有好几个业界同行撰写了相关的文章和开源项目。
此外,2016年我们前端和移动端方面的文章还有: Android方面,《Android自定义Lint实践》讲述了我们如何定制Lint做代码静态检查,《如何构建Android MVVM 应用框架》则通过实际实现一个MVVM工具库(代码已经开源),分析了MVVM模式,《Android硬件加速原理与实现简介》介绍了GPU硬件加速技术,让软件开发者能够更好地了解硬件加速。
iOS方面,ReactiveCocoa(RAC)在美团应用广泛,在已有的多篇文章基础上,今年我们又发布了《ReactiveCocoa中潜在的内存泄漏及解决方案》和《ReactiveCocoa核心元素与信号流》。
除了RAC之外,近年来,FRP(Functional Reactive Programming,函数式响应式)思想通过RxJava、RxJS等库逐渐落地,美团的Android和Web团队也有较多应用。后续我们会组织相关的文章。
前端方面,Nodejs的Stream也是FRP的核心概念之一,邹斌的系列文章《Node.js Stream基础篇》、《进阶篇》和《实战篇》作了深入分析。《RestQL:现代化的 API 开发方式》介绍了技术学院研发组的一个数据操作工具,代码已经开源。
每年我们都有几百位同学参加职级晋升答辩,其中必要的环节就包括总结自己的收获。邵晓明同学这篇文章就是他答辩资料的整理。虽然没有特别多高大上的内容,但来自一线总结,非常系统,也非常实用,是很好性能优化的学习资料。
对了,这篇文章是微信公众号上的浏览量冠军。
性能优化方面,另外还推荐大家阅读刘丁去年发表的《性能优化模式》,也是很系统的总结,理论范儿十足。
后端技术方面,2016年还有几篇很扎实的文章,都是相关主题少见的干货: 服务容错模式 分布式系统互斥性与幂等性问题的分析与解决 Cache应用中的服务过载案例研究
Spark虽然以快著称,但在实际使用中如果性能优化不当,反而会显得很慢。本文与姊妹篇《Spark性能优化指南——高级篇》一起介绍了整套的Spark调优方案,包括开发调优、资源调优、数据倾斜调优和shuffle调优。
本文是2016年一系列基础性文章的代表。美团技术栈主要是Java体系,从实战角度对Java语言、平台以及主流框架的深入研究是必不可少的。
同类的文章还有: 红黑树深入剖析及Java实现 Java NIO浅析 聊聊clean code Spring MVC注解故障追踪记 Java Hotspot G1 GC的一些关键技术
消息队列一直是后端技术的热门话题,而且优秀的设计与项目层出不穷。本文的优点是系统全面地介绍了消息队列设计的思路。
除了这篇热文外,刘丁的《分布式队列编程:模型、实战篇》和《分布式队列编程:优化篇》从更抽象的数据结构层面讨论了队列的实践,《高性能队列——Disruptor》介绍了LMAX开发的名动一时的开源队列项目,相得益彰。
2016年的Top 10可以说是目前技术关注点的缩影。
除此之外,还有几个重要方向不能忽视。
第一个是测试,为了提升我们自己的效率,自动化测试、模板、测试工具这些都是必须多多探索的方向。这方面的文章有5篇: 基于 KIF 的 iOS UI 自动化测试和持续集成(本文作者是另一位女同学) 移动App兼容性测试工具Spider 基于 Appium 的 Android UI 自动化测试 使用模板快速编写测试用例 从0到1构建美团压测工具
第二个是云计算,别忘了我们有专门的云计算公司——美团云。2016年团队太忙,只分享了块存储方面的实践:《分布式块存储系统Ursa的设计与实现》和《MGW-美团高性能四层负载均衡》。不用着急,我们的Docker平台、自研的对象存储系统都将出现在明年。
第三个是算法,包括算法的理论与实践,还有特征工程。这方面的文章有5篇: 外卖排序系统特征生产框架 Online Learning算法理论与实践 深入FFM原理与实践
人工智能现在成了最热的技术方向,我们刚刚结束的Hackathon大奖(三部小米赞助的MIX概念手机)也被智能中心的同学摘取了。估计明年会有更多深度学习(CNN、RNN、GAN……)和其他算法的文章涌现。
最后,还有很多2015年以及更早的常青树,获得了很多的访问量,有的甚至在总排行榜上遥遥领先。这充分证明,好的技术内容并不那么容易过时。 MySQL索引原理及慢查询优化 基于Flume的美团日志收集系统 美团Android自动化之旅——生成渠道包 美团Android DEX自动拆包及动态加载简介 机器学习中的数据清洗与特征处理综述 深入理解Objective-C:Category Kafka文件存储机制那些事 Quartz应用与集群原理分析 序列化和反序列化 美团O2O排序解决方案——线上篇
2017年,我们会有更加系统的选题策划,全面覆盖美团大前端、后台、系统、算法、测试、运维六大技术通道,还有餐饮、酒店旅游、到店综合、平台、广告、技术工程与数据平台、金融服务和企业平台各部门技术团队。
2017年,我们会保持每周至少两篇技术实践文章的节奏,除了每月线下技术沙龙之外,还会定期举行线上技术直播,并把这些内容转成文章,分享给无法到场的读者。
2017年,值得期待。
如发现文章有错误、对内容有疑问,都可以关注美团技术团队微信公众号(meituantech),在后台给我们留言。
分享一线技术实践,沉淀成长学习经验