个人网站模板html 下载,php网站模版,做国外直播网站有哪些,用网站做赌彩广告本文转自InfoQ中文网站#xff0c;首发地址#xff1a;http://www.infoq.com/cn/news/2016/06/Meituan-take-away 马云曾经说过#xff1a;世界是懒人创造出来的。在“懒人”们的推动下#xff0c;O2O的战火已经燃烧到了外卖行业。据报告#xff0c;2015年外卖市场年交易额… 本文转自InfoQ中文网站首发地址http://www.infoq.com/cn/news/2016/06/Meituan-take-away 马云曾经说过世界是懒人创造出来的。在“懒人”们的推动下O2O的战火已经燃烧到了外卖行业。据报告2015年外卖市场年交易额已经达到450余亿元其中美团外卖从2013年底上线以来已经迅速超过了400万日订单。作为美团内部的创业项目美团外卖是如何一步步从复用美团的基础服务到如今具有在高并发下百万级别订单的业务系统的。 2016年7月15-16日ArchSummit全球架构师峰会将在深圳举行。本届大会我们邀请了美团外卖技术专家曹振团老师前来分享《美团外卖系统架构演进与系统稳定性经验谈》的内容讲述在美团外卖业务的高速发展中系统架构各阶段面临的不同挑战以及对应的解决方案。 现在我们就来采访曹振团老师让老师给大家送一份充满干货的“外卖”。 InfoQ在你认为怎样的架构是一个好架构怎样的架构师是一个好的架构师能否谈谈如何避免一个“坏”架构的诞生 曹振团一个好的架构是与业务特点及与业务发展阶段相结合的、因地制宜且与时俱进的。一个好的架构既能支撑业务的快速稳定发展又能留有一定的灵活性和扩展性。而好的架构师需要做好三点 首先需要充分理解业务只有充分理解业务之后才能使架构不仅能够很好地支持业务特点并具有一定的前瞻性。架构师需要站在推进业务发展的角度上合理地改进和优化架构设计为业务的快速发展做好保障。其次架构师要具备良好的沟通和协调能力。架构师往往要面临着跨组、跨团队、跨事业部甚至跨事业群的一些技术方案需要沟通和协调各方的诉求和冲突。最后要具备持续学习的能力。不仅要学习技术知识的变化更要学习业界的发展思路、最佳实践等。好的架构是实践出来的好的架构师也是在实践中快速成长起来的。新美大内部对架构师的培养非常注重实践和交流。架构师都在业务一线深入了解业务、需求及技术特性。美团外卖业务在快速发展的过程中踩了很多坑这也让我们的架构师更快的成长起来。新美大内部各事业群的Casestudy都是共享的这也是一个非常好的学习平台从他人的经验和总结中学习。另外内部开设有架构专题分享提供给大家一个架构实践的交流和讨论的平台。 架构通常是为了解决系统的高并发、高性能、高可用的问题结合业务特点在研发资源、排期、技术方案之间做平衡。一个“坏”的架构则破坏了这种平衡比如由于工期紧张而引入了一个自己并不能把控的技术方案为系统的稳定性埋下了雷。还有一个简单的判断标准是当采用这个架构后在未来多长时间或几倍增量下需要调整架构。基本上要求至少在未来的半年到一年内或2倍增量下不需要调整架构。如果架构设计评审不符合这个标准就要及时重新设计或调整。 InfoQ你曾在网易工作过能否简单谈谈在架构设计上美团外卖与网易各自的特点是什么 曹振团门户网站面对着海量的新闻事件及分类具有更新量大、过期快和热点集中的特点。新闻资料基本是静态的所以对缓存技术应用较多。 美团外卖涉及到交易的信息、支付、履约的各个环节参与方较多。从用户支付下单到商家接单还有骑手配送等环节这些过程都是动态有交互的美团外卖对服务化及服务治理设计较多。 InfoQ你加入美团后有参与多个创新业务的探索那么你认为在业务初期好的架构是必要的吗为什么呢能否分享经历了多个创新业务之后的收获这些经验给美团外卖带来了什么样的收获和挑战 曹振团2013年加入美团时我们在O2O这个方向上进行了多个创新业务的探索完全是新的事情从零开始。在早期最重要的事情就是验证需求验证产品是否能够满足用户的核心需求是否能够被用户接受。这一阶段就是快速试错通常以MVP的方式快速迭代。我们需要足够快地找到方向此时灵活性优先于架构。 加入新美大的早期参与公司内部的创业在O2O这个领域进行了多个创新业务的探索最后决定做外卖这个业务。在经历创新业务后最大的收获主要讲两点 创业的早期决定不做什么往往比决定做什么更重要。在早期产品技术资源都很紧缺需要将有限的资源投入到最核心的产品需求上。天下武功唯快不破。如今的市场瞬息万变唯有快速的迭代方能抢占先机。创业会给技术带来大量的挑战首先需要是个全面手前端、后台、数据库、运维都能够迅速切入。另外也要有足够的技术视野和深度才能够在技术方案的选择上游刃有余既能快速的选择合适的方案又能够把握其技术原理。 InfoQ美团外卖创建初期是否借鉴了美团的架构设计美团外卖架构的创建和发展经历了什么样的过程 曹振团美团外卖创建初期复用了很多美团的基础服务主要借鉴了团购业务积累的经验。 美团外卖的架构是随着业务的发展优化和演进的。主要经历了以下几个过程 自由发展阶段业务起步的时候大家公用服务和数据库表这样能够快速支持产品迭代。产品和技术人员聚焦在快速验证产品功能上。到底应该有哪些功能用户会如何点外卖等这个阶段主要的特点就是集中所有的功能都集中在几个项目里所有的表都集中在一个库中。故障驱动架构随着业务的爆发增长早期的架构出现了很多的问题系统频繁地出现稳定性的问题共享数据库表导致业务逻辑散落各地、甚至实现不一致的情况。这时系统稳定性问题倒逼架构进行优化调整进行了服务化拆分服务之间全部用接口的方式调用。架构驱动改革随着单量的快速增长系统故障所造成的损失是巨大的、不可接受的。需要从架构驱动技术体系的改进、甚至推进产品和业务的变革。同时增加业务的容灾能力进行了多机房的部署。InfoQ在外卖交易流程中哪个环节最容易出现问题你们是如何解决的 曹振团美团外卖在快速发展的过程中踩了很多坑。比如发版引发的故障这类问题一般是最多的。发版的新功能可能含有bug可能含有慢SQL可能没有正确处理网络异常等。外卖业务还是一个实时且流程较长的业务尤其流量比较集中在中午和晚上的饭点在高峰时段的QPS是万级别的外卖整个链条还会涉及到很多的服务如果某个依赖服务有问题将会影响到其它服务。例如没有设置合理的RPC超时时间如果服务A挂了会导致依赖该服务的其它服务出现问题进而引起连锁反应最终系统雪崩。 针对这些问题我们做了关键路径梳理。整个交易流程中梳理出关键路径非关键调用异步化关键路径做好容错容灾设计实时监控关键路径的核心指标。整体系统做了比较全面的应急预案当有紧急情况发生时力保关键路径不出问题。 至于如何避免掉坑分享几点 防御式编程不要相信任何人或服务做好对自身服务的保护和对依赖服务的熔断。每次发版都有预案。回滚是解决发版引发故障的最快捷有效的手段。灰度灰度灰度完善的监控很重要需要覆盖系统性能及业务指标并对这些指标熟知和敏感。InfoQ 在美团外卖业务急速发展的同时目前美团外卖架构上是否有需要改进和突破的地方是否有关注前沿的技术目前通过什么渠道来发现持续优化架构的方法 曹振团 业务屡创新高及团队规模的扩大给技术架构带来了越来越多的挑战。如何能够在大规模作战的情况下既能保持业务开发的敏捷性又能保障系统的稳定性是我们架构中要重点思考的我们一直在结合着业务发展的节奏优化和改进技术架构。一方面要与时俱进地支持多品类的业务扩展及平台化建设另一方面在永恒不变的话题“稳定性”方面在为能够支持更高的业务量持续抽取和优化基础服务加强中间件的能力使各服务能够更聚焦和专注。因此加强基础设施和强固中间件的建设是我们要改进和突破的地方。夯实技术基础设施和中间件让研发力量更聚焦在业务开发中。 美团外卖在技术架构中大量使用了开源的技术组件在深入调研后会结合外卖的业务特点做二次开发感谢Java社区里丰富的开源软件使得我们能够更好地优化我们的架构。另外一个发现和持续优化架构的方法是全链路的在线压测。我们会定期进行全链路的在线压测发现系统的瓶颈并优化验证。 InfoQ 在架构演进过程中分别使用了哪些核心指标来判断公司架构是否改善你们对核心指标的要求是多少目前是否已经稳定达到 曹振团架构的演进是为了能够提供更可靠的SLA核心的考量指标有5倍的容量4个9的可用性TP99 200ms的响应时间目前已经可以稳定达到了。这些指标界定了系统能够在一定的容量下具有稳定和可靠的表现。我们会定期地做全链路的在线压测通过实时的数据指标监控系统分析和验证是否已经达成架构目标。可用性和响应时间在服务端还是比较好衡量和达成的但是从用户端看就变得复杂了很多。比如用户的设备、网络环境等都可能会对结果造成影响我们也在加强用户侧的监控持续地优化和改进用户体验。 InfoQ 外卖领域作为一种懒人经济你们认为这些“懒人”在数据上体现了怎样的特征 曹振团有一种说法是“世界是由懒人驱动的”。由于懒得去换台发明了遥控器。懒得爬楼梯发明了电梯。如果你懒得出去吃我们可以送外卖上门。懒是一个强需求。 我们在解决这个强需求的过程中发现了一些有趣的变化由于出现了这样的外卖平台满足了大家懒的需求越发使大家变“懒”了平均点外卖的次数在变多花样在变多大家的口味在变多。虽然变“懒”了但是对品质的要求却在提高。我们通过优化配送链条上的服务使得能够更及时、快速地为“懒人”提供美食。配送变快了口感有了更好的保证。这又促使一些之前不提供外卖服务的品牌商家加入到外卖平台上来使得整个生态更加良性发展。 另外一个特征是“懒人”的需求也是多样的“懒人”们希望能够提供更多的外送选择这将会改写“外卖”的定义它将会含有更广阔和丰富的含义而不只是 “美食外卖”。 InfoQ 作为架构师有什么感悟和经验和大家分享吗 曹振团 主要分享几点吧 性能是功能的一部分稳定是功能的一部分。性能和稳定性需要在开发设计的时候作为产品功能的一部分来考虑而不是扩展属性。这样才能在开发、测试、上线、运行中全程把握。简单即美。把复杂的事情简单化抓住核心脉络解决好主要矛盾不见得一个大而全的海纳百川的架构才是好的相反清晰、明了的架构是我们追求的简单可依赖。使用能够驾驭的技术。丰富的开源社区给了我们很多的选择和视角任何引入的开源技术都应该理解其原理和本质只有能够驾驭的技术才能用好。细节决定成败。软件架构是一项复杂和精细的工作只有把每个细节都做极致了才能保障架构的基石稳健。InfoQ感谢曹振团老师接受我们的采访。期待你在ArchSummit全球架构师峰会上的分享。