-
互联网公司数据安全保护新探索
- 文/鹏飞
- 2018-05-20 21:11
近年来,数据安全形势越发严峻,各种数据安全事件层出不穷。在当前形势下,互联网公司也基本达成了一个共识:虽然无法完全阻止攻击,但底线是敏感数据不能泄漏。也即是说,服务器可以被挂马,但敏感数据不能被拖走。服务器对于互联网公司来说,是可以接受的损失,但敏感数据泄漏,则会对公司产生重大声誉、经济影响。 在互联网公司的数据安全领域,无论是传统理论提出的数据安全生命周期,还是安全厂商提供的解决方案,都面临着落
-
SQL解析在美团点评中的应用
- 文/广友
- 2018-05-20 21:09
数据库作为核心的基础组件,是需要重点保护的对象。任何一个线上的不慎操作,都有可能给数据库带来严重的故障,从而给业务造成巨大的损失。为了避免这种损失,一般会在管理上下功夫。比如为研发人员制定数据库开发规范;新上线的SQL,需要DBA进行审核;维护操作需要经过领导审批等等。而且如果希望能够有效地管理这些措施,需要有效的数据库培训,还需要DBA细心的进行SQL审核。很多中小型创业公司,可以通过设定规范、
-
美团点评数据平台Kerberos优化实战
- 文/鹏飞
- 2018-05-20 21:03
背景 Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户端、服务器端的应用程序提供强大的认证服务。 作为一种可信任的第三方认证服务,Kerberos是通过传统的密码技术(如:共享密钥)执行认证服务的,被Client和Server同时信任。KDC是对该协议中第三方认证服务的一种具体实现,一直以来都是美团点评数据平台的核心服务之一,在Hive、HDFS、YARN等开源组件的权限认证方
-
质量运营在智能支付业务测试中的初步实践
- 文/勋伟
- 2018-05-11 00:46
背景 毋庸置疑,质量是决定产品能否成功、企业能否持续发展的关键因素之一。对于“质量时代”下的互联网企业,如何在快速迭代的节奏中兼顾质量,真正落地“人人重视质量、人人创造质量、人人享受质量”,这是对QA的要求,也是整个产品技术团队面临的重要挑战。 质量运营,是将运营的思路注入到质量评估与改进工作中,它着眼于产品的全生命周期,以质量为中心,以数据为驱动,通过建设持续迭代的质量保障体系,最终提升交付质量
-
美团点评广告实时索引的设计与实现
- 文/仓魁 李晓晖 刘铮 蔡平
- 2018-05-11 00:44
背景 在线广告是互联网行业常见的商业变现方式。从工程角度看,广告索引的结构和实现方式直接决定了整个系统的服务性能。本文以美团点评的搜索广告系统为蓝本,与读者一起探讨广告系统的工程奥秘。 领域问题 广告索引需具备以下基本特性: 层次化的索引结构 实时化的索引更新 层次投放模型 一般地,广告系统可抽象为如下投放模型,并实现检索、过滤等处理逻辑。 该层次结构的上下层之间是一对多的关系。一个广告主通
-
“小众”之美——Ruby在QA自动化中的应用
- 文/catfish
- 2018-04-27 21:34
前言 关于测试领域的自动化,已有很多的文章做过介绍,“黑科技”也比比皆是,如通过Java字节码技术实现接口的录制,Fiddler录制内容转Python脚本,App中的插桩调试等,可见角度不同,对最佳实践的理解也不一样。这里想要阐述的是,外卖(上海)QA团队应用相对“小众”的Ruby,在资源有限的条件下实现自动化测试的一些实践与经验分享。 背景 加入外卖上海团队时,共2名QA同学,分别负责App与M
-
插件化、热补丁中绕不开的Proguard的坑
- 文/夏伟 李挺
- 2018-04-27 21:32
文章主体部分已经发表于《程序员》杂志2018年2月期,内容略有改动。 ProGuard简介 ProGuard是2002年由比利时程序员Eric Lafortune发布的一款优秀的开源代码优化、混淆工具,适用于Java和Android应用,目标是让程序更小,运行更快,在Java界处于垄断地位。主要分为三个模块:Shrinker(压缩器)、Optimizer(优化器)、Obfuscator(混淆器)、
-
美团酒旅实时数据规则引擎应用实践
- 文/晓星 伟彬
- 2018-04-19 21:20
背景 美团点评酒旅运营需求在离线场景下,已经得到了较为系统化的支持,通过对离线数据收集、挖掘,可对目标用户进行T+1触达,通过向目标用户发送Push等多种方式,在一定程度上提高转化率。但T+1本身的延迟性会导致用户在产生特定行为时不能被实时触达,无法充分发挥数据的价值,取得更优的运营效果。 在此背景下,运营业务需要着手挖掘用户行为实时数据,如实时浏览、下单、退款、搜索等,对满足运营需求用户进行实时
-
美团点评智能支付核心交易系统的可用性实践
- 文/静儿
- 2018-04-19 21:10
背景 每个系统都有它最核心的指标。比如在收单领域:进件系统第一重要的是保证入件准确,第二重要的是保证上单效率。清结算系统第一重要的是保证准确打款,第二重要的是保证及时打款。我们负责的系统是美团点评智能支付的核心链路,承担着智能支付100%的流量,内部习惯称为核心交易。因为涉及美团点评所有线下交易商家、用户之间的资金流转,对于核心交易来说:第一重要的是稳定性,第二重要的还是稳定性。 问题引发 作为一
-
工作中如何做好技术积累
- 文/刘丁
- 2018-04-16 19:34
引言 古人云:“活到老,学到老。”互联网算是最辛苦的行业之一,“加班”对工程师来说已是“家常便饭”,同时互联网技术又日新月异,很多工程师都疲于应付,叫苦不堪。以至于长期以来流传一个很广的误解:35岁是程序员工作的终点。 如何在繁忙的工作中做好技术积累,构建个人核心竞争力,相信是很多工程师同行都在思考的问题。本文是我自己的一些总结,试图从三个方面来解答: 第一部分阐述了一些学习的原则。任何时候,遵
-
美团外卖Android Lint代码检查实践
- 文/子健
- 2018-04-13 15:07
概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量。除了Android原生提供的几百个Lint规则,还可以开发自定义Lint规则以满足实际需要。 为什么要使用Lint 在美团外卖Android App的迭代过程中,线上问题频繁发生。开发时很容易写出一些问题代码,例如Serializable的使用:实现了Seriali
-
使用TensorFlow训练WDL模型性能问题定位与调优
- 文/郑坤
- 2018-04-08 19:53
简介 TensorFlow是Google研发的第二代人工智能学习系统,能够处理多种深度学习算法模型,以功能强大和高可扩展性而著称。TensorFlow完全开源,所以很多公司都在使用,但是美团点评在使用分布式TensorFlow训练WDL模型时,发现训练速度很慢,难以满足业务需求。经过对TensorFlow框架和Hadoop的分析定位,发现在数据输入、集群网络和计算内存分配等层面出现性能瓶颈。主要原
-
Toast与Snackbar的那点事
- 文/子尧 腾飞
- 2018-03-29 19:50
背景 Toast是Android平台上的常用技术。从用户角度来看,Toast是用户与App交互最基本的提示控件;从开发者角度来看,Toast是开发过程中常用的调试手段之一。此外,Toast语法也非常简单,仅需一行代码。基于简单易用的优点,Toast在Android开发过程中被广泛使用。 但是,Toast是系统层面提供的,不依赖于前台页面,存在滥用的风险。为了规避这些风险,Google在Androi
-
美团“猜你喜欢”深度学习排序模型实践
- 文/绍哲,刘锐
- 2018-03-29 19:45
一. 引言 推荐作为解决信息过载和挖掘用户潜在需求的技术手段,在美团点评这样业务丰富的生活服务电子商务平台,发挥着重要的作用。在美团App里,首页的“猜你喜欢”、运营区、酒店旅游推荐等重要的业务场景,都是推荐的用武之地。 图1 美团首页“猜你喜欢”场景 目前,深度学习模型凭借其强大的表达能力和灵活的网络结构在诸多领域取得了重大突破,美团平台拥有海量的用户与商家数据,以及丰富的产品使用场景
-
美团外卖骑手背后的AI技术
- 文/何仁清
- 2018-03-29 19:40
背景 随着数字化时代的到来,外卖市场近年来发展非常迅猛。对外卖物流系统而言,配送效率和用户体验至关重要。而实际配送过程是由配送员(骑手)最终完成的,因此,想要真正提升配送效率,不但要在智能调度系统(订单指派、路径规划、ETA)上下功夫,还要不断提升配送员的“附加”能力,让他们越送越“熟”,越送越“顺”,越送越“快”。以此为出发点,美团点评研发团队设计了骑手智能助手,全面提升骑手的各方面能力。 在
-
美团配送资金安全治理之对账体系建设
- 文/甄超 宏伟
- 2018-03-21 14:00
前言 随着美团配送业务的飞速发展,单量已经达到千万级别,同时每天产生的资金额已经超过几千万,清结算系统在保证线上服务稳定可靠的前提下,如何系统化的保障资金安全是非常核心且重要的课题,配送清结算系统经过近3年的建设和打磨,在资金安全保障的多个方面均有一些总结和实践,保障资金安全是值得系统思考的课题,只言片语难以全面概括,需要更多的着墨才能较完整阐述,本文侧重点会阐述“对账”的概念,在支付&清结算领域
-
DataMan-美团旅行数据质量监管平台实践
- 文/德晓 数据中心团队
- 2018-03-21 13:27
背景 数据,已经成为互联网企业非常依赖的新型重要资产。数据质量的好坏直接关系到信息的精准度,也影响到企业的生存和竞争力。Michael Hammer(《Reengineering the Corporation》一书的作者)曾说过,看起来不起眼的数据质量问题,实际上是拆散业务流程的重要标志。 数据质量管理是测度、提高和验证质量,以及整合组织数据的方法等一套处理准则,而体量大、速度快和多样性的特点,
-
每天数百亿用户行为数据,美团点评怎么实现秒级转化分析?
- 文/业锐
- 2018-03-20 22:03
用户行为分析是数据分析中非常重要的一项内容,在统计活跃用户,分析留存和转化率,改进产品体验、推动用户增长等领域有重要作用。美团点评每天收集的用户行为日志达到数百亿条,如何在海量数据集上实现对用户行为的快速灵活分析,成为一个巨大的挑战。为此,我们提出并实现了一套面向海量数据的用户行为分析解决方案,将单次分析的耗时从小时级降低到秒级,极大的改善了分析体验,提升了分析人员的工作效率。本文以有序漏斗的需求
-
2018开春大礼:750页电子书 + 33场技术沙龙资料 + 17场线上课程分享
- 文/王鹏
- 2018-03-20 09:07
2017年,美团点评作为全球领先的一站式生活服务互联网平台,在吃喝玩乐住行等200多个品类,2800多个城区县,服务了亿万消费者、数百万商家,日订单数超过2200万,年度交易总额达到了3600亿。2017年10月,美团点评完成最新一轮融资后估值达300亿美元,也使我们进入全球独角兽的最前列。 在幕后默默支撑和驱动这个平台持续高速发展的,是美团点评技术团队。从最初只有几位工程师的技术组,到如今近70
-
美团旅行销售绩效系统研发实践
- 文/夷山 龙龙 张乐
- 2018-03-16 19:35
背景 O2O是目前互联网竞争最激烈的领域之一,其重要的业务特征是有大规模的线下业务团队,他们分布在五湖四海,直接服务着数以百万的商家,责任很重,管理的难度巨大。能否通过技术手段,打造高效的线下团队,是O2O公司的核心竞争力。随着美团酒旅业务的快速增长,业务人员绩效的考核方案和激励政策呈现出多样化、复杂化的特点,对绩效计算实时性和准确性的要求也越来越高。原始的绩效计算流程,包括各战区目标下发、激励调
-
Redis 高负载下的中断优化
- 文/骁雄 春林
- 2018-03-16 19:30
背景 2017年年初以来,随着Redis产品的用户量越来越大,接入服务越来越多,再加上美团点评Memcache和Redis两套缓存融合,Redis服务端的总体请求量从年初最开始日访问量百亿次级别上涨到高峰时段的万亿次级别,给运维和架构团队都带来了极大的挑战。 原本稳定的环境也因为请求量的上涨带来了很多不稳定的因素,其中一直困扰我们的就是网卡丢包问题。起初线上存在部分Redis节点还在使用千兆网卡的
-
美团点评金融平台Web前端技术体系
- 文/禹霖
- 2018-03-16 19:26
背景 随着美团点评金融业务的高速发展,前端研发数量从 2015 年的 1 个人,扩张到了现在横跨北上两地 8 个事业部的将近 150 人。业务新,团队新,前端领域框架技术又层出不穷,各个业务的研发团队在技术选择上没有明确的指导意见,致使业务与业务之间的技术差异越来越大,在技术工具研发上无法共建,在资源调度上成本也很高。 2017年下半年,金融平台发起了技术栈统一行动,行动分为后端、iOS、Andr
-
美团外卖Android平台化架构演进实践
- 文/吴凯 晓飞 海冰
- 2018-03-16 19:23
美团外卖自2013年创建以来,业务一直高速发展。目前美团外卖日完成订单量已突破1800万,成为美团点评最重要的业务之一。美团外卖的用户端入口,从单一的外卖独立App,拓展为外卖、美团、点评等多个App入口。美团外卖所承载的业务,也从单一的餐饮业务,发展到餐饮、超市、生鲜、果蔬、药品、鲜花、蛋糕、跑腿等十多个大品类业务。业务的快速发展对客户端架构不断提出新的挑战。 平台化背景 很早之前,外卖作为孵化
-
大众点评App的短视频耗电量优化实战
- 文/倩云
- 2018-03-11 11:03
前言 美团点评测试团队负责App的质量保证工作,日常除了App的功能测试以外,还会重点关注App的性能测试。现在大家对手机越来越依赖,而上面各App的耗电量,直接影响了手机的待机时间,是用户非常关心的一点。本文主要通过一个典型案例,介绍App性能测试中的电量测试,并总结了我们由此引发的一些思考。 一、案例分析 短视频作为已被市场验证的新内容传播载体,能有效增加用户停留时长。大众点评App从9.3版
-
用Vue.js开发微信小程序:开源框架mpvue解析
- 文/成全
- 2018-03-11 11:01
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架。使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力。如果想将 H5 项目改造为小程序,或开发小程序后希望将其转换为 H5,mpvue 将是十分契合的一种解决方案。 目前, mpvue 已经在美团点评多个实际业务项目中得到了验证,因此我们决定将其开源,希望更多技术同行一起开发,应用到
-
人物志 | 美团点评女技术总监任登君:不要给自己的人生设限
- 文/王鹏
- 2018-03-08 15:07
在我们美团点评技术团队超过6000名工程师中,有众多的女同学,她们是支撑全球最大生活服务电子商务平台不可或缺的力量。3月8日女神节,我们专访了她们的代表——美团点评广告平台技术负责人任登君。登君也是我们团队里目前职位最高的女性技术Leader,平时喜欢玩游戏,喜欢跑步,外号小A也是当年游戏的ID。 希望任登君的成长故事对大家有所启发。同时,在这个特别的日子里,真诚祝福所有的女工程师们,永远年轻,永
-
Android动态日志系统Holmes
- 文/少飞 陈潼 利峰
- 2018-02-28 20:34
背景 美团点评公司是全球领先的一站式生活服务平台,为6亿多消费者和超过450万优质商户提供连接线上线下的电子商务网络。美团点评的业务覆盖了超过200个丰富品类和2800个城区县网络,在餐饮、外卖、酒店旅游、丽人、家庭、休闲娱乐等领域具有领先的市场地位。平台大,责任也大。在移动端,如何快速定位并解决线上问题提高用户体验给我们带来了极大挑战。线上偶尔会发生某一个页面打不开、新活动抢单按钮点击没响应、登
-
美团点评运营数据产品化应用与实践
- 文/吉喆 数据中心团队
- 2018-02-11 19:58
背景 美团点评作为全球最大的生活服务平台,承接超过千万的POI,服务于数量庞大的活跃用户。在海量数据的前提下,定位运营业务、准确找到需要数据的位置,并快速提供正确、一致、易读的数据就变得异常困难,这些困难主要体现在以下方面: 取数门槛高,找不到切合的数据,口径复杂不易计算,对运营人员有一定的技能要求,人力成本增大; 数据处理非常耗时,缺少底层离线数仓模型建设和预计算支撑,Ad-hoc平台查询缓慢
-
美团点评运营数据产品化应用与实践
- 文/吉喆 数据中心团队
- 2018-02-11 19:58
背景 美团点评作为全球最大的生活服务平台,承接超过千万的POI,服务于数量庞大的活跃用户。在海量数据的前提下,定位运营业务、准确找到需要数据的位置,并快速提供正确、一致、易读的数据就变得异常困难,这些困难主要体现在以下方面: 取数门槛高,找不到切合的数据,口径复杂不易计算,对运营人员有一定的技能要求,人力成本增大; 数据处理非常耗时,缺少底层离线数仓模型建设和预计算支撑,Ad-hoc平台查询缓慢
-
美团点评移动端基础日志库——Logan
- 文/白帆 立成
- 2018-02-11 19:56
背景 对于移动应用来说,日志库是必不可少的基础设施,美团点评集团旗下移动应用每天产生的众多种类的日志数据已经达到几十亿量级。为了解决日志模块普遍存在的效率、安全性、丢失日志等问题,Logan基础日志库应运而生。 现存问题 目前,业内移动端日志库大多都存在以下几个问题: 卡顿,影响性能 日志丢失 安全性 日志分散 首先,日志模块作为底层的基础库,对上层的性能影响必须尽量小,但是日志的写操作是非常
-
深度学习及AR在移动端打车场景下的应用
- 文/大卫 余烜 魏博
- 2018-02-02 22:33
本文内容根据作者在美团点评Hackathon 4.0中自研的项目实践总结而成。作为美团点评技术团队的传统节目,每年两次的Hackathon已经举办多年,产出很多富于创意的产品和专利,成为工程师文化的重要组成部分。本文就是2017年冬季Hackathon 4.0一个获奖项目的实践总结。 前言 2017年在移动端直接应用AI算法成为一种主流方向。Apple也在WWDC 2017上重磅推出Core ML
-
流量运营数据产品最佳实践——美团旅行流量罗盘
- 文/冰 瑞芳 夷山
- 2018-02-02 22:31
背景 互联网进入“下半场”后,美团点评作为全球最大的生活服务平台,拥有海量的活跃用户,这对技术来说,是一个巨大的宝藏。此时,我们需要一个利器,来最大程度发挥这份流量巨矿的价值,为酒旅的业务增长提供源源不断的动力。这个利器,我们叫它“流量罗盘”。 我们首先要思考几个问题: 流量都来自哪些入口; 本地场景、异地场景的流量差异如何运用好; 如何挖掘出适合不同品类的流量场景; 是否能让不同群体的用户得到
-
Android Hook技术防范漫谈
- 文/礼赞 毅然
- 2018-02-02 22:29
背景 当下,数据就像水、电、空气一样无处不在,说它是“21世纪的生产资料”一点都不夸张,由此带来的是,各行业对于数据的争夺热火朝天。随着互联网和数据的思维深入人心,一些灰色产业悄然兴起,数据贩子、爬虫、外挂软件等等也接踵而来,互联网行业中各公司竞争对手之间不仅业务竞争十分激烈,黑科技的比拼也越发重要。随着移动互联网的兴起,爬虫和外挂也从单一的网页转向了App,其中利用Android平台下Dalvi
-
美团点评基于Storm的实时数据处理实践
- 文/徐阳 Fat-Carrot
- 2018-01-26 16:45
背景 目前美团点评已累计了丰富的线上交易与用户行为数据,为商家赋能需要我们有更强大的专业化数据加工能力,来帮助商家做出正确的决策从而提高用户体验。目前商家端产品在数据应用上主要基于离线数据加工,数据生产调度以“T+1”为主,伴随着越来越深入的精细化运营,实时数据应用诉求逾加强烈。本文将从目前主流实时数据处理引擎的特点和我们面临的问题出发,简单的介绍一下我们是如何搭建实时数据处理系统。
-
初探下一代网络隔离与访问控制
- 文/赵彦
- 2018-01-26 16:44
概述 安全域隔离是企业安全里最常见而且最基础的话题之一,目前主要的实现方式是网络隔离(特别重要的也会在物理上实现隔离)。对于很小的公司而言,云上开个VPC就实现了办公网和生产网的基础隔离,但对于有自建的IDC、网络基础设施甚至自己构建云基础设施的大型公司而言,网络隔离是一项基础而复杂的安全建设。基础在这里的意思并非没有技术含量,而是强调其在安全体系里处于一个根基的位置,根基做不好,上层建设都不牢靠
-
聊聊MyBatis缓存机制
- 文/凯伦
- 2018-01-19 20:48
前言 MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题,带着个人的兴趣,希望从应用及源码的角度为读者梳理MyBatis缓存机制。本次分析中涉及到的代码和数据库表均放在GitHub上,
-
境外业务性能优化实践
- 文/云霜
- 2018-01-19 20:46
本文根据第16期美团点评技术线上沙龙OnLine演讲内容整理而成。 前言 性能问题简介 应用性能是产品用户体验的基石,性能优化的终极目标是优化用户体验。当我们谈及性能,最直观能想到的一个词是“快”,Strangeloop在对众多的网站做性能分析之后得出了一个著名的3s定律“页面加载速度超过3s,57%的访客会离开”,可见页面加载速度对于互联网产品的重要性。速度在Google、百度等搜索引擎的PR评
-
卫星系统——酒店后端全链路日志收集工具介绍
- 文/亚辉 曾鋆
- 2018-01-15 20:11
背景 随着酒店业务的高速发展,我们为用户、商家提供的服务越来越精细,系统服务化程度、复杂度也逐渐上升。微服务化虽然能够很好地解决问题,但也有副作用,比如,问题定位。 每次问题定位都需要从源头开始找同事帮我人肉查日志,举一个简单的例子: “这个详情页的价格是怎么算出来的?” 一次用户酒店可订空房页(POI详情页)访问,流量最多需要经过73个服务节点。查问题的时候需要先后找4~5个关键节点的同学帮我
-
高性能平台设计—美团旅行结算平台实践
- 文/子鑫
- 2018-01-15 20:08
本文根据第23期美团点评技术沙龙演讲内容整理而成。 酒旅有很多条业务线,例如酒店、门票、火车票等等,每种业务都有结算诉求,而结算处于整个交易的最后一环不可缺少,因此我们将结算平台化,来满足业务的结算诉求。结算平台通过业务需求以及我们对业务的理解,沉淀了各种能力并构建了丰富的能力地图。我们将业务的发展归纳为几个阶段,例如业务孵化阶段,快速抢占市场扩大覆盖阶段,市场稳定后急需盈利阶段,国内业务稳定后的
-
MSON,让JSON序列化更快
- 文/秦喆 芝任 天洲 赵鹏
- 2018-01-09 19:42
问题 我们经常需要在主线程中读取一些配置文件或者缓存数据,最常用的结构化存储数据的方式就是将对象序列化为JSON字符串保存起来,这种方式特别简单而且可以和SharedPrefrence配合使用,因此应用广泛。但是目前用到的Gson在序列化JSON时很慢,在读取解析这些必要的配置文件时性能不佳,导致卡顿启动速度减慢等问题。 Gson的问题在哪里呢?笔者用AndroidStudio的profile工具
-
Lego-美团点评接口自动化测试实践
- 文/永达
- 2018-01-09 19:32
一、概述 1.1 接口自动化概述 众所周知,接口自动化测试有着如下特点: 低投入,高产出。 比较容易实现自动化。 和UI自动化测试相比更加稳定。 如何做好一个接口自动化测试项目呢? 我认为,一个“好的”自动化测试项目,需要从“时间”、“人力”、“收益”这三个方面出发,做好“取舍”。 不能由于被测系统发生一些变更,就导致花费了几个小时的自动化脚本无法执行。同时,我们需要看到“收益”,不能为了总
-
智能投放系统之场景分析最佳实践
- 文/张腾 智能投放技术团队
- 2017-12-29 14:23
背景 新美大平台作为业内最大的O2O的平台,以短信/push作为运营手段触达用户的量级巨大,每日数以千万计。美团点评线上存在超过千万的POI,覆盖超过2000城市、2.5万个后台商圈。在海量数据存在的前提下,实时投放的用户在场景的选择上存在一些困难,所以我们提供对场景的颗粒化查询和智能建议,为用户解决三大难题: 我要投放的区域在哪,实时和历史的客流量是什么样的? 在我希望投放的区域历史和现在都发
-
从实际案例聊聊Java应用的GC优化
- 文/录录
- 2017-12-29 14:20
当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。本篇会介绍这些通用的GC优化策略和相关实践案例,主要包括如下内容: 优化前准备: 简单回顾JVM相关知识、介
-
Shield——开源的移动端页面模块化开发框架
- 文/何治
- 2017-12-28 19:11
引言 一直以来,如何能更高效地开发与维护页面是Android与iOS开发同学最主要的工作和最关心的问题。随着业务的不断发展,根据特定业务场景产生的定制化需求变得越来越多。单一页面往往需要根据不同业务、不同场景甚至不同用户展示不同的内容。在这样的背景下,我们开始考虑对页面进行切分,把一个页面切分成多个模块,以提高复杂页面的可维护性。 各种不同的定制化页面如下: Shield是美团点评到店综合团队模块
-
美团金融扫码付静态资源加载优化实践
- 文/孙辉 李罡
- 2017-12-23 18:24
扫码付项目是美团金融智能支付团队面向 C 端消费者推出的一款 H5 融合支付类的产品,消费者在商家消费之后,可使用多种 App 进行扫码支付,同时可对商家进行评价,支持美团、大众点评、微信、支付宝、美团钱包等多种 App,目前业务日均 PV 千万级。如下图所示: 接入扫码付的商家大多数位于购物中心、写字楼等人口密集的室内空间。网络链路复杂、相对开阔的地区网络质量较差,为了减轻网络条件的影响,我
-
智能分析最佳实践——指标逻辑树
- 文/萍丽 夷山
- 2017-12-04 09:47
背景 所有业务都会面对“为什么涨、为什么降、原因是什么?”这种简单粗暴又不易定位的业务问题。为了找出数据发生异动的原因,业务人员会通过使用多维查询、dashboard等数据产品锁定问题,再辅助人工分析查找问题原因,这个过程通常需要一天时间。几乎每种业务角色的用户都在做相似的分析,但在业务方分析人员发生工作变动时,分析方法难以得到较好传承。因此我们需要一款自动给出分析结论的智能化数据产品来解决上面的
-
美团点评联盟广告场景化定向排序机制
- 文/马莹 一凡
- 2017-12-04 09:44
前言 在美团点评的联盟广告投放系统(DSP)中,广告从召回到曝光的过程需要经历粗排、精排和竞价及反作弊等阶段。其中精排是使用CTR预估模型进行排序,由于召回的候选集合较多,出于工程性能上的考虑,不能一次性在精排过程中完成候选集的全排序,因此在精排之前,需要对候选广告进行粗排,来过滤、筛选出相关性较高的广告集合,供精排使用。 本文首先会对美团点评的广告粗排机制进行概要介绍,之后会详细阐述基于用户、
-
即时配送的ETA问题之亿级样本特征构造实践
- 文/超逸
- 2017-11-24 19:54
引言 ETA(Estimated time of Arrival,预计送达时间)是外卖配送场景中最重要的变量之一(如图1)。 我们对ETA预估的准确度和合理度会对上亿外卖用户的订单体验造成深远影响,这关系到用户的后续行为和留存,是用户后续下单意愿的压舱石。ETA在配送业务架构中也具有重要地位,是配送运单实时调度系统的关键参数。对ETA的准确预估可以提升调度系统的效率,在有限的运力中做到对运单的合理
-
流计算框架 Flink 与 Storm 的性能对比
- 文/梦瑶
- 2017-11-17 13:04
1. 背景 Apache Flink 和 Apache Storm 是当前业界广泛使用的两个分布式实时计算框架。其中 Apache Storm(以下简称“Storm”)在美团点评实时计算业务中已有较为成熟的运用(可参考 Storm 的可靠性保证测试),有管理平台、常用 API 和相应的文档,大量实时作业基于 Storm 构建。而 Apache Flink(以下简称“Flink”)在近期倍受关注,具
-
MyFlash——美团点评的开源MySQL闪回工具
- 文/美团点评-运维部-广友
- 2017-11-17 13:01
由于运维、DBA的误操作或是业务bug,我们在操作中时不时会出现误删除数据情况。早期要想恢复数据,只能让业务人员根据线上操作日志,构造误删除的数据,或者DBA使用binlog和备份的方式恢复数据,不管那种,都非常费时费力,而且容易出错。直到彭立勋首次在MySQL社区为mysqlbinlog扩展了闪回功能。 在美团点评,我们也遇到过研发人员误删主站的配置信息,从而导致主站长达2个小时不可用的情况。
-
美团外卖自动化业务运维系统建设
- 文/宏伟
- 2017-11-14 14:50
背景 美团外卖业务在互联网行业是非常独特的,不仅流程复杂——从用户下单、商家接单到配送员接单、交付,而且压力和流量在午、晚高峰时段非常集中。同时,外卖业务的增长非常迅猛,自2013年11月上线到最近峰值突破1600万,还不到4年。在这种情况下,一旦出现事故,单纯靠人工排查解决问题,存在较多的局限性。本文将详细解析问题发现、根因分析、问题解决等自动化运维体系的建设历程与相关设计原则。 外卖业务特点
-
大圣魔方——美团点评酒旅BI报表工具平台开发实践
- 文/振兴 夷山 米彤
- 2017-11-03 16:19
背景 当前的互联网数据仓库系统里,数据中心往往存放了大量Cube化或者半Cube化的数据。如果需要将这些数据的内在关系体现出来,需要写大量的程序和SQL来发现数据之间的内在规律,往往会造成用户做非常多的重复性工作;而且由于没有数据校验的机制,还容易出错,无法直观查看各种数据(没有可视化的UI图表)。这时就急需一款基于Cube的报表工具快速为用户提供报表服务,可以完成多维查询、上卷、下钻等各种功能。
-
美团点评境外度假团队前端项目开发实践总结
- 文/毓杰
- 2017-11-01 14:21
前言 随着前端项目数量和规模越来越大,参与的人员也越来越多,如何在前端项目开发过程中保证优质的开发者体验和项目的可维护性,同时确保极致的用户体验将会是一个非常大的挑战。 为了应对这个挑战,美团点评境外度假前端研发团队自2016年6月起启动了面向C端用户的"赫尔墨斯"项目,主要围绕以下几个方面进行展开: 前后端分离:前端拥有完整独立的开发、测试、部署的流程,与后端完全分离,减少沟通成本。 模块化与
-
支付通道自动化管理的实践之路
- 文/苗苗 加志
- 2017-10-27 14:29
随着支付业务量激增,支付团队不断壮大。为了满足日益增长的业务需求,大量的支付通道逐渐接入,但由于对接的各银行和第三方系统的稳定性参差不齐,支付通道故障时有发生,作为承接上下游的核心系统,要在一系列不稳定的系统之上建立一个可以给上游提供稳定服务的系统,仅依赖人工维护是远远不够的,所以建立一个完善的支付通道自动化管理系统势在必行。本文主要介绍美团点评技术团队支付通道自动化管理的演进之路。 初级阶段 监
-
互联网企业安全之端口监控
- 文/光宗
- 2017-10-27 14:20
背景 外网端口监控系统是整个安全体系中非常重要的一环,它就像眼睛一样,时刻监控外网端口开放情况,并且在发现高危端口时能够及时提醒安全、运维人员做出相应处理。 对安全人员来说,互联网公司在快速发展壮大的过程中,外网边界的管控容易出现照顾不全的现象。最初我们用Python+Nmap开发的外网端口监控系统,在公司边界扩大的过程中已经无法满足要求了,所以出现过一例因为运维人员误操作将高危端口曝露至外网导致
-
美团App 插件化实践
- 文/李挺 夏伟
- 2017-10-12 20:20
背景 在Android开发行业里,插件化已经不是一门新鲜的技术了,在稍大的平台型App上早已是标配。进入2017年,Atlas、Replugin、VirtualAPK相继开源,标志着插件化技术进入了成熟阶段。但纵观各大插件框架,都是基于自身App的业务来开发的,目标或多或少都有区别,所以很难有一个插件框架能一统江湖解决所有问题。最后就是绕不开的兼容性问题,Android每次版本升级都会给各个插件化
-
函数式编程在Redux/React中的应用
- 文/增迪
- 2017-10-12 19:47
本文简述了软件复杂度问题及应对策略:抽象和组合;展示了抽象和组合在函数式编程中的应用;并展示了Redux/React在解决前端状态管理的复杂度方面对上述理论的实践。这其中包括了一段有趣的Redux推导。 软件复杂度及其应对策略 软件复杂度 软件的首要技术使命是管理复杂度。——代码大全 在软件开发过程中,随着需求的变化和系统规模的增大,我们的项目不可避免地会趋于复杂。如何对软件复杂度及其增长速率
-
即时配送的订单分配策略:从建模和优化
- 文/井华
- 2017-10-11 12:11
序言 最近两年,外卖的市场规模持续以超常速度发展。近期美团外卖订单量峰值达到1600万,是全球规模最大的外卖平台。目前各外卖平台正在优质供给、配送体验、软件体验等各维度展开全方位的竞争,其中,配送时效、准时率作为履约环节的重要指标,是外卖平台的核心竞争力之一。 要提升用户的配送时效和准时率,最直接的方法是配备较多的配送员,扩大运力规模,然而这也意味着配送成本会很高。所以,外卖平台一方面要追求好的配
-
iPhone X 刘海打理指北
- 文/starzhang
- 2017-09-29 14:25
背景 iPhone X 刘海机于9月13日发布,给科技小春晚带来一波高潮。作为开发人员却多出来一份忧虑,iPhone X 怎么适配?我们 App 的脑袋会不会也长一刘海出来?Tabbar 会不会被圆角?先来看一下美团 App 的表现: 图 1.1 启动时的 App 表现 图 1.2 下拉刷新之后的表现 图 1.3 搜索的表现 图 1.4 “我的Tab”表现
-
Spring Data REST 远程代码执行漏洞(CVE-2017-8046)分析与复现
- 文/其河
- 2017-09-29 14:21
前言 2009年9月Spring 3.0 RC1发布后,Spring就引入了SpEL(Spring Expression Language)。对于开发者而言,引入新的工具显然是令人兴奋的,但是对于运维人员,也许是噩耗的开始。类比Struts 2框架,会发现绝大部分的安全漏洞都和ognl脱不了干系。尤其是远程命令执行漏洞,占据了多少甲方乙方工程师的夜晚/周末,这导致Struts 2越来越不受待见。
-
前端感官性能的衡量和优化实践
- 文/郭凯
- 2017-09-22 17:42
本文已发表在2017年8月《程序员》杂志。 我们为什么需要关注站点的性能,性能为什么如此重要呢?如今任何互联网产品首先重要的都是流量,流量最终会转换为商业价值。所以在互联网产品中,流量、转化率和留存率基本上是产品经理或者业务非常关注的几个因素,而性能则会直接影响到用户的转化和留存(在一定阶段之后影响较大,产品初期功能的因素占比更大)。所以换言之性能,其实是钱,我们关注和监测性能并非是为了数据而数据
-
人工智能在线特征系统中的生产调度
- 文/杨浩 伟彬
- 2017-09-22 14:48
前言 在上篇博客《人工智能在线特征系统中的数据存取技术》中,我们围绕着在线特征系统存储与读取这两方面话题,针对具体场景介绍了一些通用技术,此外特征系统还有另一个重要话题:特征生产调度。本文将以美团点评酒旅在线特征系统为原型,介绍特征生产调度的架构演进及核心技术。架构演进共包含三个阶段,不同阶段面临的需求痛点和挑战各有不同,包括导入并发控制、特征变更原子切换、实时特征计算框架涉及、实时与离线调度融合
-
Android Binder漏洞挖掘技术与案例分享
- 文/占朋
- 2017-09-14 19:52
本文由作者根据其在KCon 2016黑客大会上的演讲内容整理而成。演讲稿链接:Binder fuzzing based on drozer。 文章开始,先来看几个我在工作生活中发现的Android漏洞。其中包括Android系统锁屏密码绕过(影响了所有安全补丁在2016年10月份以前的Android 6.0、6.0.1、7.0系统)、三星手机关机窃听、三星手机越权修改主题、系统拒绝服务漏洞。然后我
-
监控平台前端SDK开发实践
- 文/杨婷
- 2017-09-07 18:48
背景 监控是提高故障处理能力和保障服务质量必需的一环,它需要负责的内容包括:及时上报错误、收集有效信息、提供故障排查依据。 及时上报错误:发生线上问题后,经由运营或者产品反馈到开发人员,其中流转过程可能是几分钟甚至几十分钟,这段时间可能直接导致公司的经济损失。如果有一个监控系统,在线上出现问题时,监控系统能够第一时间报警,并且通知到开发人员,那开发人员就可以第一时间修复上线,使公司损失最小化。
-
在CentOS 6上搭建IPsecVPN,并打通两个VPC内网
- 文/lishf
- 2017-09-05 08:00
简介 本文介绍IPSecVPN的搭建过程,并通过公网将分属于美团云上海与北京两个机房内的vpc子网打通。 由于美团云经典网络在网络控制器上对ip_filter 做了限制,打通前需要确保两边网络都处于VPC下,且子网网段无交集。 当前部署环境为CentOS 6.5。 一、网络模型 计划实现的效果是,从左侧vpc网络上的left-client主机,可以ping通右侧vpc中right-client主
-
美团点评数据平台融合实践
- 文/语宸
- 2017-08-25 19:00
本文根据作者在2017年ArchSummit的分享记录整理而成。 背景 互联网格局复杂多变,大规模的企业合并重组不时发生。原来完全独立甚至相互竞争的两家公司,有着独立的技术体系、平台和团队,如何整合,技术和管理上的难度都很大。2015年10月,美团与大众点评合并为今天的“美团点评”,成为全球规模最大的生活服务平台。主要分布在北京和上海两地的两支技术团队和两套技术平台,为业界提供了一个很好的整合案例
-
Android漏洞扫描工具Code Arbiter
- 文/建弋
- 2017-08-17 19:04
目前Android应用代码漏洞扫描工具种类繁多,效果良莠不齐,这些工具有一个共同的特点,都是在应用打包完成后对应用进行解包扫描。这种扫描有非常明显的缺点,扫描周期较长,不能向开发者实时反馈代码中存在的安全问题,并且对于问题代码的定位需要手动搜索匹配源码,这样就更不利于开发者对问题代码进行及时的修改。Code Arbiter正是为解决上述两个问题而开发的,专门对Android Studio中的源码进
-
MongoDB搭建分片集群
- 文/qiz
- 2017-08-17 18:20
简介 MongoDB支持分片机制,创建多个分片将数据分散存储,增强了MongoDB横向扩展的能力,从而满足数据大量增长的需求。 下图(图片源于Mongodb官方文档)是一个典型的Mongdb分片集群,每个分片配置为复制集的方式。 本文将在3台server上创建MongoDB分片集群: 数据节点,2个分片(shard) 每个分片为3节点的复制集(replica set) 3个路由节点(mongo
-
在CentOS 6上搭建PXC环境
- 文/qiz
- 2017-08-17 18:20
简介 Percona XtraDB Cluster简称PXC,是Percona公司开发的高可用性和扩展性的MySQL开源集群方案,集成了Percona Server、Percona XtraBackup以及Codership Galera库。本文将带领大家在CentOS 6操作系统上搭建一套3节点的PXC环境。 在安装PXC环境之前,做好以下准备: 各个节点能访问外网; 节点间防火墙打开3306
-
数据库审核之平台使用篇
- 文/tuteng
- 2017-08-17 18:00
简介 上一篇安装篇已经介绍了平台的安装,这一篇就以mysql为例说明如何对数据库进行审核 针对数据库的审核从四个维度进行,对象、执行计划、执行特征、文本。 开始配置 首先在美团云的操作界面的数据库一栏申请一台mysql5.6或者mysql5.7的机器,设置好账号与密码 等数据库启动了,就可以在settings.py进行如下配置,需要对多台实例审核就配置多个条目为目标需要被审核的机器的信息 MYSQ
-
数据库审核之平台安装篇
- 文/tuteng
- 2017-08-17 02:00
简介 上一篇安装篇已经介绍了平台的安装,这一篇就以mysql为例说明如何对数据库进行审核 针对数据库的审核从四个维度进行,对象、执行计划、执行特征、文本。 开始配置 首先在美团云的操作界面的数据库一栏申请一台mysql5.6或者mysql5.7的机器,设置好账号与密码 等数据库启动了,就可以在settings.py进行如下配置,需要对多台实例审核就配置多个条目为目标需要被审核的机器的信息 MYSQ
-
云端的SRE发展与实践
- 文/普存
- 2017-08-03 21:36
本文根据作者在美团点评第21期技术沙龙的分享记录整理而成。 背景 SRE(Site Reliability Engineering)是Google于2003年提出的概念,将软件研发引入运维工作。现在渐渐已经成为各大互联网公司技术团队的标配。 美团点评作为综合性多业务的互联网+生活服务平台,覆盖“吃住行游购娱”各个领域,SRE就会面临一些特殊的挑战。 业务量的飞速增长,机器数量剧增,导致人工维护成
-
深度学习在美团点评推荐平台排序中的运用
- 文/潘晖 美团点评搜索推荐团队
- 2017-07-28 14:33
美团点评作为国内最大的生活服务平台,业务种类涉及食、住、行、玩、乐等领域,致力于让大家吃得更好,活得更好,有数亿用户以及丰富的用户行为。随着业务的飞速发展,美团点评的用户和商户数在快速增长。在这样的背景下,通过对推荐算法的优化,可以更好的给用户提供感兴趣的内容,帮用户更快速方便的找到所求。我们目标是根据用户的兴趣及行为,向用户推荐感兴趣的内容,打造一个高精准性、高丰富度且让用户感到欣喜的推荐系
-
Android远程调试的探索与实现
- 文/武智 莹莹 周佳 卢晟 永锋
- 2017-07-20 18:11
作为移动开发者,最头疼的莫过于遇到产品上线以后出现了bug,但是本地开发环境又无法复现的情况。常见的调查线上棘手问题方式大概如下: 方法 优点 缺点 联系用户安装已添加测试日志的APK 方便定位问题 需要用户积极配合,如果日志添加不全面还需要反复重试 提前在一些关键路径设置埋点,在用户出现问题以后上报日志进而定位问题 不需要用户深度配合 关键路径不好预测 以上两种方法在之前
-
sysbench在美团点评中的应用
- 文/广友
- 2017-07-14 17:30
如何快速入门数据库?以我个人经验来看,数据库功能和性能测试是一条不错的捷径。当然从公司层面,数据库测试还有更多实用的功能。这方面,美团点评使用的是知名工具sysbench,主要是用来解决以下几个问题: 统一测试方法,以便测试结果的可重复和可对比。 结合美团点评的业务特点和硬件特性,得到最优的参数配置。 扩展sysbench的测试能力,比如增加对JSON测试的支持。 数据库测试虽然入门简单,但是
-
Redux从设计到源码
- 文/莹莹
- 2017-07-14 16:23
本文主要讲述三方面内容: Redux 背后的设计思想 源码分析以及自定义中间件 开发中的最佳实践 Redux背后的设计思想 在讲设计思想前,先简单讲下Redux是什么?我们为什么要用Redux? Redux是什么? Redux是JavaScript状态容器,能提供可预测化的状态管理。 它认为: Web应用是一个状态机,视图与状态是一一对应的。 所有的状态,保存在一个对象里面。 我
-
人工智能在线特征系统中的数据存取技术
- 文/杨浩 伟彬
- 2017-07-06 20:30
一、在线特征系统 主流互联网产品中,不论是经典的计算广告、搜索、推荐,还是垂直领域的路径规划、司机派单、物料智能设计,建立在人工智能技术之上的策略系统已经深入到了产品功能的方方面面。相应的,每一个策略系统都离不开大量的在线特征,来支撑模型算法或人工规则对请求的精准响应,因此特征系统成为了支持线上策略系统的重要支柱。美团点评技术博客之前推出了多篇关于特征系统的文章,如《机器学习中的数据清洗与特征处理
-
LsLoader——通用移动端Web App离线化方案
- 文/环宇
- 2017-07-06 20:26
背景 由于JavaScript(以下简称JS)语言的特性,前端作用域拆分一直是前端开发中的首要关卡。从简单的全局变量分配,到RequireJS实现的AMD模块方式,browserify/webpack实现的静态引用方式。前端的业务逻辑也从一个个精心按顺序排好的CSS、JS变成了入口文件为根的有向无环图。图上的节点可能是JS方法/CSS糖/.vue单文件模块。我们的开发源文件到浏览器一般经历下图的过
-
孵化业务快速落地与优化
- 文/关飞 宗起
- 2017-06-29 20:30
海外酒店是酒旅事业群第一个孵化的业务,从2016年9月份开始到现在已经半年多的时间。在业务后台搭建、成长、优化过程中,经历了很多的思考与选择。 主要分为下面几个阶段: 初建:调研、落地,合理复用,高效自建。优化:量化、决策,寻找瓶颈,优化性能。展望:梳理、规划,业务展望,未雨绸缪。 本文将分别介绍这几个阶段后台系统相关的思考,此外还会在最后总结团队建设方面的经验。 初建 海外酒店作为一个孵化项
-
美团点评数据库高可用架构的演进与设想
- 文/金龙
- 2017-06-29 20:11
本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新。同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望。 MMM 在2015年之前,美团点评(点评侧)长期使用MMM(Master-Master replication manager for MySQL)做数据库高可用,积累了比较多的经验,也踩了不少坑,可以说M
-
在CentOS 7上安装Tensorflow
- 文/xieruijun
- 2017-06-29 00:00
简介 Tensorflow 是Google基于DistBelief进行研发的第二代人工智能学习系统,是采用数据流图(data flow graphs),用于数值计算的开源软件库。架构灵活,可以部署于一块或多块CPU、GPU卡的各种平台。最初用由Google大脑小组开发出来,用于机器学习和深度神经网络方面的研究,系统的通用性使其可以广泛用于其他计算领域,是目前使用最广的深度学习框架之一。 本教程主要
-
在CentOS 7上安装Caffe
- 文/xieruijun
- 2017-06-28 19:00
简介 Caffe 是一个广泛使用的清晰、高效、模块化的深度学习框架,是贾扬清(Yangqing Jia)在UC Berkeley 读博期间建立的项目,由伯克利AI实验室(Berkeley AI Research,BAIR)及社区贡献者开发。 Caffe 具有如下特点:架构清晰,模型和优化通过配置定义,CPU和GPU切换通过设置flag;代码扩展性好,开发者贡献了大量的改进,框架的代码和模型保持业界
-
美团点评酒店后台故障演练系统
- 文/曾鋆 海智 亚辉 孟莹
- 2017-06-23 16:42
背景介绍 随着海量请求、节假日峰值流量和与日俱增的系统复杂度出现的,很有可能是各种故障。在分析以往案例时我们发现,如果预案充分,即使出现故障,也能及时应对。它能最大程度降低故障的平均恢复时间(MTTR),进而让系统可用程度(SLA)维持在相对较高的水平,将故障损失保持在可控范围内。但是,经过对2016全年酒店后台研发组所有面向C端系统的线上事故分析后发现,在许多情况下,由于事故处理预案的缺失或者预
-
客户端自动化测试研究
- 文/立成
- 2017-06-23 16:33
背景 测试作为质量保证极其重要的一环,在移动App开发流程中起到非常关键的作用。从开发工程师到测试工程师,人人都应具备良好的测试意识,将隐患和风险在上线之前找出并解决,可以有效的减少线上事故。 美团和大众点评App作为美团点评平台的主要入口,支持承载着美团点评各大业务。其中美团点评境外度假业务主要包括了出境游相关业务以及所有的境外城市站,也是美团点评非常看重和大力发展的业务线。为了保证质量,需要进
-
Android增量代码测试覆盖率工具
- 文/武智 莹莹 周佳
- 2017-06-16 17:05
前言 美团点评业务快速发展,新项目新业务不断出现,在项目开发和测试人员不足、开发同学粗心的情况下,难免会出现少测漏测的情况,如何保证新增代码有足够的测试覆盖率是我们需要思考的问题。 Bad-Case 先看一个bug: 以上代码可能在onDestory时反注册一个没有注册的receiver而发生崩溃。如果开发同学经验不足、自测不够充分或者代码审查不够仔细,这个bug很容易被带到线上。 正常情况下,
-
美团点评旅游搜索召回策略的演进
- 文/郑刚
- 2017-06-16 16:54
本文内容与6月22日第22期美团点评技术沙龙“美团点评AI实践”主题演讲一致,欢迎大家去现场和作者交流。 关注“美团点评技术团队”微信公众号,第一时间获取沙龙最新信息,还可以查阅往期沙龙PPT/视频。 背景 美团点评作为最大的生活服务平台,有丰富的品类可供用户选择,因此搜索这个入口对各业务的重要性不言而喻,除了平台搜索外,业务搜索系统的质量和效果对用户体验、商家曝光、平台交易也有着关键作用。 相对
-
WebView性能、体验分析与优化
- 文/育新 徐宏 嘉洁
- 2017-06-09 20:03
在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。 然而便利性的同时,WebView的性能体验却备受质疑,导致很多客户端中需要动态更新等页面时不得不采用其他方案。 以发展的眼光来看,功能的动态加载以及三端的融合将会是大趋势。那么如何克服WebView固有的问题呢?我们将从性能、内存消耗、体验、安全
-
从0到1:构建强大且易用的规则引擎
- 文/张宁
- 2017-06-09 17:55
引言 2016年07月恰逢美团点评的业务进入“下半场”,需要我们在各个环节优化体验、提升效率、降低成本。技术团队需要怎么做来适应这个变化?这个问题直接影响着之后的工作思路。 美团外卖的CRM业务步入成熟期,规则类需求几乎撑起了这个业务所有需求的半边天。一方面规则唯一不变的是“多变”,另一方面开发团队对“规则开发”的感受是乏味、疲惫和缺乏技术含量。如何解决规则开发的效率问题,最大化解放开发团队成为目
-
Hyperloop,让发布简洁高效
- 文/恩生
- 2017-05-26 21:21
Hyperloop 是什么? Hyperloop 是服务于美团点评客户端的组件发版、持续集成、App 打包构建、资源调度等各个环节的发布调度系统。名称起源于美国 Elon Musk 构想的 Hyperloop 超级高铁,象征着现代、简洁、高效。 Hyperloop 提供了一站式的平台,管理着美团点评 iOS 业务的超过 300 个组件和包括美团 iOS 客户端在内的4个App。接入 Hyperlo
-
美团点评酒旅数据仓库建设实践
- 文/德臣
- 2017-05-26 20:51
在美团点评酒旅事业群内,业务由传统的团购形式转向预订、直连等更加丰富的产品形式,业务系统也在迅速的迭代变化,这些都对数据仓库的扩展性、稳定性、易用性提出了更高要求。对此,我们采取了分层次、分主题的方式,本文将分享这一过程中的一些经验。 技术架构 随着美团点评整体的系统架构调整,我们在分层次建设数据仓库的过程中,不断优化并调整我们的层次结构,下图展示了技术架构的变迁。 我们把它们简称为三代数仓模型
-
磁盘I/O那些事
- 文/喻枭
- 2017-05-19 19:20
背景 计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的I/O读写速度成为了计算机系统性能提高的瓶颈,制约了计算机整体性能的发展。 硬盘性能的制约因素是什么?如何根据磁盘I/O特性来进行系统设计
-
纠删码存储系统中的投机性部分写技术
- 文/慧霸 志明
- 2017-05-19 19:03
本文已被USENIX'17年度技术大会录用,此处为中文简译版。阅读英文论文完整版请点击:Speculative Partial Writes in Erasure-Coded Systems 前言 多副本和纠删码(EC,Erasure Code)是存储系统中常见的两种数据可靠性方法。与多副本冗余不同,EC将m个原始数据块编码生成k个检验块,形成一个EC组,之后系统可最多容忍任意k个原始数据块或校验
-
美团点评容器平台HULK的调度系统
- 文/思宇
- 2017-05-12 17:15
本文是美团点评基础架构系列文章之一。这个系列将全面介绍支撑数亿用户、超千万日订单的美团点评平台诸多业务的公共基础架构相关技术。系列已经发布的文章包括: 《分布式会话跟踪系统架构设计与实践》 《Leaf——美团点评分布式ID生成系统》 《深度剖析开源分布式监控CAT》 背景 美团点评作为国内最大的O2O平台,业务热度的高峰低谷非常显著且规律,如果遇到节假日或促销活动,流量还会在短时间内出现成倍的
-
美团点评酒旅前端的技术体系
- 文/郭凯
- 2017-05-12 15:28
前端技术体系的范围和作用 随着科技的发展,终端种类越来越丰富,前端作为连接用户终端与后端服务、提供视觉体验的关键环节,发展迅速。相比十年前,前端的边界和范围变得更加广泛,甚至有点模糊,一名优秀的前端工程师不仅需要精通自己的专业领域,了解设备终端的特点、OS、运行环境,同时还需要具备良好的审美和对用户体验的感觉,以及了解服务部署、服务运维的知识。 前端的知识领域也从最初的单点,扩展到了现在的网状结构
-
机器学习中模型优化不得不思考的几个问题
- 文/胡淏
- 2017-05-05 18:43
本文根据美团点评算法工程师胡淏4月22日在“携程技术沙龙”上的分享整理而成。文字综合了“携程技术中心”微信公众号的版本和胡淏本人在微博上发表的文章,并有少量编辑加工。 图1 机器学习工程师的知识图谱 图1列出了我认为一个成功的机器学习工程师需要关注和积累的点。机器学习实践中,我们平时都在积累自己的“弹药库”:分类、回归、无监督模型、Kaggle上面特征变换的黑魔法、样本失衡的处理方法、缺失值填充
-
美团DSP广告策略实践
- 文/鸿杰 大龙 李乐
- 2017-05-05 18:33
前言 近年来,在线广告在整个广告行业的比重越来越高。在线广告中实时竞价的广告由于其良好的转化效果,占有的比重逐年升高。DSP(Demand-Side Platform)[1]作为需求方平台,通过广告交易平台(AdExchange)[2]对每次曝光进行竞价尝试。对于AdExchange的每次竞价请求,DSP根据Cookie Mapping [3]或者设备信息,尝试把正在浏览媒体网站、App的用户映射
-
基于rsync的文件增量同步方案
- 文/永桂
- 2017-04-27 18:21
背景 犀牛云盘是美团点评内部一个基于美团云的文件协作平台,核心是文件的结构化云存储以及上传和下载的体验优化。文件同步是云盘功能的重要部分(包括文件内容的同步和文件增删的同步,应该有上传、下载、创建、删除等动作,但在本文的叙述中,主要关注文件内容的传输,即上传、下载),如何快速高效地进行文件同步,就成了云盘亟需解决的技术难题。本文阐述的方案就是在这种场景下提出来的,我们希望通过rsync增量传输算法
-
Vuex框架原理与源码分析
- 文/明裔
- 2017-04-27 18:03
Vuex是一个专为Vue服务,用于管理页面数据状态、提供统一数据操作的生态系统。它集中于MVC模式中的Model层,规定所有的数据操作必须通过 action - mutation - state change 的流程来进行,再结合Vue的数据视图双向绑定特性来实现页面的展示更新。统一的页面状态管理以及操作处理,可以让复杂的组件交互变得简单清晰,同时可在调试模式下进行时光机般的倒退前进操作,查看数据
-
Leaf——美团点评分布式ID生成系统
- 文/照东
- 2017-04-21 18:34
背景 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。概括下来,那业务系统对ID号的要求有哪些呢? 全局唯一性:不能
-
外卖订单量预测异常报警模型实践
- 文/东杰
- 2017-04-21 18:19
一、前言 外卖业务的快速发展对系统稳定性提出了更高的要求,每一次订单量大盘的异常波动,都需要做出及时的应对,以保证系统的整体稳定性。如何做出较为准确的波动预警,显得尤为重要。 从时间上看,外卖订单量时间序列有两个明显的特征(如下图所示): 周期性。每天订单量的变化趋势都大致相同,午高峰和晚高峰订单量集中。 实时性。当天的订单量可能会受天气等因素影响,呈现整体的上涨或下降。 订单量波动预警,初
-
HDFS Federation在美团点评的应用与改进
- 文/美团点评离线存储团队
- 2017-04-14 19:49
一、背景 2015年10月,经过一段时间的优化与改进,美团点评HDFS集群稳定性和性能有显著提升,保证了业务数据存储量和计算量爆发式增长下的存储服务质量;然而,随着集群规模的发展,单组NameNode组成的集群也产生了新的瓶颈: 扩展性:根据HDFS NameNode内存全景和HDFS NameNode内存详解这两篇文章的说明可知,NameNode内存使用和元数据量正相关。180GB堆内存配置下
-
Android OOM案例分析
- 文/军慧
- 2017-04-14 19:39
在Android(Java)开发中,基本都会遇到java.lang.OutOfMemoryError(本文简称OOM),这种错误解决起来相对于一般的Exception或者Error都要难一些,主要是由于错误产生的root cause不是很显而易见。由于没有办法能够直接拿到用户的内存dump文件,如果错误发生在线上的版本,分析起来就会更加困难。本文从一个具体的案例切入,介绍OOM分析的思路及相关工具
-
Android App包瘦身优化实践
- 文/建帅
- 2017-04-07 16:03
随着业务的快速迭代增长,美团App里不断引入新的业务逻辑代码、图片资源和第三方SDK,直接导致APK体积不断增长。包体积增长带来的问题越来越多,如CDN流量费用增加、用户安装成功率降低,甚至可能会影响用户的留存率。APK的瘦身已经是不得不考虑的事情。在尝试瘦身的过程中,我们借鉴了很多业界其他公司提供的方案,同时也针对自身特点,发现了一些新的技巧。本文将对其中的一些做详细介绍。 在开始讲瘦身技巧之前
-
从Google白皮书看企业安全最佳实践
- 文/赵彦
- 2017-04-07 15:33
前不久Google发布了一份安全方面的白皮书Google Infrastructure Security Design Overview,直译的版本可以参考“网路冷眼”这版《Google基础设施安全设计概述》,直译+点评的版本可以参考“职业欠钱”的《Google基础设施安全设计概述翻译和导读》。 此前Google在安全领域披露的信息一直很少,适逢其大力发展云计算业务,需要展示云安全方面的实力,
-
旅游推荐系统的演进
- 文/郑刚
- 2017-03-24 18:04
背景 度假业务在整个在线旅游市场中占据着非常重要的位置,如何做好做大这块蛋糕是行业内的焦点。与美食或酒店的用户兴趣点明确(比如找某个确定的餐厅或者找某个目的地附近的酒店)不同,旅游场景中的用户兴趣点(比如周末去哪儿好玩)很难确定,而且会随着季节、天气、用户属性等变化而变化。这些特点导致传统的信息检索并不能很好的满足用户需求,我们迫切需要建设旅游推荐系统(本文中度假=旅游)。 旅游推荐系统主要面临以
-
前端渲染引擎doT.js解析
- 文/建辉
- 2017-03-24 16:00
背景 前端渲染有很多框架,而且形式和内容在不断发生变化。这些演变的背后是设计模式的变化,而归根到底是功能划分逻辑的演变:MVC—>MVP—>MVVM(忽略最早混在一起的写法,那不称为模式)。近几年兴起的React、Vue、Angular等框架都属于MVVM模式,能帮我们实现界面渲染、事件绑定、路由分发等复杂功能。但在一些只需完成数据和模板简单渲染的场合,它们就显得笨重而且学习成本较高了。 例如,在
-
美团点评移动网络优化实践
- 文/周辉
- 2017-03-17 17:41
本文根据第16期美团点评技术沙龙“移动开发实践(上海站)”演讲内容整理而成。 第18期沙龙:高可用系统背后的基础架构(3月25日)火热来袭!快快点击报名吧。 为何要做网络优化 网络优化对于App产品的用户体验至关重要,与公司的运营和营收息息相关。这里列举两个公开的数据: “页面加载超过3秒,57%的用户会离开。” “Amazon页面加载延长1秒,一年就会减少16亿美金营收。” 在做网络优化前,我们
-
Android热更新方案Robust开源,新增自动化补丁工具
- 文/吴坤 张梦 定旭
- 2017-03-17 17:31
我们在之前的博客文章《Android热更新方案Robust》中介绍了高兼容性、高稳定性的实时热更新解决方案Robust之后,业内反响强烈,不断有读者咨询我们什么时候开源。今天我们非常高兴地宣布,Robust已经开源啦!开源地址:https://github.com/Meituan-Dianping/Robust 。 Robust热更新系统借鉴Instant Run原理,实现了一个兼容性更强而且实时
-
HDFS NameNode重启优化
- 文/小桥
- 2017-03-17 17:24
本文已发表于InfoQ,下面的版本又经过少量修订。 一、背景 在Hadoop集群整个生命周期里,由于调整参数、Patch、升级等多种场景需要频繁操作NameNode重启,不论采用何种架构,重启期间集群整体存在可用性和可靠性的风险,所以优化NameNode重启非常关键。 本文基于Hadoop-2.x和HA with QJM社区架构和系统设计(如图1所示),通过梳理NameNode重启流程,并在此
-
缓存那些事
- 文/明辉
- 2017-03-17 17:19
本文已发表于《程序员》杂志2017年第3期,下面的版本又经过进一步的修订。 前言 一般而言,现在互联网应用(网站或App)的整体流程,可以概括如图1所示,用户请求从界面(浏览器或App界面)到网络转发、应用服务再到存储(数据库或文件系统),然后返回到界面呈现内容。 随着互联网的普及,内容信息越来越复杂,用户数和访问量越来越大,我们的应用需要支撑更多的并发量,同时我们的应用服务器和数据库服务器所做的
-
美团外卖前端可视化界面组装平台 —— 乐高
- 文/徐楷 冰冰 东亮
- 2017-03-09 20:11
1 简介 乐高,是美团点评一个快速搭建后台系统页面的平台。名称来源于大家熟悉的丹麦知名玩具品牌,他们的玩具都是通过组合易拆卸、装配的零件,形成最终的作品。经过长期的发展,乐高品牌渐渐有了“快乐、想象、创意的未来”的寓意。 随着外卖业务的高速发展,大量的业务开发需求接踵而来。像人手紧缺、重复开发、沟通效率低下等问题,暴露得愈发明显。于是,我们有了这么一个想法:能否基于现有大量业务系统的结构固定、需求
-
美团点评SQL优化工具SQLAdvisor开源
- 文/DBA团队
- 2017-03-09 19:44
介绍 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务。例行 SQL 优化,不仅可以提升程序性能,还能够降低线上故障的概率。 目前常用的 SQL 优化方式包括但不限于:业务层优化、SQL逻辑优化、索引优化等。其中索引优化通常通过调整索引或新增索引从而达到 SQL 优化的目的。索引优化往往可以在短时间内产生非常巨大的效果。如果能够将索引优化转化成工具化、标准化的流程,减少人工介入的工作量
-
Android自定义Lint实践2——改进原生Detector
- 文/陈潼 建帅
- 2017-03-09 19:42
上篇博客《Android自定义Lint实践》中我们介绍了美团App如何使用自定义Lint进行代码检查。 在使用Lint的过程中,我们陆续又发现原生Lint的一些问题和缺陷,本文将介绍我们在实践中提出的解决方案。 完善JDK 7泛型新写法下的HashMap检测 上一篇博客中我们提到了对于HashMap检测的改进,但当时我们也在文章中提到: 代码很简单,总体就是获取变量定义的地方,将泛型值传入原
-
美团点评前端无痕埋点实践
- 文/富强 朝旭 吴凯
- 2017-03-02 18:28
构建一个数据平台,大体上包括数据采集、数据上报、数据存储、数据计算以及数据可视化展示等几个重要的环节。其中,数据采集与上报是整个流程中重要的一环,只有确保前端数据生产的全面、准确、及时,最终产生的数据结果才是可靠的、有价值的。 为了解决前端埋点的准确性、及时性、开发效率等问题,业内各家公司从不同角度,提出了多种技术方案,这些方案大体上可以归为三类: 第一类是代码埋点,即在需要埋点的节点调用接口直
-
业务赋能利器之外卖特征档案
- 文/马骧
- 2017-03-02 18:26
应用背景及现状 美团外卖业务自2013年9月启动至今已运营三年时间。截至2016年12月,美团点评整个外卖平台的日订单超过900万。从发展速度和体量上看,外卖业务仍处在迅猛发展的上升期。与早期飞速增长的状态相比,随着规模的不断扩大,业务的发展需要更健康、高效,这就对业务对象、业务环节的整体业务运营管理提出更高的要求。 特征档案平台向各业务提供了用户/商户筛选和档案管理服务,同时提供了数据查询、存储
-
布局编码的未来
- 文/大为
- 2017-02-24 20:33
客户端布局是客户端开发最为基础也是最为重要的编程实践之一,对于一个有着良好技术架构的客户端开发团队来说,布局编码工作占业务开发工作量的80%。显然,对于布局编码进行深入的思考、总结统一最佳实践、提供有力的基础架构支撑,对于提升客户端开发团队的生产力非常关键。 同时,客户端动态化是当前移动开发领域的技术热点,也是移动开发未来最为重要的发展方向之一。当前业界涌现出了React Native和Weex
-
Mt-Falcon——Open-Falcon在美团点评的应用与实践
- 文/大闪
- 2017-02-24 20:31
前言 监控系统是整个业务系统中至关重要的一环,它就像眼睛一样,时刻监测机房、网络、服务器、应用等运行情况,并且在出现问题时能够及时做出相应处理。 美团点评刚开始使用的是Zabbix监控系统,几经优化,在当时能够达到2W+机器,450W+监控项的量。随着各业务线的发展,监控项越来越多,Zabbix的问题也越来越突出,当时针对Zabbix的吐槽问题有: 不支持扩展,本身是一个单点,当机器规模超过
-
日志级别动态调整——小工具解决大问题
- 文/长发 周海 安富
- 2017-02-17 19:14
背景 随着外卖业务的快速发展,业务复杂度不断增加,线上系统环境有任何细小波动,对整个外卖业务都可能产生巨大的影响,甚至形成灾难性的雪崩效应,造成巨大的经济损失。每一次客诉、系统抖动等都是对技术人员的重大考验,我们必须立即响应,快速解决问题。 如何提高排查问题的效率呢?最有效的方式是通过分析系统日志。如果系统日志全面,会为我们排查解决线上问题带来绝大的帮助,但是要想保证系统日志全面,就必须打印出所有
-
外卖O2O的用户画像实践
- 文/李滔
- 2017-02-17 18:59
美团外卖经过3年的飞速发展,品类已经从单一的外卖扩展到了美食、夜宵、鲜花、商超等多个品类。用户群体也从早期的学生为主扩展到学生、白领、社区以及商旅,甚至包括在KTV等娱乐场所消费的人群。随着供给和消费人群的多样化,如何在供给和用户之间做一个对接,就是用户画像的一个基础工作。所谓千人千面,画像需要刻画不同人群的消费习惯和消费偏好。 外卖O2O和传统的电商存在一些差异。可以简单总结为如下几点: 1)新
-
深度学习在美团点评的应用
- 文/文竹 李彪 晓明
- 2017-02-10 18:44
前言 近年来,深度学习在语音、图像、自然语言处理等领域取得非常突出的成果,成了最引人注目的技术热点之一。美团点评这两年在深度学习方面也进行了一些探索,其中在自然语言处理领域,我们将深度学习技术应用于文本分析、语义匹配、搜索引擎的排序模型等;在计算机视觉领域,我们将其应用于文字识别、目标检测、图像分类、图像质量排序等。下面我们就以语义匹配、图像质量排序及文字识别这三个应用场景为例,来详细介绍美团点评
-
美团点评Docker容器管理平台
- 文/郑坤
- 2017-01-23 19:19
本文是郑坤根据第14期美团点评技术沙龙“你不知道的美团云”演讲内容整理而成,已发表在《程序员》杂志2017年1月刊。 美团点评容器平台简介 本文介绍美团点评的Docker容器集群管理平台(以下简称“容器平台”)。该平台始于2015年,是基于美团云的基础架构和组件而开发的Docker容器集群管理平台。目前该平台为美团点评的外卖、酒店、到店、猫眼等十几个事业部提供容器计算服务,承载线上业务数百个,日均
-
2016,你最不应该错过的热门技术文章
- 文/刘江
- 2017-01-23 15:34
本文首发在“美团点评技术团队”微信公众号,内容已覆盖截止至2017年1月23日最新的技术文章。 1955年3月15日,爱因斯坦给刚去世的密友Michele Besso家人的信中说: “像我们这样信仰物理学的人都知道,过去、现在和未来之间的分别只不过是持久而顽固的幻觉。” 然而,临近岁末,我们这些普通人还是难以免俗地做一番回顾与展望。 算起来,“美团点评技术团队”这个公众号始自2014年9月,已经运
-
聊聊clean code
- 文/王烨
- 2017-01-19 19:04
clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码,相信大多数工程师都希望自己能写出这样的代码。 也许这是个千人千面的话题,每个工程师都有自己的理解。比如我,从一个天天被骂代码写得烂的人,逐渐学习成长,到现在也能写的出“人模人样”的代码来了。这期间算是积累了一点经验心得,想和大家分享,抛砖引玉。 本文主要针对面向对象编程的clean code来阐述,面向过程代码的思路会比较不同,
-
Android硬件加速原理与实现简介
- 文/子健
- 2017-01-19 19:00
在手机客户端尤其是Android应用的开发过程中,我们经常会接触到“硬件加速”这个词。由于操作系统对底层软硬件封装非常完善,上层软件开发者往往对硬件加速的底层原理了解很少,也不清楚了解底层原理的意义,因此常会有一些误解,如硬件加速是不是通过特殊算法实现页面渲染加速,或是通过硬件提高CPU/GPU运算速率实现渲染加速。 本文尝试从底层硬件原理,一直到上层代码实现,对硬件加速技术进行简单介绍,其中上层
-
美团点评业务风控系统构建经验
- 文/义哲
- 2017-01-13 18:20
本文根据“第八届中国系统架构师大会”演讲内容整理而成。 背景 美团最初以团购的形式出现,到现在有了很大的业务形态转变。尤其是经过与大众点评的业务融合,从单一业务发展成了覆盖到店餐饮、到店综合、猫眼、外卖、酒店、旅游等多个垂直领域的综合性电商,并且在各个领域都处于行业领先的地位。在这背后,美团点评不仅面临激烈的行业竞争,还有黑色产业(以下简称“黑产”)带来的各种风险,因为我们的业务有这样一些特点:
-
新一代开源Android渠道包生成工具Walle
- 文/建帅 陈潼
- 2017-01-13 18:17
在Android 7.0(Nougat)推出了新的应用签名方案APK Signature Scheme v2后,之前快速生成渠道包的方式(美团Android自动化之旅—生成渠道包)已经行不通了,在此应用签名方案下如何快速生成渠道包呢? 本文会对新的应用签名方案APK Signature Scheme v2以及新一代渠道生成工具进行详细深入的介绍。 新的应用签名方案APK Signature Sch
-
美团点评数据库中间件DBProxy开源
- 文/DBA团队(北京)
- 2017-01-05 19:13
介绍 随着数据量的不断增大,传统的直连数据库对数据进行访问的方式已经无法满足一般公司的需求。通过数据库中间件,可以对数据库进行水平扩展,由原来单台数据库扩展到多台数据库,数据库中间件通过路由规则将数据的访问请求路由到其中一台数据库上,从而大大降低了数据访问的瓶颈和单台数据库的压力。通过数据库中间件还可以将DBA和研发进行解耦,提升DBA运维效率。 奇虎360公司开源的Atlas是优秀的数据库中间件
-
前端工程化开发方案app-proto
- 文/李阳
- 2017-01-05 18:48
什么是前端工程化?根据具体的业务特点,将前端的开发流程、技术、工具、经验等规范化、标准化就是前端工程化。它的目的是让前端开发能够“自成体系”,最大程度地提高前端工程师的开发效率,降低技术选型、前后端联调等带来的协调沟通成本。 美团点评厦门智能住宿前端研发团队通过多个前端项目开发的探索和实践,基于“约定优于配置”(Convention Over Configuration)的原则制定了一套前端工程化
-
MGW——美团点评高性能四层负载均衡
- 文/王伟
- 2017-01-05 18:43
本文整理自美团点评技术沙龙第14期:美团背后的故事-你不知道的美团云。 美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其他互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等地举行,要参加下一次最新沙龙活动?赶快关注微信公众号“美团点评技术团队”。 本期沙龙包括三场讲座:美团云Docker平台、美团云对象存储系统、美团四层负
-
美团团购订单系统优化记
- 文/思诚
- 2016-12-27 15:58
团购订单系统简介 美团团购订单系统主要作用是支撑美团的团购业务,为上亿美团用户购买、消费提供服务保障。2015年初时,日订单量约400万~500万,同年七夕订单量达到800万。 目标 作为线上S级服务,稳定性的提升是我们不断的追求。尤其像七夕这类节日,高流量,高并发请求不断挑战着我们的系统。发现系统瓶颈,并有效地解决,使其能够稳定高效运行,为业务增长提供可靠保障是我们的目标。 优化思路 2015年
-
美团酒店直连产品数据一致性演进
- 文/李响
- 2016-12-26 16:27
前言 美团酒店直连项目自2013年末开始,通过业务上的不断完善和技术上的不断改进,至今已经接入200多家供应商,其中在线酒店3万以上,在线SPU30万以上。经过两年的成长,美团酒店直连平台终于在2015年末发展为国内最大的酒店直连业务平台,其接入的业务类型也从最初的经济连锁,拓展到高星渠道、小连锁集团、非标准住宿等,获得了业界一致好评。 随着美团点评的日益壮大,客户的需求和系统体量的不断增加,直连
-
MTDDL——美团点评分布式数据访问层中间件
- 文/刘军
- 2016-12-19 16:26
背景 2016年Q3季度初,在美团外卖上单2.0项目上线后,商家和商品数量急速增长,预估商品库的容量和写峰值QPS会很快遇到巨大压力。随之而来也会影响线上服务的查询性能、DB(数据库,以下统一称DB)主从延迟、表变更困难等一系列问题。 要解决上面所说的问题,通常有两种方案。第一种方案是直接对现有的商品库进行垂直拆分,可以缓解目前写峰值QPS过大、DB主从延迟的问题。第二种方案是对现有的商品库大表进
-
移动端性能监控方案Hertz
- 文/吴凯 瑞利 富强 徐宏
- 2016-12-19 16:10
性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等。而导致App性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线程、锁、系统函数、编程范式、数据结构等导致的。即便是最有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”,因此解决性能问题的关键是在于能不能尽早地发现和定位这些
-
外卖排序系统特征生产框架
- 文/海文
- 2016-12-09 19:28
背景 图1 外卖排序系统框架 外卖的排序策略是由机器学习模型驱动的,模型迭代效率制约着策略优化效果。如上图所示,在排序系统里,特征是最为基础的部分:有了特征之后,我们离线训练出模型,然后将特征和模型一起推送给线上排序服务使用。特征生产Pipeline对于策略迭代的效率起着至关重要的作用。经过实践中的积累和提炼,我们整理出一套通用的特征生产框架,大大节省开发量,提高策略迭代效率。 外卖排序系统使
-
HDFS NameNode内存详解
- 文/小桥
- 2016-12-09 17:56
前言 《HDFS NameNode内存全景》中,我们从NameNode内部数据结构的视角,对它的内存全景及几个关键数据结构进行了简单解读,并结合实际场景介绍了NameNode可能遇到的问题,还有业界进行横向扩展方面的多种可借鉴解决方案。 事实上,对NameNode实施横向扩展前,会面临常驻内存随数据规模持续增长的情况,为此需要经历不断调整NameNode内存的堆空间大小的过程,期间会遇到几个问题:
-
常见性能优化策略的总结
- 文/晓明
- 2016-12-02 21:52
本文要感谢我职级评定过程中的一位评委,他建议把之前所做的各种性能优化的案例和方案加以提炼、总结,以文档的形式沉淀下来,并在内部进行分享。力求达到如下效果: 1. 形成可实践、可借鉴、可参考的各种性能优化的方案以及选型考虑点,同时配合具体的真实案例,其他人遇到相似问题时,不用从零开始。 2. 有助于开阔视野,除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识
-
红黑树深入剖析及Java实现
- 文/振兴
- 2016-12-02 21:24
红黑树是平衡二叉查找树的一种。为了深入理解红黑树,我们需要从二叉查找树开始讲起。 BST 二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小,右节点的值要比父节点的值大。它的高度决定了它的查找效率。 在理想的情况下,二叉查找树增删查改的时间复杂度为O(logN)(其中N为节点数),最坏的情况下为O(N)。当它的高度为logN+1时,我们就说
-
CRM系统新思维
- 文/刘丁
- 2016-11-25 19:25
介绍 客户关系管理系统(CRM系统)是管理公司当前以及未来潜在客户的系统,其主要目的是通过优化客户关系实现公司销售业绩的长期增长,它是企业信息系统的核心之一。目前,移动互联网、大数据以及人工智能技术发展日新月异,正在加速改变世界。但是在CRM等企业系统的构建和优化方法论上,却缺乏革命性的创新。本文作者在构建和优化CRM系统的过程中总结出一些新方法论,与当下的一些先进理念不谋而合。每个具体的理念虽然
-
基于 Appium 的 Android UI 自动化测试
- 文/李磊
- 2016-11-24 20:01
自动化测试是研发人员进行质量保障的重要一环,良好的自动化测试机制能够让开发者及早发现编码中的逻辑缺陷,将风险前置。日常研发中,由于快速迭代的原因,我们经常需要在各个业务线上进行主流程回归测试,目前这种测试大部分由人工进行,费时费力,重复劳动多。如果能将UI自动化测试与主流程回归结合到一起,一方面保证了代码质量,另一方面大大节约人力成本,可谓一举两得。 为什么需要UI自动化测试 原因主要是以下三点:
-
大众点评订单系统分库分表实践
- 文/华慰
- 2016-11-18 19:13
背景 原大众点评的订单单表早就已经突破两百G,由于查询维度较多,即使加了两个从库,优化索引,仍然存在很多查询不理想的情况。去年大量抢购活动的开展,使数据库达到瓶颈,应用只能通过限速、异步队列等对其进行保护;业务需求层出不穷,原有的订单模型很难满足业务需求,但是基于原订单表的DDL又非常吃力,无法达到业务要求。随着这些问题越来越突出,订单数据库的切分就愈发急迫了。 这次切分,我们的目标是未来十年内不
-
高性能队列——Disruptor
- 文/宫铭
- 2016-11-18 17:17
背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。 目前,包括Ap
-
如何构建Android MVVM 应用框架
- 文/凯林
- 2016-11-11 20:38
概述 说到Android MVVM,相信大家都会想到Google 2015年推出的DataBinding框架。然而两者的概念是不一样的,不能混为一谈。MVVM是一种架构模式,而DataBinding是一个实现数据和UI绑定的框架,是构建MVVM模式的一个工具。 之前看过很多关于Android MVVM的博客,但大多数提到的都是DataBinding的基本用法,很少有文章仔细讲解在Android中是
-
服务容错模式
- 文/绿麟
- 2016-11-11 16:27
背景 随着美团点评服务框架和服务治理体系的逐步成熟,服务化已成为公司内部系统设计的趋势。本着大系统小做、职责单一的原则,我们度假技术团队对业务系统进行了不少服务化拆分工作。随着业务复杂度的增加,依赖的服务也逐步增加,出现了不少由于服务调用出现异常问题而导致的重大事故,如: 1)系统依赖的某个服务发生延迟或者故障,数秒内导致所有应用资源(线程,队列等)被耗尽,造成所谓的雪崩效应 (Cascading
-
Java NIO浅析
- 文/王烨
- 2016-11-04 18:26
NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。 那么NIO的本质是什么样的呢?它是怎样与事件模型结合来解放线程、提高系统吞吐的呢? 本文会从传统的阻塞I/O和线程池模型面临的问题讲起,然后对比几种常见I/O模型,一步步
-
Spark Streaming + Elasticsearch构建App异常监控平台
- 文/思源 王彬
- 2016-11-04 14:38
本文已发表在《程序员》杂志2016年10月期。 如果在使用App时遇到闪退,你可能会选择卸载App、到应用商店怒斥开发者等方式来表达不满。但开发者也同样感到头疼,因为崩溃可能意味着用户流失、营收下滑。为了降低崩溃率,进而提升App质量,App开发团队需要实时地监控App异常。一旦发现严重问题,及时进行热修复,从而把损失降到最低。App异常监控平台,就是将这个方法服务化。 低成本 小型创业团队一般会
-
深度剖析开源分布式监控CAT
- 文/尤勇
- 2016-10-23 14:00
CAT(Central Application Tracking)是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,基本接入了美团点评上海侧所有核心应用。目前在中间件(MVC、RPC、数据库、缓存等)框架中得到广泛应用,为美团点评各业务线提供系统的性能指标、健康状况、监控告警等。自2014年开源以来,除了美团点评之外,CAT还在携程、陆金所、猎聘网、找钢网等多家互联网公司生产环境应用,
-
Storm 的可靠性保证测试
- 文/从贤
- 2016-10-21 10:48
Storm 是一个分布式的实时计算框架,可以很方便地对流式数据进行实时处理和分析,能运用在实时分析、在线数据挖掘、持续计算以及分布式 RPC 等场景下。Storm 的实时性可以使得数据从收集到处理展示在秒级别内完成,从而为业务方决策提供实时的数据支持。 在美团点评公司内部,实时计算主要应用场景包括实时日志解析、用户行为分析、实时消息推送、消费趋势展示、实时新客判断、实时活跃用户数统计等。
-
移动App兼容性测试工具Spider
- 文/翔宇
- 2016-10-21 10:47
本文整理自美团点评技术沙龙第11期:移动端测试分享。 美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等地举行,要参加下一次最新沙龙活动?赶快关注微信公众号“美团点评技术团队”。 本期沙龙首次在上海举行,包括四场讲座:一直被呼吁开源的测试工具Spider;移动端用户体验数据
-
分布式会话跟踪系统架构设计与实践
- 文/志桐
- 2016-10-14 18:13
本文整理自美团点评技术沙龙第08期:大规模集群的服务治理设计与实践。 美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等地举行,要参加下一次最新沙龙活动?赶快关注微信公众号“美团点评技术团队”。 这期沙龙主要内容有:分布式服务通信框架及服务治理系统、分布式监控系统实践、分布
-
ReactiveCocoa核心元素与信号流
- 文/戈弋
- 2016-10-14 16:38
概述 ReactiveCocoa(以下简称“RAC”)是一个函数响应式编程框架,它能让我们脱离Cocoa API的束缚,给我们提供另外一套编码的思路与可能性,它能在宏观层面上提升代码易读性与稳定性,让程序员写出富有“诗意”的代码,因此倍受业内推崇。本文略过RAC基本概念与基础使用(有些技术点可以参考美团点评技术博客之前的几篇文章:RACSignal,冷信号与热信号系列,内存泄漏。),着重介绍RAC
-
Spring MVC注解故障追踪记
- 文/占康
- 2016-09-30 18:46
Spring MVC是美团点评很多团队使用的Web框架。在基于Spring MVC的项目里,注解的使用几乎遍布在项目中的各个模块,有Java提供的注解,如:@Override、@Deprecated等;也有Spring提供的注解,如:@Controller、@Service、@Autowired等;同时还可能有自定义注解等。注解一方面可以作为标记说明使用;另一方面也能帮助我们省去一些配置工作,加快
-
分布式系统互斥性与幂等性问题的分析与解决
- 文/蒋谞
- 2016-09-29 20:15
前言 随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩、可扩展等目标就显得越发重要。为了解决这一系列问题,系统架构也在不断演进。传统的集中式系统已经逐渐无法满足要求,分布式系统被使用在更多的场景中。 分布式系统由独立的服务器通过网络松散耦合组成。在这个系统中每个服务器都是一台独立的主机,服务器
-
大促活动前团购系统流量预算和容量评估
- 文/丁媛
- 2016-09-28 18:13
本文整理自美团点评技术沙龙第11期:移动端测试分享。 美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等地举行,要参加下一次最新沙龙活动?赶快关注微信公众号“美团点评技术团队”。 本期沙龙首次在上海举行,包括四场讲座:一直被呼吁开源的测试工具Spider;移动端用户体验数
-
Java Hotspot G1 GC的一些关键技术
- 文/小亮
- 2016-09-23 15:36
前言 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相信熟悉JVM的同学们都不会对它感到陌生。在JDK 9中,G1被提议设置为默认垃圾收集器(JEP 248)。在官网中,是这样描述G1的: The Garbage-First (G1) colle
-
美团数据库运维自动化系统构建之路
- 文/宁龙
- 2016-09-18 22:35
本文整理自美团点评技术沙龙第10期:数据库技术架构与实践。 美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等地举行,要参加下一次最新沙龙活动?赶快关注微信公众号“美团点评技术团队”。 本次沙龙主要围绕数据库相关的主题,内容包括美团数据库自动化运维系统构建、点评侧MySQL
-
Android热更新方案Robust
- 文/吴坤 张梦 定旭 晓阳
- 2016-09-14 14:28
美团•大众点评是中国最大的O2O交易平台,目前已拥有近6亿用户,合作各类商户达432万,订单峰值突破1150万单。美团App是平台主要的入口之一,O2O交易场景的复杂性决定了App稳定性要达到近乎苛刻的要求。用户到店消费买优惠券时死活下不了单,定外卖一个明显可用的红包怎么点也选不中,上了一个新活动用户一点就Crash……过去发生过的这些画面太美不敢想象。客户端相对Web版最大的短板就是有发版的概念
-
美团点评的DBProxy实践
- 文/平仲
- 2016-09-09 10:58
本文整理自美团点评技术沙龙第10期:数据库技术架构与实践。 美团点评技术沙龙由美团点评技术团队主办,每月一期,每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 本次沙龙主要围绕数据库相关的主题,内容包括美团数据库自动化运维系统构建、点评侧MySQL自动化服务平台RDS、美团数据库中间件、和小米高级DBA带来的Redis Cluster的大规模运维实践。 讲
-
美团外卖订单中心的演进
- 文/何轼
- 2016-09-09 10:57
前言 美团外卖从2013年9月成交第一单以来,已走过了三个年头。期间,业务飞速发展,美团外卖由日均几单发展为日均500万单(9月11日已突破600万)的大型O2O互联网外卖服务平台。平台支持的品类也由最初外卖单品拓展为全品类。 随着订单量的增长、业务复杂度的提升,外卖订单系统也在不断演变进化,从早期一个订单业务模块到现在分布式可扩展的高性能、高可用、高稳定订单系统。整个发展过程中,订单系统经历了几
-
RDS平台介绍
- 文/柯任
- 2016-09-03 11:34
本文整理自美团点评技术沙龙第10期:数据库技术架构与实践。 美团点评技术沙龙由美团点评技术团队主办,每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 本次沙龙主要围绕数据库相关的主题,内容包括美团数据库自动化运维系统构建、点评侧MySQL自动化服务平台RDS、美团数据库中间件、和小米高级DBA带来的Redis Cluster的大规模运维实践。 今天我就给大
-
基于 KIF 的 iOS UI 自动化测试和持续集成
- 文/映琳
- 2016-09-02 11:45
客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程。 一、测试框架的选择 iOS UI 自动化测试框架有不少,其中 UI Automation 是 Apple 早期提供的 UI 自动化测试解决方法,用 JavaScript 编写测试脚本,通过标签和值的可访问性获得 UI 元素,来完成相应的交互操作。
-
HDFS NameNode内存全景
- 文/小桥
- 2016-08-26 11:20
一、概述 从整个HDFS系统架构上看,NameNode是其中最重要、最复杂也是最容易出现问题的地方,而且一旦NameNode出现故障,整个Hadoop集群就将处于不可服务的状态,同时随着数据规模和集群规模地持续增长,很多小量级时被隐藏的问题逐渐暴露出来。所以,从更高层次掌握NameNode的内部结构和运行机制尤其重要。除特别说明外,本文基于社区版本Hadoop-2.4.1[1][2],虽然2.4.
-
ReactiveCocoa中潜在的内存泄漏及解决方案
- 文/高君
- 2016-08-19 12:09
ReactiveCocoa是GitHub开源的一个函数响应式编程框架,目前在美团App中大量使用。用过它的人都知道很好用,也确实为我们的生活带来了很多便利,特别是跟MVVM模式结合使用,更是如鱼得水。不过刚开始使用的时候,可能容易疏忽掉一些隐藏的细节,从而导致内存泄漏等问题。本文就带大家深入了解下ReactiveCocoa中隐藏的一些细节,帮助大家以更加正确的姿势使用ReactiveCocoa。
-
RestQL:现代化的 API 开发方式
- 文/李鑫
- 2016-08-12 11:26
koa-restql 已经在 github 开源并在 npm 发布。感兴趣的同学可以前往围观一下。欢迎 Pull Request,同时热烈欢迎 Star。 在现代的业务系统中,后端开发工作基本上可以被拆分为三项: 接口鉴权。例如判断是不是当前系统的用户,以及该用户是否有权限访问接口。 与其他系统的交互。例如调用第三方的服务,或内部搭建的其他服务。 数据操作。基本上所有需要持久化存储的系统都会
-
分布式队列编程优化篇
- 文/刘丁
- 2016-08-05 11:45
前言 “分布式队列编程”是一个系列文,之前我们已经发布了《分布式队列编程模型、实战》,主要剖析了分布式队列编程模型的需求来源、定义、结构以及其变化多样性;根据作者在新美大实际工作经验,给出了队列式编程在分布式环境下的一些具体应用。本文将重点阐述工程师运用分布式队列编程构架的时候,在生产者、分布式队列以及消费者这三个环节的注意点以及优化建议。 确定采用分布式队列编程模型之后,主体架构就算完成了,但工
-
分布式队列编程:模型、实战
- 文/刘丁
- 2016-07-29 11:26
介绍 作为一种基础的抽象数据结构,队列被广泛应用在各类编程中。大数据时代对跨进程、跨机器的通讯提出了更高的要求,和以往相比,分布式队列编程的运用几乎已无处不在。但是,这种常见的基础性的事物往往容易被忽视,使用者往往会忽视两点: 使用分布式队列的时候,没有意识到它是队列。 有具体需求的时候,忘记了分布式队列的存在。 文章首先从最基础的需求出发,详细剖析分布式队列编程模型的需求来源、定义、结构以及
-
Node.js Stream - 实战篇
- 文/邹斌
- 2016-07-22 11:04
背景 前面两篇(基础篇和进阶篇)主要介绍流的基本用法和原理,本篇从应用的角度,介绍如何使用管道进行程序设计,主要内容包括: 管道的概念 Browserify的管道设计 Gulp的管道设计 两种管道设计模式比较 实例 Pipeline 所谓“管道”,指的是通过a.pipe(b)的形式连接起来的多个Stream对象的组合。 假如现在有两个Transform:bold和red,分别可将文本流中某些关
-
Node.js Stream - 进阶篇
- 文/邹斌
- 2016-07-15 20:55
上篇(基础篇)主要介绍了Stream的基本概念和用法,本篇将深入剖析背后工作原理,重点是如何实现流式数据处理和back pressure机制。 目录 本篇介绍stream是如何实现流式数据处理的。 数据生产和消耗的媒介 为什么使用流取数据 如何通过流取到数据 read push方法 end事件 readable事件 doRead howMuchToRead 数据的流式消耗 数据消耗模式 暂停
-
Node.js Stream - 基础篇
- 文/邹斌
- 2016-07-08 11:51
背景 在构建较复杂的系统时,通常将其拆解为功能独立的若干部分。这些部分的接口遵循一定的规范,通过某种方式相连,以共同完成较复杂的任务。譬如,shell通过管道|连接各部分,其输入输出的规范是文本流。 在Node.js中,内置的Stream模块也实现了类似功能,各部分通过.pipe()连接。 鉴于目前国内系统性介绍Stream的文章较少,而越来越多的开源工具都使用了Stream,本系列文章将从以下几
-
消息队列设计精要
- 文/王烨
- 2016-07-01 16:10
消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你需要思考
-
Java 8系列之重新认识HashMap
- 文/前利
- 2016-06-24 11:58
摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。 简介 Java为数据结构中的映射定义了一个接口java.util.Map,
-
Cache应用中的服务过载案例研究
- 文/张杨
- 2016-06-16 17:00
简单地说,过载是外部请求对系统的访问量突然激增,造成请求堆积,服务不可用,最终导致系统崩溃。本文主要分析引入Cache可能造成的服务过载,并讨论相关的预防、恢复策略。Cache在现代系统中使用广泛,由此引入的服务过载隐患无处不在,但却非常隐蔽,容易被忽视。本文希望能为开发者在设计和编写相关类型应用,以及服务过载发生处理时能够有章可循。 一个服务过载案例 本文讨论的案例是指存在正常调用关系的两个系统
-
专访美团外卖曹振团:天下武功唯快不破
- 文/曹振团
- 2016-06-03 09:00
本文转自InfoQ中文网站,首发地址:http://www.infoq.com/cn/news/2016/06/Meituan-take-away 马云曾经说过:世界是懒人创造出来的。在“懒人”们的推动下,O2O的战火已经燃烧到了外卖行业。据报告,2015年外卖市场年交易额已经达到450余亿元,其中美团外卖从2013年底上线以来,已经迅速超过了400万日订单。作为美团内部的创业项目,美团外卖是如何
-
大众点评支付渠道网关系统的实践之路
- 文/李力
- 2016-05-20 18:00
业务的快速增长,要求系统在快速迭代的同时,保持很好的扩展性和可用性。其中,交易系统除了满足上述要求之外,还必须保持数据的强一致性。对系统开发人员而言,这既是机遇,也是挑战。本文主要梳理大众点评支付渠道网关系统在面对这些成长烦恼时的演进之路,以及过程中的一些思考和实践。 在整个系统的演进过程中,核心思路是:大系统做小,做简单(具体描述可参考《高可用性系统在大众点评的实践与经验》)。在渠道网关系统实践
-
Spark性能优化指南——高级篇
- 文/李雪蕤
- 2016-05-12 14:47
前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。 数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spar
-
Spark性能优化指南——基础篇
- 文/李雪蕤
- 2016-04-29 14:00
前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速度更快
-
Online Learning算法理论与实践
- 文/孔东营
- 2016-04-21 16:15
Online Learning是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果。本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:FTRL(Follow The Regularized Leader)[1]和BPR(Bayesian Probit Regression)[2],以及Online Learning在美团移动端推荐重排序的应
-
数据驱动精准化营销在大众点评的实践
- 文/樊聪
- 2016-04-13 08:00
精准化营销一直以来都是互联网营销业务在细分市场下快速获取用户和提高转化的利器。在移动互联网爆发的今天,数据量呈指数增长,如何在移动和大数据场景下用数据驱动进行精准营销,从而提高营销效能,成为营销业务部门的主要挑战之一,同时也是大数据应用的一个重要研究方向。本文通过数据体系架构和技术实现案例,分享美团大众点评数据应用团队在这个方向上的一些尝试和实践经验。 总体框架 在介绍数据体系和框架前,为了方便大
-
Spark在美团的实践
- 文/曾林西 李雪蕤 秦思源 毕岩 黄忠
- 2016-03-31 17:00
本文已发表在《程序员》杂志2016年4月期。 前言 美团是数据驱动的互联网服务,用户每天在美团上的点击、浏览、下单支付行为都会产生海量的日志,这些日志数据将被汇总处理、分析、挖掘与学习,为美团的各种推荐、搜索系统甚至公司战略目标制定提供数据支持。大数据处理渗透到了美团各业务线的各种应用场景,选择合适、高效的数据处理引擎能够大大提高数据生产的效率,进而间接或直接提升相关团队的工作效率。美团最初的数据
-
MongoDB 的高可用
- 文/Xie
- 2016-03-24 18:26
简介 MongoDB 复制集提供了数据副本,当发生硬件故障或服务中断时,可以从副本恢复数据,并能自动进行故障转移,即实现了 MongoDB 的高可用。 本文讲述了如何部署一个用于开发和测试的复制集环境,其中使用了3个 mongod 实例来建立一个由3个节点组成的复制集。需要事先安装好 MongoDB 数据库,可以参考MongoDB 的安装和使用进行安装。我们所使用的环境是: 美团云主机: 2CPU
-
使用模板快速编写测试用例
- 文/李涛
- 2016-03-22 18:00
在高速发展的互联网公司,由于产品的开发迭代太快,产品测试经常遇到以下几个问题: 如何在快速的产品开发迭代中迅速地完成对产品功能的测试? 面对用户众多、环境多样,如何尽可能地测试全面? 公司扩张迅速、新人多、经验不足,如何使新人迅速上手进而独当一面? 下面介绍一种使用模板来设计测试用例的方法,这个模板包含产品测试需要覆盖的主要方面,每个方面都有使用说明,有经验的QA使用模板可以避免遗漏,新人可以
-
Android自定义Lint实践
- 文/陈潼
- 2016-03-21 17:00
概述 Android Lint是Google提供给Android开发者的静态代码检查工具。使用Lint对Android工程代码进行扫描和检查,可以发现代码潜在的问题,提醒程序员及早修正。 为保证代码质量,美团在开发流程中加入了代码检查,如果代码检测到问题,则无法合并到正式分支中,这些检查中就包括Lint。 为什么需要自定义 我们在实际使用Lint中遇到了以下问题: 原生Lint无法满足我们
-
分布式块存储系统Ursa的设计与实现
- 文/李慧霸
- 2016-03-11 15:30
引言 云硬盘对IaaS云计算平台有至关重要的作用,几乎已成为必备组件,如亚马逊的EBS(Elastic Block Store)、阿里云的盘古、OpenStack中的Cinder等。云硬盘可为云计算平台带来许多优良特性,如更高的数据可靠性和可用性、灵活的数据快照功能、更好的虚拟机动态迁移支持、更短的主机故障恢复时间等等。随着万兆以太网逐渐普及,云硬盘的各项优势得到加强和凸显,其必要性变得十分强烈。
-
MongoDB 的安装和使用
- 文/Xie
- 2016-03-04 02:39
简介 MongoDB 是一个基于分布式文件存储的数据库,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。本文将带领大家在 Linux 操作系统下安装 MongoDB。 我们所使用的环境是: 美团云主机: 2CPU、2G内存、50G磁盘 OS: CentOS 6.5 DB: MongoDB 3.0.7 安装 MongoDB Linux 下安装 MongoDB MongoDB 提供了 Lin
-
深入FFM原理与实践
- 文/del2z, 大龙
- 2016-03-03 09:00
FM和FFM模型是最近几年提出的模型,凭借其在数据量比较大并且特征稀疏的情况下,仍然能够得到优秀的性能和效果的特性,屡次在各大公司举办的CTR预估比赛中获得不错的战绩。美团点评技术团队在搭建DSP的过程中,探索并使用了FM和FFM模型进行CTR和CVR预估,并且取得了不错的效果。本文旨在把我们对FM和FFM原理的探索和应用的经验介绍给有兴趣的读者。 前言 在计算广告领域,点击率CTR(click-
-
高可用性系统在大众点评的实践与经验
- 文/陈一方
- 2016-02-04 08:00
所谓高可用性指的是系统如何保证比较高的服务可用率,在出现故障时如何应对,包括及时发现、故障转移、尽快从故障中恢复等等。本文主要以点评的交易系统的演进为主来描述如何做到高可用,并结合了一些自己的经验。需要强调的是,高可用性只是一个结果,应该更多地关注迭代过程,关注业务发展。 可用性的理解 理解目标 业界高可用的目标是几个9,对于每一个系统,要求是不一样的。研发人员对所设计或者开发的系统,要知道用户规
-
PostgreSQL的流复制
- 文/Xie
- 2016-01-17 02:23
简介 本文介绍PostgreSQL数据库的流复制(stream replication)。流复制允许备库更新。备库连接主库,其产生的流WAL记录到备库。 在开始本文流复制的构建前,需要在两台机器上安装好PostgreSQL数据库,可以参考PostgreSQL基于源码的安装。其中备库的PostgreSQL可以先不执行initdb命令进行数据库初始化。另外,也可以在一台机器上启动两个PostgreSQ
-
从0到1构建美团压测工具
- 文/nateriver520
- 2016-01-08 19:00
美团内部的RPC服务大多构建在Thrift之上,在日常开发服务的过程中,需要针对这些服务进行压力测试(以下简称压测)来发现潜在问题。常用的方法有: 使用一些脚本语言如:Python、Ruby等,读取线上日志构建请求,用多线程模拟用户请求进行压测 使用开源工具进行压测 然而,无论采取哪种方法,压测都是一个十分耗时而又繁琐的过程,主要痛点有: 需要写很多代码解析日志,还原请求,对于比较复杂的请
-
在CentOS 7上安装Scala 环境
- 文/xieruijun
- 2016-01-05 04:00
简介 Scala 是一门多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 运行于Java 虚拟机,兼容现有的Java程序,可以调用Java类库,越来越被广泛地使用,被誉为下一代Java。例如新兴的大数据工具Spark使用Scala开发,基于Spark使用Scala可以简单高效地开发大数据处理程序。 本教程主要介绍Scala 编程环境在美团云Centos系统上的安装配
-
利用Bash脚本管理distcc集群
- 文/likai
- 2016-01-01 07:59
利用Bash脚本管理distcc集群 distcc介绍 对于大型C/C++项目,编译时间往往长到无法忍受,而冒然的增加make并发度则有可能由于gcc吃光内存而把机器搞死,因此我们期望能够使用多台机器并行编译项目。distcc是一个分布式编译程序,它包含客户端distcc,和服务器端distccd两个程序,distccd是一个守护进程,绑定在由命令行参数指定的端口上,接收distcc的编译请求,
-
使用Multi-Paxos协议的日志同步与恢复
- 文/likai
- 2015-12-31 07:50
使用Multi-Paxos协议的日志同步与恢复 本文是Paxos三部曲中的第二篇。在前一篇文章《使用Basic-Paxos协议的日志同步与恢复》中,我们讨论了基于Basic-Paxos协议的日志同步方案,在这个方案中,所有成员的身份都是平等的,任何成员都可以提出日志持久化的提案,并且尝试在成员组中进行持久化。而在实际的工程应用中,往往需要一个成员在一段时间内保持唯一leader的身份,来服务对数
-
在CentOS6上编译并单机部署OceanBase0.4
- 文/likai
- 2015-12-31 07:11
在CentOS6上编译并单机部署OceanBase0.4 下载代码 下载OceanBase代码 OceanBase目前只开源到了0.4版本,github地址为[https://github.com/alibaba/oceanbase] git clone git@github.com:alibaba/oceanbase.git 下载tblib代码 编译OceanBase需要依赖淘宝开源的
-
Linux磁盘分区和格式化
- 文/jiangxian
- 2015-12-31 06:21
简介 一般说到磁盘分区及格式化有部分人还是会比较陌生的,特别是在Linux下没有windows中的各种大师,将会显得比较无助,让人感觉难以触摸。那么本文将对磁盘的分区以及格式化进行分步讲解,让你逐步了解将一块初始化的磁盘给你,你要如何变成你自己能够使用的文件分区。 (PS: 本文运行环境是美团云的机器,系统是CentOS 6.5,挂载1T的云硬盘,本文将针对一块全新的未格式化10G的云硬盘进行分区
-
在CentOS 7上安装配置Flume
- 文/xieruijun
- 2015-12-27 04:00
简介 大数据时代的各种互联网应用产生大量的数据和日志,需要将这些日志收集起来,进行统一的分析处理,在应用系统和数据分析系统之间需要一座桥梁,进行通用的日志收集处理。Apache Flume 是一种分布式的、高可靠的、高可用的日志收集聚合系统,将不同来源海量的日志数据传输到集中的数据存储。Flume 最初由Cloudera开发,后成为Apache基金会顶级项目。Flume 可用于日志数据、网络流量数
-
PostgreSQL的备份和恢复
- 文/Xie
- 2015-12-27 00:38
简介 本文介绍PostgreSQL数据库的在线物理备份和恢复。在开始本文的介绍前,需要已经安装好PostgreSQL数据库,可以参考PostgreSQL基于源码的安装。 所使用的环境为: 美团云主机:2CPU、2G内存、100G磁盘 OS:CentOS6.5 DB:PostgreSQL9.3.5 PGHOME:/opt/PostgreSQL/9.3.5 PGDATA:/opt/PostgreSQL
-
Android单元测试研究与实践
- 文/潘铭炜 黄超
- 2015-12-24 17:00
Android单元测试介绍 处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单元测试的用武之地。单元测试周期性对项目进行函数级别的测试,在良好的覆盖率下,能够持续维护代码逻辑,从而支持项目从容应对快速的版本更新。单元测试是参与项目开发的工程师在项目代码之外建立的白盒测试工程,用于执行项目中的目标函数并验证其状态或者结果,其中,单元指的是测试的最小模块,通常指函数
-
在CentOS 6上搭建etcd集群
- 文/Peter
- 2015-12-23 06:39
简介 etcd是一个开源的用于配置共享和服务发现的高性能的键值存储系统,由CoreOS团队开发,也是CoreOS的核心组件,负责CoreOS的自动安全更新、容器相关的覆盖网络设置等功能。 利用 etcd 的特性,应用程序可以在集群中共享信息、配置或作服务发现,etcd 会在集群的各个节点中复制这些数据并保证这些数据始终正确。 etcd 无论是在 CoreOS 还是 Kubernetes 体系中都是
-
在CentOS7上部署Kubernetes集群
- 文/FCBusquest
- 2015-12-22 18:36
简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文将基于CentOS7自带的Kubernetes组件、分布式键值存储系统etcd以及Flannel实现的overlay网络来搭建一个简单的k8s集群。 第一步 首先要进行集群基础环境的准备,在美团云上创建三台内网机器,其中一台名为tkmaster主机作为k8s集群的Master节点,剩余两台tkminion01~0
-
如何排查主机无法SSH问题
- 文/QianJunYe
- 2015-12-18 18:30
在日常的机器配置调试中,因误操作或者配置错误可能会导致无法正常的SSH连接到主机上,我们可以使用管理控制台的终端功能连接到主机上。 如上图,通过终端功能连接到服务器后开始做排查。 确定主机网络是否正常 首先我们需要确定主机的网络是否通畅,使用终端功能登陆到服务器上。 确定本机网络配置情况 输入ip add命令,查看服务器的本身网络配置是否正确,是否有外网网络: [root@server~]#
-
在CentOS 6上使用openresty访问redis
- 文/Zhangbingbo
- 2015-12-10 23:20
简介 OpenResty 能够使用Lua语言快速构造出足以胜任10K+并发连接响应的超高性能web应用, 构建web应用不可避免地会访问数据库,本篇介绍openresty如何访问redis。 本教程适用于CentOS 6.x版本。 在使用Openresty访问redis之前,您需要先建立Openresty工作环境,可以参考在CentOS 6上搭建openresty环境,参考使用Redis加速Wor
-
在CentOS 6上使用openresty访问mysql
- 文/Zhangbingbo
- 2015-12-10 23:20
简介 OpenResty 能够使用Lua语言快速构造出足以胜任10K+并发连接响应的超高性能web应用, 构建web应用不可避免地会访问数据库,本篇介绍openresty如何访问mysql。 本教程适用于CentOS 6.x版本。 在使用Openresty访问mysql之前,您需要先建立Openresty工作环境,可以参考在CentOS 6上搭建openresty环境,参考在Centos 6上建立
-
在CentOS 6上搭建openresty环境
- 文/Zhangbingbo
- 2015-12-10 23:20
简介 OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多高质量的第三方模块,以及它们的大多数依赖项。通过汇聚各种nginx模块,从而将nginx有效地变成一个强大的web应用服务器,从而使web开发人员可以使用lua脚本语言调用nginx支持的各种C和lua模块,快速构造出足以胜任10K+并发连接响应的超高性能web
-
性能优化模式
- 文/刘丁
- 2015-12-10 17:00
摘要 性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服务可用性。在某些情况下,降低响应时间、提高系统吞吐量和提高服务可用性三者相互矛盾,不可兼得。例如:增加缓存可以降低平均响应时间,但是处理线程数量会因为缓存过大而有所限制,从而降低系统吞吐量;为了提高服务可用性,对异常请求重复调用是一个
-
在Centos 6.5 上安装配置Lighttpd PHP MySQL
- 文/wangwei
- 2015-12-08 01:00
简介 Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。 安装与简单配置 lighttpd安装与配置 首先安装epel源,如果已经安装,忽略。
-
美团O2O排序解决方案——线下篇
- 文/zwh
- 2015-12-07 16:00
背景 针对美团90%的交易发生在移动端的业务特点,我们实现了一套适用于O2O业务的搜索排序技术方案,已在许多产品和子行业中得到应用。在之前的线上篇中,我们已经介绍了服务的框架、排序算法等。本文为线下篇,主要讲述数据清洗、特征矩阵、监控系统、模型训练和效果评估等模块。 数据清洗 数据清洗的主要工作是为离线模型训练准备标注数据,同时洗掉不合法数据。数据清洗的数据源主要有团购的曝光、点击和下单。整个数据
-
在CentOS 6上搭建Zabbix监控
- 文/yangcs2009
- 2015-11-24 04:20
简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent。本文将详细介绍在CentOS 6操作系统上搭建一套Zabbix监控环境。 本教程适用于Cen
-
在CentOS 6基于源码安装PostgreSQL
- 文/Xie
- 2015-11-16 22:34
简介 本文将带领大家在Linux操作系统下基于源码安装PostgreSQL数据库。 我们所使用的环境是: 美团云主机:2CPU、2G内存、100G磁盘 OS:CentOS 6.5 DB:PostgreSQL 9.3.5 安装PostgreSQL服务 首先在终端执行如下命令,下载PostgreSQL的源代码并解压。 wget http://ftp.postgresql.org/pub/source/
-
美团O2O排序解决方案——线上篇
- 文/710
- 2015-11-16 17:00
美团的愿景是连接消费者和商家,而搜索在其中起着非常重要的作用。随着业务的发展,美团的商家和团购数正在飞速增长。这一背景下,搜索排序的重要性显得更加突出:排序的优化能帮助用户更便捷地找到满足其需求的商家和团购,改进用户体验,提升转化效果。 和传统网页搜索问题相比,美团的搜索排序有自身的特点——90%的交易发生在移动端。一方面,这对排序的个性化提出了更高的要求,例如在“火锅”查询下,北京五道口的火锅店
-
细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号
- 文/William Zang
- 2015-11-03 14:00
第一篇文章中我们介绍了冷信号与热信号的概念,前一篇文章我们也讨论了为什么要区分冷信号与热信号,下面我会先为大家揭晓热信号的本质,再给出冷信号转换成热信号的方法。 揭示热信号的本质 在ReactiveCocoa中,究竟什么才是热信号呢?冷信号是比较常见的,map一下就会得到一个冷信号。但在RAC中,好像并没有“hot signal”这个单独的说法。原来在RAC的世界中,所有的热信号都属于一个类——R
-
ZeroMQ 基础篇
- 文/wangwei
- 2015-10-31 02:43
简介 ZeroMQ是一个为可伸缩的分布式或并发应用程序设计的高性能异步消息库,它提供的套接字可以在多种协议中传输消息,并且透明的支持多种通信方式,主要包括:线程间通信,进程间通信,跨主机通信等。ZeroMQ强调消息收发模式,比如常见的订阅模式、分发模式、请求-应答等等。 安装 下载源码 如下,我下载的是4.1.3版本,可以到官网上找最新版本的源代码下载 wget http://do
-
在CentOS 7上安装Kafka
- 文/xieruijun
- 2015-10-27 02:00
简介 Kafka 是一种高吞吐的分布式发布订阅消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理消息等,同时具有更高的吞吐率,支持分区、多副本、冗余,因此被广泛用于大规模消息数据处理应用。Kafka 支持Java 及多种其它语言客户端,可与Hadoop、Storm、Spark等其它大数据工具结合使用。 本教程主要介绍Kafka 在Centos 7上的安装和使用,包括功能验证和集群的简单
-
使用 npm shrinkwrap 来管理项目依赖
- 文/敬威
- 2015-10-23 17:30
管理依赖是一个复杂软件开发过程中必定会遇到的问题。 在Node.js项目开发的时候,我们也经常需要安装和升级对应的依赖。虽然 npm 以及语意化的版本号 (semantic versioning, semver) 让开发过程中依赖的获取和升级变得非常容易, 但不严格的版本号限制,也带来了版本号的不确定性。主要的问题可能有三个: npm 建议使用 semver 的应用程序版本,但这也完全依赖第三方
-
Mock Server实践
- 文/闫帅
- 2015-10-19 11:00
背景 在美团服务端测试中,被测服务通常依赖于一系列的外部模块,被测服务与外部模块间通过REST API或是Thrift调用来进行通信。要对被测服务进行系统测试,一般做法是,部署好所有外部依赖模块,由被测服务直接调用。然而有时被调用模块尚未开发完成,或者调用返回不好构造,这将影响被测系统的测试进度。为此我们需要开发桩模块,用来模拟被调用模块的行为。最简单的方式是,对于每个外部模块依赖,都创建一套桩模
-
美团Android资源混淆保护实践
- 文/jianshuai
- 2015-09-30 09:00
前言 Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译、破解、汉化等等,这样就可以修改原有代码的逻辑、添加新代码、添加或修改资源、或者更有甚者植入病毒等等,从而破坏原有APK的安全和用户体验,最终伤害到用户和原有的开发者。而事物都是有两方面的,有矛就有盾,针对Android应用安全的各种方案应运而生,大
-
细说ReactiveCocoa的冷信号与热信号(二):为什么要区分冷热信号
- 文/William Zang
- 2015-09-28 14:00
前一篇文章我们介绍了冷信号与热信号的概念,可能有同学会问了,为什么RAC要搞得如此复杂呢,只用一种信号不就行了么?要解释这个问题,需要绕一些圈子。 前面可能比较难懂,如果不能很好理解,请仔细阅读相关文档。 最前面提到了RAC是一套基于Cocoa的FRP框架,那就来说说FRP吧。FRP的全称是Functional Reactive Programming,中文译作函数式响应式编程,是RP(React
-
细说ReactiveCocoa的冷信号与热信号(一)
- 文/William Zang
- 2015-09-08 09:00
背景 ReactiveCocoa(简称RAC)是最初由GitHub团队开发的一套基于Cocoa的FRP框架。FRP即Functional Reactive Programming(函数式响应式编程),其优点是用随时间改变的函数表示用户输入,这样就不需要可变状态了。我们之前的文章“RACSignal的Subscription深入分析”里曾经详细讲解过RAC核心概念之一RACSignal的实现原理。在
-
深入理解Objective-C:方法缓存
- 文/zj
- 2015-08-12 16:00
摘要 只要用到Objective-C,我们每天都会跟方法调用打交道。我们都知道Objective-C的方法决议是动态的,但是在底层一个方法究竟是怎么找到的,方法缓存又是怎么运作的却鲜为人知。本文主要从源码角度探究了Objective-C在runtime层的方法决议(Method resolving)过程和方法缓存(Method cache)的实现。 简介 本文作者来自美团酒店旅游事业群iOS研发组
-
Nginx性能优化
- 文/hanjilong
- 2015-07-16 18:51
简介 在大多数情况下,一个常规安装的Nginx对网站来说已经能很好地工作了。然而如果想挤压出Nginx的性能,就需要了解哪些指令会影响Nginx性能,在本文中将解释Nginx的哪些设置可以微调。需要注意一点,这是一个简单的预览——那些可以通过微调来提高性能设置的概述,不同的环境可能情况不太一样。 对于Nginx的调优,可以大致从如下指令着手: 1. worker_processes 2. wor
-
前端组件化开发实践
- 文/spring
- 2015-07-10 15:00
前言 一位计算机前辈曾说过: Controlling complexity is the essence of computer programming. 随着前端开发复杂度的日益提升,组件化开发应运而生,并随着 FIS、React 等优秀框架的出现遍地开花。这一过程同样发生在美团,面临业务规模的快速发展和工程师团队的不断扩张,我们历经引入组件化解决资源整合问题、逐步增强组件功能促进开发效率、重新
-
使用Redis加速WordPress博客系统
- 文/fuyiwei
- 2015-06-30 21:30
简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value型NoSQL数据库。凭借自身丰富的API、超高的性能以及支持持久化存储等特点,Redis迅速的成为了数据库缓存领域的第一选择。 本教程将详细介绍如何使用美团云Redis缓存服务为WordPress站点加速。在执行本教程之前,请先依照教程Ubuntu系统搭建部署LNMP环境以及在Ubunt
-
RACSignal的Subscription深入分析
- 文/peiyun
- 2015-06-30 12:00
ReactiveCocoa是一个FRP的思想在Objective-C中的实现框架,目前在美团的项目中被广泛使用。对于ReactiveCocoa的基本用法,网上有很多相关的资料,本文不再讨论。RACSignal是ReactiveCocoa中一个非常重要的概念,而本文主要关注RACSignal的实现原理。在阅读之前,你需要基本掌握RACSignal的基本用法 本文主要包含2个部分,前半部分主要分析RA
-
美团酒店Node全栈开发实践
- 文/郭凯
- 2015-06-26 15:00
前后端分离的背景 “前后端分离”显然已不是什么新鲜的话题,Zakas在2013年10月份就曾发表过一篇博客《Node.js and the new web front-end》讨论Node背景下新时代的前端。毫无疑问,Node的出现给JavaScript语言带来了新的生机,也使得前端开发者有了更多的可能性。 前后端分离表面上看似乎是一场“圈地运动”,但实质上前后端分离是为了解决以往开发模式的一些诟
-
美团Android DEX自动拆包及动态加载简介
- 文/jianshuai xiaoyang
- 2015-06-15 10:00
概述 作为一个android开发者,在开发应用时,随着业务规模发展到一定程度,不断地加入新功能、添加新的类库,代码在急剧的膨胀,相应的apk包的大小也急剧增加, 那么终有一天,你会不幸遇到这个错误: 生成的apk在android 2.3或之前的机器上无法安装,提示INSTALL_FAILED_DEXOPT 方法数量过多,编译时出错,提示: Conversion to Dalvik format
-
在CentOS 6上安装PostgreSQL 9.3数据库
- 文/chujitao
- 2015-06-10 07:30
简介 PostgreSQL 是一个开源的对象-关系数据库服务器,有着极其丰富的数据类型的支持,并且支持对数据类型进行扩展。支持众多的开发语言。在PostGIS的扩展下提供了很强的空间信息服务功能。 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手。 用Yum安装PostgreSQL数据库 首先需要在系统中添加官网提供的对应版本的Yum仓库,命令如下: sudo yum install
-
如何使用Ambari部署HDP
- 文/YangCongQi
- 2015-05-14 04:30
简介 Ambari是一款用于部署、管理、监控Hadoop集群的开源工具,通过Ambari用户可以更方便地管理大规模Hadoop集群。本文主要分为两个部分,首先介绍如何通过Repositories安装Ambari2.0.0,然后在此基础上介绍如何通过Ambari Web UI部署HDP。 安装Ambari 1.选择一台机器作为主节点,在该机器下载Ambari repository。请使用root账号
-
Logistic Regression 模型简介
- 文/FIN
- 2015-05-08 10:00
逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛。本文作为美团机器学习InAction系列中的一篇,主要关注逻辑回归算法的数学模型和参数求解方法,最后也会简单讨论下逻辑回归和贝叶斯分类的关系,以及在多分类问题上的推广。 逻辑回归 问题 实际工作中,我们可能会遇到如下问题: 预测一个用户是否点击特定的商品 判断用户的性别
-
在Ubuntu 14.04上安装WordPress
- 文/fuyiwei
- 2015-05-07 21:30
简介 WordPress是一款使用PHP语言开发的博客平台。通过使用WordPress,用户可以在支持PHP和MySQL数据库的服务器上轻松架设属于自己的网站。 在执行本教程之前,请先依照教程Ubuntu系统搭建部署LNMP环境,在ubuntu操作系统中安装LNMP环境。 本教程适用于Ubuntu 14.04版本。 下载WordPress 将LNMP环境安装配置好之后,就可以安装WordPres
-
在CentOS上安装Docker
- 文/paperplane
- 2015-04-30 18:00
Docker是一个能够把开发应用程序自动部署到容器的开源引擎。它由Docker公司的团队编写,基于Apache 2.0开源协议授权。它提供了一个简单、轻量的建模方式,使开发生命周期更高效快速,鼓励了面向服务的架构设计。 前提条件 内核 Docker运行对内核要求比较高,因此一般建议直接在Ubuntu这样的平台运行。但作为一个容器标准,Docker也是支持其他如CentOS, Mac OS X, W
-
Ubuntu系统搭建部署LNMP环境
- 文/Chris
- 2015-04-29 23:20
简介 LNMP是Linux、Nginx、MySQL和PHP的缩写,这个组合是最常见的WEB服务器的运行环境之一。本文将带领大家Ubuntu操作系统上搭建一套LNMP环境。 本教程适用于Ubuntu 12.04、14.04版本。 在安装LNMP环境之前,您需要先对Ubuntu操作系统做一些初始化的工作,可以参考Ubuntu系统初始化设置。 安装Nginx 美团云的Ubuntu系统模板中配置了美团云
-
How to deploy a website
- 文/Hanjilong
- 2015-04-20 21:44
注意:以下命令需要在root下执行或者命令前加sudo 一:安装和配置Apache服务 更新系统库以及安装最新软件 root@Ubuntu1464:~# apt-get update root@Ubuntu1464:~# apt-get upgrade 安装Apache2服务 root@Ubuntu1464:~# apt-get install apache2 编辑Ap
-
Ubuntu系统初始化设置
- 文/Chris
- 2015-04-20 19:20
Ubuntu是最受欢迎的服务器操作系统之一,美团云中的Ubuntu系统模板基于标准的发行版进行制定,并打了关键的漏洞补丁,您在美团云购买了一台崭新的Ubuntu服务器之后,还需要在服务器上做一些简单的操作,以进一步增强服务器的安全性。 本教程适用于Ubuntu 12.04、Ubuntu 14.04版本。 登录服务器 如果您创建的美团云主机包含外网带宽,那么可以通过外网IP登录,否则需要通过美团云
-
在 CentOS 6 上安装 Jekyll
- 文/xiaoxiao
- 2015-04-14 23:20
简介 Jekyll 是用 Ruby 开发的静态网站框架,十分流行。本教程详细讲述了在 CentOS 6.x 上安装 Jekyll 的过程。 安装 Ruby CentOS 6 自带的 Ruby 版本太低,因此需要使用 rvm 安装较新版本的 Ruby。 安装 rvm: gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C27546
-
在CentOS 6上安装phpMyAdmin管理MySQL
- 文/bill
- 2015-04-13 04:20
很多网站和应用的后端都需要数据库来进行庞大的数据管理,免费的MySQL(MariaDB)成为很多开发者都喜欢使用的数据库系统。为了从复杂的命令行式管理数据库工作中脱离出来,很多开发者喜欢使用第三方的MySQL管理软件,phpMyAdmin是其中最流行的一款WEB管理软件。 本教程适用于CentOS 6版本。 在安装phpMyAdmin之前,您需要先对CentOS操作系统做一些初始化及将LNMP配通
-
如何对rsyslog进行配置
- 文/yinyin
- 2015-04-07 16:20
Linux日志机制的核心是rsyslog守护进程,该服务负责监听Linux下的日志信息,并把日志信息追加到对应的日志文件中,一般在/var/log目录下。它还可以把日志信息通过网络协议发送到另一台Linux服务器上,或者将日志存储在MySQL或Oracle等数据库中。本文将简要介绍一下rsyslog的配置文件的配置,以及如何使用logrotate进行日志滚动。 rsyslog 配置文件 rsysl
-
Linux资源管理之cgroups简介
- 文/大龙,志超
- 2015-03-31 12:00
###引子 cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制,目前越来越火的轻量级容器 Docker 就使用了 cgroups 提供的资源限制能力来完成cpu,内存等部分的资源控制。 另外,开发者也可以使用 cgroups 提供的精细化控制能力,限制某一个或者某一组进程的资源使用。比如在一个既部署了前端 web 服务
-
Docker系列之二:基于容器的自动构建
- 文/Puff
- 2015-03-10 12:00
自动构建系统是从美团的自动部署系统发展出来的一个新功能。每当开发人员提交代码到仓库后,系统会自动根据开发人员定制的构建配置,启动新的Docker容器,在其中对源代码进行构建(build),包括编译(如Java、C++和Go)、预处理(如Javascript和CSS)、压缩(如图片)等操作,生成最终需要上线的程序包。 背景 美团的代码发布系统有中央控制节点,负责代码的拉取、应用的构建和上传等任务。随
-
美团云主机远程桌面连接帮助
- 文/Bob
- 2015-03-05 18:20
说明 本文适用于需要使用图形化远程桌面工具登录云主机的场合。 本文参考的系统是美团云公共镜像Ubuntu 14.04。 美团云推荐使用VNC作为Linux系统的远程连接工具,而对于Windows系统,则推荐使用微软默认的远程桌面连接程序(mstsc.exe)作为工具。 使用远程桌面连接之前,请确认云主机的防火墙已经正确配置(云平台默认防火墙对于Windows机器已为RDP协议开启3389端口,而对
-
深入理解Objective-C:Category
- 文/zj
- 2015-03-03 15:00
摘要 无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objective-C代码的各个角落,从Apple官方的framework到各个开源框架,从功能繁复的大型APP到简单的
-
序列化和反序列化
- 文/刘丁
- 2015-02-26 10:00
#摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。恰当的序列化协议不仅可以提高系统的通用性、强健性、安全性、优化系统性能,而且会让系统更加易于
-
Ubuntu 12.04安装Zabbix
- 文/Lemon
- 2015-02-14 00:30
美团云监控模块已经提供了机器状态监控、端口监控、阈值监控等功能,但如果用户有更复杂的监控需求,可以采用开源的监控系统实现。 Zabbix是一款功能强大的开源的监控系统,能够提供分布式的系统监控以及网络监控,开源且安装配置简单。zabbix架构包括了server、proxy、agent、数据库和web接口等部分。 1.安装Zabbix首先需要数据库,本文采用的是mysql sudo apt-get
-
基于nginx反向代理实现子域名服务器
- 文/zhangbingbo
- 2015-02-13 19:40
美团云的客户中有很多使用做企业软件的公司,这些公司中很多都在使用子域名作为服务单元的情况,但是域名解析服务商对子域名的个数都有严格的限制,当企业想要使用更多的子域名的时候,也就只能自己想办法在美团云中来实现子域名。 针对这个问题,有两种方案(假设用户的域名为erjifuwu.com) 在美团云中搭建子域名解析服务器 在dns解析服务商(例如dnspod或者cdn)哪里增加一条对erjif
-
机器学习中的数据清洗与特征处理综述
- 文/caohao
- 2015-02-10 11:30
背景 随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富。通过对这些数据的分析和挖掘,不仅能给美团业务发展方向提供决策支持,也为业务的迭代指明了方向。目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术,例如个性化推荐、筛选排序、搜索排序、用户建模等等,为公司创造了巨大的价值。 本文主要介绍在美团的推荐与个性化团队实践中的数据清
-
实例详解机器学习如何解决问题
- 文/huawolf
- 2015-02-05 14:00
前言 随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的研究各有侧重,学术界侧重于对机器学习理论的研究,工业界侧重于如何用机器学习来解决实际问题。我们结合美团在机器学习上的实践,进行一个实战(InAction)系列的介绍(带“机器学习InAction系列”标签的文章),介绍机器学习在解决工业界问题
-
Docker系列之一:入门介绍
- 文/xzs
- 2015-01-27 15:00
Docker简介 Docker是DotCloud开源的、可以将任何应用包装在Linux container中运行的工具。2013年3月发布首个版本,当前最新版本为1.3。Docker基于Go语言开发,代码托管在Github上,目前超过10000次commit。基于Docker的沙箱环境可以实现轻型隔离,多个容器间不会相互影响;Docker可以自动化打包和部署任何应用,方便地创建一个轻量级私有Paa
-
fio简介
- 文/xanpeng
- 2015-01-27 05:00
本文简要介绍fio的代码结构和原理,希望能有助于大家更深地理解fio这一强大、灵活的性能测试工具。 fio是Jens Axboe大神编写的性能测试工具,可以用来测试CPU、网络以及存储等多种设备的性能数据,目前开源在github上(https://github.com/axboe/fio)。 fio的来由是axboe大神在日常性能测试工作中,发现很多重复、繁琐的工作,于是程序员的“惰性”大发,开发
-
Linux中设置和同步时间
- 文/Swordqiu
- 2015-01-24 00:30
准确的系统时间是稳定服务的基础,本文介绍与时间相关的Linux命令,以及如何为自己的Linux服务器维护准确的时间。 时间 一台Linux服务器有两个时间源,一个是硬件时间,即服务器硬件CMOS维护的时间,还有一个是软件时间,即操作系统维护的时间,前者通过hwclock命令来访问,后者则主要通过date命令来访问。 date是最常用的时间相关的命令,例如: # 获取当前时间 $ date Fri
-
Windows服务器的基础安全加固
- 文/Swordqiu
- 2015-01-23 00:30
美团云(MOS)提供Windows Server 2008 R2和Windows Server 2012 R2数据中心版的云主机服务器。由于Windows服务器市场占有率较高的原因,针对Windows服务器的病毒木马等恶意软件较多,且容易获得,技术门槛也较低,因此Windows服务器的安全问题需要格外留意。为了安全地使用Windows云主机,建议应用如下几个简单的安全加固措施。虽然简单,但是已足够
-
高级语言的编译:链接及装载过程介绍
- 文/大龙,志超
- 2015-01-22 15:00
###引言随着越来越多功能强大的高级语言的出现,在服务器计算能力不是瓶颈的条件下,很多同学会选择开发效率高,功能强大的虚拟机支持的高级语言(Java),或者脚本语言(Python,Php)作为实现功能的首选,而不会选择开发效率低,而运行效率高的 C/C++ 作为开发语言。而这些语言一般情况下是运行在虚拟机或者解释器中,而不需要直接跟操作系统直接打交道。 虚拟机和解释器相当于为高级语言或者脚本语言提
-
美团推荐算法实践
- 文/Idealist
- 2015-01-22 13:00
前言 推荐系统并不是新鲜的事物,在很久之前就存在,但是推荐系统真正进入人们的视野,并且作为一个重要的模块存在于各个互联网公司,还是近几年的事情。 随着互联网的深入发展,越来越多的信息在互联网上传播,产生了严重的信息过载。如果不采用一定的手段,用户很难从如此多的信息流中找到对自己有价值的信息。 解决信息过载有几种手段:一种是搜索,当用户有了明确的信息需求意图后,将意图转换为几个简短的词或者短语的组合
-
如何设置ssh客户端的配置文件
- 文/fcbusquest
- 2015-01-13 20:00
SSH是远程登录Linux主机的最流行工具之一,SSH客户端提供的功能十分强大,具有很多连接配置选项。 如果每次登录都要重复设定一些复杂的连接参数,这很容易导致出错并且降低效率,幸运地是,我们可以通过设定ssh客户端的连接配置文件来简化登录过程中繁琐的参数设定。 本篇教程就是简要讲述ssh客户端解析配置文件的过程以及一些范例。 配置文件 ssh客户端的配置文件位于~/.ssh目录下,配置文件名统
-
Kafka文件存储机制那些事
- 文/“悠悠香草”
- 2015-01-13 16:00
Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 1.前言 一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和
-
升级Ubuntu-12.04 LTS到Ubuntu-14.04 LTS版本
- 文/fcbusquest
- 2015-01-13 01:00
Ubuntu具有Standard和LTS(Long-term Supported)两种版本,相比Standard版本,LTS版本可以获得更长的技术支持周期。 目前,Ubuntu-12.04和Ubuntu-14.04这两个LTS版本的使用非常广泛。 虽然Ubuntu-12.04 LTS在2017年4月之前都可以获得技术支持,但是Ubuntu-12.04 LTS的一些用户为了使用一些新系统特性将系统升
-
美团 P2P 图书馆实践:5天时间1845册图书共享入库
- 文/美团技术学院
- 2015-01-08 10:00
我们在2014年的最后一周上线了美团图书馆。在开始介绍这个项目之前,先和大家说明几个数字和一段对话截屏。 每周读一本,读完这些书需要45年 上线5天内收到了 1845 册个人共享的图书,占到总册数的 77.4% 美团网CEO王兴的评价 项目背景 美团人是美团最重要的资产,美团人的成长是我们最重要的事情! 2010年美团成立之初,技术团队设立了部门书架计划,工程师提议然后部门集中采购。最初两
-
TCPMSS 引发的 PPTP VPN 问题
- 文/for you
- 2014-12-31 23:20
问题描述 在云主机上配置了 PPTP VPN 之后,发现客户端在连接 VPN 的状态下,可以访问淘宝,但是无法访问百度等网站,具体表现为浏览器请求页面的过程中连接被重置。 最初怀疑是 DNS 的问题,但是经过检查发现 DNS 可以返回正确的结果。然后尝试在客户端侧检查浏览器的获得的响应结果,发现浏览器没有接收到任何的响应数据,于是尝试着云主机上请求百度,发现可以得到正确的响应。 初步排查之后没有能
-
TCP Incast 及其影响
- 文/Shouren Yang
- 2014-12-29 19:20
Incast 是指一种多对一的通信模式,常见于部署了大量的分布式存储或者计算服务(如Hadoop, MapReduce, HDFS, Cassandra等)的数据中心中。当然,Incast 也可以特指 TCP Incast,因为上述这些服务大部分都是基于 TCP 的。 Incast 发生在一个 client 同时向后端的多个 server 节点发起数据请求,在某些情况下,server 集群会同时响
-
Ftp 安装和配置
- 文/wangxinpu
- 2014-12-27 03:20
Vsftpd is "Probably the most secure and fastest FTP server for UNIX-like systems" 服务器端配置 1. 安装 vsftpd #查看是否已经安装vsftpd rpm -qa | grep vsftpd #如果没有,就安装,并设置开机启动 yum -y install vsftpd chkconfig vsftpd on
-
OpenVPN 安装和配置
- 文/Shouren Yang
- 2014-12-27 03:20
OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。OpenVPN允许建立的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证。 服务器端配置 1. 安装 OpenVPN Ubuntu $ sudo apt-get update $ sudo apt-get install openvpn CentOS $ sudo yum intall op
-
在Ubuntu12.04上搭建ownCloud
- 文/yinyin
- 2014-12-18 23:20
前提条件 在按照owncloud之前,我们假设已经安装了LAMP,如果还未安装,请查看: ownCloud是什么? ownCloud是一套开源的在线存储解决方案,类似Dropbox和Google Drive. ownCloud的优势是它安装在你指定的服务器上,而不是在别人的服务器上,因此具有更多的控制权。 安装OwnCloud 1.下载ownCloud软件发布的key cd wget http:/
-
基于机器学习方法的POI品类推荐算法
- 文/wangbogong
- 2014-12-18 19:04
前言 在美团商家数据中心(MDC),有超过100w的已校准审核的POI数据(我们一般将商家标示为POI,POI基础信息包括:门店名称、品类、电话、地址、坐标等)。如何使用这些已校准的POI数据,挖掘出有价值的信息,本文进行了一些尝试:利用机器学习方法,自动标注缺失品类的POI数据。例如,门店名称为“好再来牛肉拉面馆”的POI将自动标注“小吃”品类。 机器学习解决问题的一般过程:本文将按照:1)特征
-
在CentOS 6上安装WordPress
- 文/bill
- 2014-12-13 18:30
WordPress是一个基于PHP的开源博客系统。它起源于2003年,是目前世界上最流行的开源博客系统。 本教程适用于CentOS 6版本。 在安装WordPress之前,您需要先对CentOS操作系统做一些初始化及将LNMP配通,可以参考CentOS系统初始化设置和在CentOS 6上搭建LNMP环境。 下载安装WordPress 将LNMP环境安装配置好之后,就可以安装WordPress了。
-
在CentOS 7上安装WordPress
- 文/wangxinpu
- 2014-12-13 18:30
WordPress是一个基于PHP的开源博客系统。它起源于2003年,是目前世界上最流行的开源博客系统。 本教程适用于CentOS 7版本。 在安装WordPress之前,您需要先对CentOS操作系统做一些初始化及将LNMP配通,可以参考CentOS系统初始化设置和在CentOS 7上搭建LNMP环境。 下载安装WordPress 将LNMP环境安装配置好之后,就可以安装WordPress了。
-
在CentOS 7上搭建LNMP环境
- 文/Chris
- 2014-12-04 20:10
简介 LNMP是Linux、Nginx、MySQL(MariaDB)和PHP的缩写,这个组合是最常见的WEB服务器的运行环境之一。本文将带领大家在CentOS 7操作系统上搭建一套LNMP环境。 本教程适用于CentOS 7.x版本。 在安装LNMP环境之前,您需要先对CentOS操作系统做一些初始化的工作,可以参考CentOS系统初始化设置。 安装Nginx 美团云的CentOS系统模板中配置
-
在CentOS 6上搭建LNMP环境
- 文/Chris
- 2014-12-03 23:20
简介 LNMP是Linux、Nginx、MySQL和PHP的缩写,这个组合是最常见的WEB服务器的运行环境之一。本文将带领大家在CentOS 6操作系统上搭建一套LNMP环境。 本教程适用于CentOS 6.x版本。 在安装LNMP环境之前,您需要先对CentOS操作系统做一些初始化的工作,可以参考CentOS系统初始化设置。 安装Nginx 美团云的CentOS系统模板中配置了内网源,下载速度
-
SSD云主机全新上线
- 文/Chris
- 2014-12-03 00:20
简介 12月2日,美团云SSD云主机正式上线。硬盘高吞吐量解决您的业务IO瓶颈,同时Raid10为您提供极致安全保障。即日起,您可以在美团云在线选购SSD云主机,也可以发送SSD试用+公司名+美团云用户名+业务类型到mos@meituan.com即刻免费体验。 SSD(固态硬盘)相对于HDD(机械硬盘)的优势 1.速度 SSD固态硬盘没有磁头,不存在寻道时间,当读取指令发出后,固态硬盘直接从闪
-
CentOS系统初始化设置
- 文/Chris
- 2014-12-02 19:20
美团云中的CentOS系统模板基于标准的发行版进行制定,并打了关键的漏洞补丁,您在美团云购买了一台崭新的CentOS服务器之后,还需要在服务器上做一些简单的操作,以进一步增强服务器的安全性。 本教程适用于CentOS 6.4、CentOS 6.5、CentOS 7 版本。 登录服务器 如果您创建的美团云主机包含外网带宽,那么可以通过外网IP登录,否则需要通过美团云的跳板机进行登录。 对于有外网I
-
美团性能分析框架和性能监控平台
- 文/shijun
- 2014-10-29 10:26
以下是我在 Velocity China 2014 做的题为“美团性能分析框架和性能监控平台”演讲的主要内容,现在以图文的形式分享给大家。 今天讲什么? 性能的重要性不言而喻,需要申明的是,我们今天不讲业界最佳性能实践,这些实践已经有很多沉淀,具体可以参考《高性能网站》和《高性能浏览器网络》等书,另外,我们不打算讲性能优化的结果指标,比如页面完全加载时间,首屏时间,结果指标固然重要,是我们工作成果
-
抽象语法树在 JavaScript 中的应用
- 文/xcatliu
- 2014-10-08 16:39
抽象语法树是什么 在计算机科学中,抽象语法树(abstract syntax tree 或者缩写为 AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都表示源代码中的一种结构。之所以说语法是「抽象」的,是因为这里的语法并不会表示出真实语法中出现的每个细节。1 果然比较抽象,不如先看几个例子: 抽象语法树举例 foo =
-
Java内存访问重排序的研究
- 文/gravity
- 2014-09-23 18:24
什么是重排序 请先看这样一段代码1 public class PossibleReordering { static int x = 0, y = 0; static int a = 0, b = 0; public static void main(String[] args) throws InterruptedException { Thread one = new Thread(
-
OpenTSDB 造成 Hbase 整点压力过大问题的排查和解决
- 文/wangshijun
- 2014-09-16 10:26
业务背景 OpenTSDB 是一款非常适合存储海量时间序列数据的开源软件,使用 HBase 作为存储让它变的非常容易扩展。我们在建设美团性能监控平台的过程中,每天需要处理数以亿计的数据,经过几番探索和调研,最终选取了 OpenTSDB 作为数据存储层的重要组件。OpenTSDB 的安装和配置过程都比较简单,但是在实际的业务应用中,还是会出现这样那样的问题,本文详细介绍我们在OpenTSDB 实际使
-
地理空间距离计算优化
- 文/zhan
- 2014-09-05 18:35
#1 地理空间距离计算面临的挑战打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是“离我最近”或者“智能排序”(如下图所示)。 不管是“离我最近”还是“智能排序”,都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分)。以筛选商家为例,北京地区有5~6w个POI(本文将商家称之为POI),当用户进入商家页,请求北京全城+所有品类+离我最
-
Solr空间搜索原理分析与实践
- 文/美团CRM技术团队
- 2014-09-02 10:35
前言 在美团CRM系统中,搜索商家的效率与公司的销售额息息相关,为了让BD们更便捷又直观地去搜索商家,美团CRM技术团队基于Solr提供了空间搜索功能,其中移动端周边商家搜索和PC端的地图模式搜索功能为BD们的日常工作带来了很大的便利,大大提升了BD们的工作效率。 在本文中,首先对空间搜索的原理进行简单介绍,然后再结合具体的业务场景去分享美团使用空间搜索的实践。 空间搜索原理 空间搜索,又名Spa
-
美团Android自动化之旅—适配渠道包
- 文/zhihu
- 2014-09-01 16:06
概述 前一篇文章(美团Android自动化之旅—生成渠道包)介绍了Android中几种生成渠道包的方式,基本解决了打包慢的问题。 但是,随着渠道越来越多,不同渠道对应用的要求也不尽相同。例如,有的渠道要求美团客户端的应用名为美团,有的渠道要求应用名为美团团购。又比如,有些渠道要求应用不能使用第三方统计工具(如flurry)。总之,每次打包都需要对这些渠道进行适配。 之前的做法是为每个需要适配的渠道
-
Quartz应用与集群原理分析
- 文/zhanshenny,meituan_crm
- 2014-08-31 22:35
一、问题背景 美团CRM系统中每天有大量的后台任务需要调度执行,如构建索引、统计报表、周期同步数据等等,要求任务调度系统具备高可用性、负载均衡特性,可以管理并监控任务的执行流程,以保证任务的正确执行。 二、历史方案 美团CRM系统的任务调度模块经历了以下历史方案。 1. Crontab+SQL 每天晚上运行定时任务,通过SQL脚本+crontab方式执行,例如, #crm 0 2 * * *
-
Innodb中的事务隔离级别和锁的关系
- 文/ameng
- 2014-08-20 15:50
前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。 #一次封锁or两段锁
-
灵活强大的构建系统Gradle
- 文/bob
- 2014-08-18 15:41
前言 构建,软件生命周期中重要的一环,在现代软件开发过程中,起着越来越重要的作用。过去在Java或类Java的世界里,Ant、Maven再熟悉不过了,Maven凭借其强大的依赖配置战胜Ant,基本上成为了Java构建的标准。而在现代,系统日益复杂,构建的灵活性要求越来越高,比如:构建过程中需要打包上传到服务器,Maven无法很好地支持这种复杂的系统构建,所以,我选择了Gradle,一个基于Groo
-
MySQL索引原理及慢查询优化
- 文/NeverMore
- 2014-06-30 18:35
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易
-
Presto实现原理和美团的使用实践
- 文/木叶丸 本文已发表在《程序员》2014.6月刊
- 2014-06-16 10:45
Facebook的数据仓库存储在少量大型Hadoop/HDFS集群。Hive是Facebook在几年前专为Hadoop打造的一款数据仓库工具。在以前,Facebook的科学家和分析师一直依靠Hive来做数据分析。但Hive使用MapReduce作为底层计算框架,是专为批处理设计的。但随着数据越来越多,使用Hive进行一个简单的数据查询可能要花费几分到几小时,显然不能满足交互式查询的需求。Faceb
-
美团Android自动化之旅—生成渠道包
- 文/zhihu
- 2014-06-13 10:06
概述 每当发新版本时,美团团购Android客户端会被分发到各个应用市场,比如豌豆荚,360手机助手等。为了统计这些市场的效果(活跃数,下单数等),需要有一种方法来唯一标识它们。 团购客户端目前通过渠道号(channel)来区分不同的市场,代码中使用Config.channel变量记录该渠道号。比如,豌豆荚市场中美团应用的渠道号是wandoujia,360手机助手中美团应用的渠道号为qihu360
-
5whys分析法在美团工程师中的实践
- 文/美团crm团队
- 2014-06-12 22:35
前言 网站的质量和稳定性对于用户和公司来说至关重要,但是在网站的快速发展过程中,由于各种原因导致事故不可避免的发生,这些大大小小的事故对公司难免会造成一些负面的影响,为了避免同类事故的再次发生,美团的工程师们从事故中不断学习,对每次事故进行深入分析和总结,形成了一种Casestudy文化,并结合一套科学的分析方法-5whys分析法,深入分析事故背后的根本原因和流程漏洞,使得事故发生的频率大大降低。
-
AC算法在美团上单系统的应用
- 文/xiaoz
- 2014-06-09 23:55
1.背景 在美团,为了保证单子质量,需要对上单系统创建的每一个产品进行审核。为了提高效率,审核人员积累提炼出了一套关键词库,先基于该词库进行自动审核过滤,对于不包括这些关键词的产品信息不再需要进行人工审核。因此,如何在页面中快速的检测是否包含了这些关键词就变得非常重要。 对于上述问题我们描述为如下的形式: 给定关键词集合P={p1,p2,……,pk},在目标串T[1...m]中找到出现了哪些关键
-
Solr Facet技术的应用与研究
- 文/zhanshenny
- 2014-06-09 22:35
问题背景 在《搜索引擎关键字智能提示的一种实现》一文中介绍过,美团的CRM系统负责管理销售人员的门店(POI)和项目(DEAL)信息,提供统一的检索功能,其索引层采用的是SolrCloud。在用户搜索时,如果能直观地给出每个品类的POI数目,各个状态的DEAL数目,可以更好地引导用户进行搜索,进而提升搜索体验。 需求分析 例如,下图是用户搜索项目(DEAL)的界面,当选中一个人或者组
-
剖析 Promise 之基础篇
- 文/spring
- 2014-06-05 22:16
随着浏览器端异步操作复杂程度的日益增加,以及以 Evented I/O 为核心思想的 NodeJS 的持续火爆,Promise、Async 等异步操作封装由于解决了异步编程上面临的诸多挑战,得到了越来越广泛的应用。本文旨在剖析 Promise 的内部机制,从实现原理层面深入探讨,从而达到“知其然且知其所以然”,在使用 Promise 上更加熟练自如。如果你还不太了解 Promise,推荐阅读下 p
-
block在美团iOS的实践
- 文/xiaoliang
- 2014-05-17 16:19
说到block,相信大部分iOS开发者都会想到retain cycle或是__block修饰的变量。但是本文将忽略这些老生常谈的讨论,而是将重点放在美团iOS在实践中对block的应用,希望能对同行有所助益。本文假设读者对block有一定的了解。 从闭包说起 在Lisp这样的语言中,有一个概念叫做闭包(closure1),指的是一个函数以及它所处的词法作用域(lexical scope2)构成的整
-
如何把Android手机变成一个WIFI下载热点? — 报文转发及DNS报文拦截
- 文/球哥
- 2014-05-17 11:38
随着wifi的普及,移动运营商的热点也越来越多了,如中国移动的CMCC、中国电信的ChinaNet、中国联通的ChinaUnicom等,一般来说,连上此类的热点,打开浏览器上网时都会自动跳转到一个验证页面,最近有个项目也有类似的需求,Android手机自建热点,别的手机wifi连接此热点,打开浏览器,输入任意内容,自动跳转到一个下载列表页面,点击相应的链接即可下载相应的文件。 分析 考虑如下几种情
-
Emma使用与分析
- 文/ameng
- 2014-04-30 15:50
#什么是EmmaEMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。 EMMA 所使用的字节码插装不仅保证 EMMA 不会给源代码带来“脏代码”,还确保 EMMA 摆脱了源代码的束缚,这一特点使 EMMA 应用于功能测试成为了可能。 #如何使用emma现在可以
-
基于Wi-Fi的室内定位在美团总部的实践和应用(上)
- 文/张小美
- 2014-04-21 18:18
室内定位技术的商业化必将带来一波创新高潮,尤其是在O2O领域,各种基于此技术的应用将出现在我们的面前。我们可以想象一些比较常见的应用场景,比如在大型商场里面借助室内导航快速找到目标商铺,商店根据用户的具体位置向用户推送更多关于商品的介绍等等,这些应用会极好的服务于O2O,提高用户体验。 目前室内定位技术有很多,如A-GPS、蓝牙、超声,红外、信标、射频、Wi-Fi、计算机视觉等,这些技术综合比较,
-
美团数据仓库-数据脱敏
- 文/song
- 2014-04-08 10:35
背景与目标 在数据仓库建设过程中,数据安全扮演着重要角色,因为隐私或敏感数据的泄露,会对数据主体(客户,员工和公司)的财产、名誉、人身安全、以及合法利益造成严重损害。因此我们需要严格控制对仓库中的数据访问,即什么样的人员或者需求才可以访问到相关的数据。这就要求对数据本身的敏感程度进行安全级别划分。数据有了安全等级的划分,才能更好管理对数据访问控制,以此来保护好数据安全。 举个例子简单的说明下
-
改进合作 Git 工作流:自动提取、合并提交
- 文/john
- 2014-03-28 11:07
每天,美团的上百名工程师都在不断改进美团的用户体验,或是加入各种新鲜的功能。作为负责展现、交互的前端工程师,我们上线的次数可达一天数十次。 我们使用 Stash 托管项目代码。每个功能都新增一个新任务分支 (feature branch),当开发测试完成后,推送任务分支到 Stash 上,并创建 pull request 进入代码审查,直到被通过,等待上线。 为了保证开发速度,我们不断改进完善这个
-
Hadoop安全实践
- 文/code6
- 2014-03-24 21:35
前言 在2014年初,我们将线上使用的 Hadoop 1.0 集群切换到 Hadoop 2.2.0 稳定版, 与此同时部署了 Hadoop 的安全认证。本文主要介绍在 Hadoop 2.2.0 上部署安全认证的方案调研实施以及相应的解决方法。 背景 集群安全措施相对薄弱 最早部署Hadoop集群时并没有考虑安全问题,随着集群的不断扩大, 各部门对集群的使用需求增加,集群安全问题就显得颇为重要。说到
-
COS系统的前端演变和发展
- 文/mininice
- 2014-03-19 07:31
美团COS:全称美团网核心业务系统部,以持续整合O2O线下资源,共建高效率、低成本的供应链系统,高效推动O2O生态环境建设为业务目标,负责美团网核心业务系统的建设和管理。 COS系统,伴随着美团3年多的发展,前端也积极参与到系统的建设中。 在这几年里,通过优化系统前端环境,改进代码组织结构,丰富公共资源和自动化工具,不断提高了业务响应效率,也在不断努力去逐步缩短系统的前端开发周期,以下简单介绍在这
-
iBeacon 初探
- 文/leafduo
- 2014-03-14 00:00
iBeacon 是苹果公司在 iOS 7 中新推出的一种近场定位技术,可以感知一个附近的 iBeacon 信标的存在。当一个 iBeacon 兼容设备进入/退出一个 iBeacon 信标标识的区域时,iOS 和支持 iBeacon 的 app 就能得知这一信息,从而对用户发出相应的通知。 典型的应用场景例如博物馆实时推送附近展品的相关信息,商场内即时通知客户折扣信息等。苹果在 Apple Stor
-
深入解析String#intern
- 文/john_yang
- 2014-03-06 17:10
引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。 8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种: 直接使用双引号声明出来的String对象会直接存储在常量池中。 如果不是用双引号声明的String对象,
-
美团性能优化之路——性能指标体系
- 文/soryokurin
- 2014-03-03 22:35
前言 在互联网网站百花齐放的今天,网站响应速度是用户体验的第一要素,其重要性不言而喻,这里有几个关于响应时间的重要条件: 用户在浏览网页时,不会注意到少于0.1秒的延迟; 少于1秒的延迟不会中断用户的正常思维, 但是一些延迟会被用户注意到; 延迟时间少于10秒,用户会继续等待响应; 延迟时间超过10秒后,用户将会放弃并开始其他操作; 而在美团,“消费者第一”是公司的第一价值观,为了给消费者提
-
CentOS6上Hadoop集群中服务器cpu sys态异常的定位与解决
- 文/Pivotal, yc
- 2014-03-02 10:35
问题现象 在zabbix系统中,对Hadoop集群的历史监控数据分析时,发现在执行大Job任务时,某些服务节点的cpu sys态很高; 具体以hadoop_A服务节点为例,在10:15-10:40这个时间段,cpu user态为60%,而sys态则高达35%; 对于整个Hadoop集群,并不是所有的节点都会出现sys过高的问题,产生此类问题的都是部署CentOS6系统的节点。 定位分析 根据
-
搜索引擎关键字智能提示的一种实现
- 文/美团点评技术团队
- 2014-02-17 22:35
问题背景 搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验。 美团CRM系统中存在数以百万计的商家,为了让用户快速查找到目标商家,我们基于solrcloud实现了商家搜索模块。用户在查找商家时主要输入商户名、商户地址进行搜索,为了提升用户的搜索体验和输入效率,本文实现了一种基于solr前缀匹配查询关键字智能提示(Sugge
-
YUI经验谈 - 自定义事件默认行为
- 文/spring
- 2014-02-14 10:00
纵观主流JS库和框架,YUI在自定义事件方面做的尤为出色。如果需要挑出一个代表性的feature,那么非事件默认行为莫属。 是什么 YUI自定义事件在总体上模仿了DOM事件的设计思想。DOM中的一些事件是有默认行为的,详细见DOM3 Event - Default actions and cancelable events一节。简单来说,所谓默认行为,是指该事件在通常情况下所表现出来的动作,例如:
-
Hive SQL的编译过程
- 文/木叶丸
- 2014-02-12 17:30
Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用。美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析。Hive的稳定性和性能对我们的数据分析非常关键。 在几次升级Hive的过程中,我们遇到了一些大大小小的问题。通过向社区的咨询和自己的努力,在解决这些问题的同时我们对Hive将SQL编译为MapReduce的过程有了比较
-
【思考】PHP——成也Web,败也Web
- 文/七月的夏天
- 2014-02-07 17:54
早年我并不知道Python写的Web应用是怎么部署的,总觉得像PHP、ASP一样,仅仅提供一个语言级别的执行模块,直接嵌入Web服务器运行,甚至于直接对外提供带扩展名的URL都是自然而然的事情。 前一阵学习了Python,总是如别人一样,不自觉的和PHP进行对比。随着学习的逐步深入,更发现PHP的发展受限于其Web出身,恐将来难成正经的通用开发语言。 先说说PHP从历史到今天分别是怎么运行的:
-
YUI事件体系之Y.EventTarget
- 文/spring
- 2014-01-25 21:25
上两篇文章YUI事件体系之Y.Do、YUI事件体系之Y.CustomEvent中,分别介绍了YUI实现AOP的Y.Do对象,以及建立自定义事件机制的Y.CustomEvent对象。 本篇文章,将要介绍YUI事件体系集大成者、最为精华的部分——Y.EventTarget。 Y.EventTarget DOM事件中的目标元素为event.target,这类元素可以触发、监听一些事件,例如input元素
-
YUI事件体系之Y.CustomEvent
- 文/spring
- 2014-01-24 19:13
上一篇文章中,简要介绍了YUI实现AOP的Y.Do对象。 接下来,我们继续对YUI事件体系进行探索。本次要介绍的是Y.CustomEvent对象,从命名上就可以看出,这个对象在整个YUI事件体系中十分重要。它建立起整个自定义事件的体系,而且,DOM事件也构建在这个体系之上。 Y.Subscriber Y.Subscriber的作用比较简单:执行回调函数。 Y.Subscriber = functi
-
YUI事件体系之Y.Do
- 文/spring
- 2014-01-23 23:34
YUI团队在种种场合不断的夸耀自己的事件体系是多么强大: YUI 3′s Event module is one of the strengths of the library --Eric Miraglia, YUI Theater — Luke Smith: "Events Evolved" YUI 3 is not all about DOM manipulation — it also
-
数据开放平台的配置管理
- 文/Zeadom Ekay
- 2014-01-23 14:26
美团是数据驱动的技术公司, 非常重视使用数据的效率。为了达到这个目标,我们将数据以开放平台的形式开放给需求方。例如,帮助需求方开发报表的报表开放平台,帮助需求方获取数据的自助查询平台,让需求方参与数据建设的ETL开放平台和调度管理服务。在这些开放平台上,需求方填写必要的配置,平台负责根据这些配置产生需要的报表,导出数据,或者产生ETL流程并通过调度有序执行。通过这种方式,简化用户使用数据的流程,提
-
SegmentFault 美团云采访实录
- 文/美团点评技术团队
- 2014-01-13 10:00
约半年前,美团悄然上线了美团云(Meituan Open Services,简称MOS),这是美团网根据自身虚拟化平台开发和运维经验开放的云计算服务,类似AWS。 美团 CEO 王兴可能是中国最知名的连续创业者,曾创办校内和饭否。2010年创办美团,从社交网络转向电子商务。其背后的思路却一脉相承:利用人际关系传播信息。恐怕没有人会想到美团会涉足云计算服务,但在王兴看来,美团云的推出是一件自然而然的
-
基于Flume的美团日志收集系统(二)改进和优化
- 文/dju alex
- 2013-12-09 22:35
在《基于Flume的美团日志收集系统(一)架构和设计》中,我们详述了基于Flume的美团日志收集系统的架构设计,以及为什么做这样的设计。在本节中,我们将会讲述在实际部署和使用过程中遇到的问题,对Flume的功能改进和对系统做的优化。 1 Flume的问题总结 在Flume的使用过程中,遇到的主要问题如下: a. Channel“水土不服”:使用固定大小的MemoryChannel在日志高峰时常报队
-
基于Flume的美团日志收集系统(一)架构和设计
- 文/dju alex
- 2013-12-09 22:30
美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流。美团的日志收集系统基于Flume设计和搭建而成。 《基于Flume的美团日志收集系统》将分两部分给读者呈现美团日志收集系统的架构设计和实战经验。 第一部分架构和设计,将主要着眼于日志收集系统整体的架构设计,以及为什么要做这样的设计。 第二部分改进和优化,将主要着眼于实际部署和使用过程
-
美团数据仓库的演进
- 文/shdiao
- 2013-12-05 20:44
美团数据仓库,在过去的两年中,与我们的业务一起高速发展。在这一演进过程中,有很多值得总结和沉淀的内容。这篇文档回顾下美团数据仓库这两年发展过程中遇到的各种问题,为什么选择了现在的技术方案,每一个功能和模块是在什么情况下产生的,解决的是什么问题,中间有过哪些弯路。既可以作为大家熟悉美团数据仓库构建过程的一篇文档,也可以作为初次建立数据仓库的参考。 史前时代 在正式建设美团数据仓库之前,数据组也为各部
-
YUI3在美团的实践
- 文/spring
- 2013-12-04 22:35
美团网在2010年引爆了团购行业,并在2012年销售额超过55亿,实现了全面盈利。在业务规模不断增长的背后,作为研发队伍中和用户最接近的前端团队承担着非常大的压力,比如用户量急剧上升带来的产品多样化,业务运营系统的界面交互日益复杂,代码膨胀造成维护成本增加等等。面对这些挑战,我们持续改进前端技术架构,在提升用户体验和工作效率的同时,成功支撑了美团业务的快速发展,这一切都得益于构建在YUI3框架之上
无
“”
标签搜索结果