摩拜物联网架构演进之路|数据与架构齐驱,看摩拜创造奇迹

编辑手记

最近召开的首席技术官领袖峰会上,互联网不同行业顶尖技术领导者齐聚一堂,充分交流与碰撞最前沿的技术思想和实践,探讨技术创造商业价值的途径,推动商业变革与创新。会上有很多有价值的观点和实践经验,感谢iTechPlus的授权,我们在此将一些经典的内容重新编辑整理,分享给各位。希望对大家有帮助和借鉴意义。

今天我们拣选的是来自摩拜的技术副总裁张屹凌的分享。主题围绕摩拜的架构演进展开。

作者介绍

张屹凌 摩拜技术副总裁

历任微软、Google、房多多技术负责人,专注平台研发,数据挖掘10年

以下是分享的内容及解读:

什么是架构?

在Wikipedia上对架构的定义为The process and the product of planning,designing,and constructing structures.也就是规划、设计及构建的过程和产物。

架构有很多种,包括研发架构,团队架构各种,今天分享的主题主要围绕技术架构展开,具体来讲,是围绕摩拜的系统架构,一起探讨软件技术的演进和发展。

摩拜创建的时间并不久,不像许多已经过了早期的大公司。摩拜在过去一年的增长和发展非常快,一方面表现为用户数量的增加,已达到最初的500倍,团另一方面则表现为团队的增长,目前的团队规模也是以前的十倍。在这样的增速下,为了保持用户环境的稳定,提高服务的质量,摩拜的架构经历了几代的演进,也做了很多的功能和性能的优化。

在整个系统架构演进的过程中,我们本着进中求稳的理念,从两个方面不断优化改进:一方面是系统的速度和能力,另一方面是系统的稳定性和性能。两个方面相辅相成,互相促进,既从工具和架构层面不断创新,也结合流程规范不断优化。

“摩拜的系统架构的演进可以分为四个阶段”

第一阶段野蛮生长

我们去年8月份的时候开启了这个项目,项目开始得很顺利,我们用了一夜的时间上线了一套数据库,也没有测试,但上线后非常顺利没有出什么问题。跟CEO聊的时候,他谈起这件事情表现得很兴奋。

当时的系统架构组成为:LB+NGINX+Tomcat+Dubbo+DB。车辆业务端垂直切分,使用Monolith First算法,扩展能力有限,而数据库是单实例的。

但不久,在我们第二次聊天的中途,可能是因为车辆需求的增加, 服务器突然因为遭遇bug就宕机了,当时还是很严重了,整个系统都崩溃了,但在我们的努力下,最终把系统的bug修复了。

在当时,系统主要表现出三大特点:快、糙、猛。即简单快,随时发布,快速落地,多面手。

同时存在以下问题:从业务上来说,不能对各种用户需求和行为作出合理响应,功能上尚不完善。而性能上,也是常常捉襟见肘,在很多个方面遇到过性能瓶颈,只能在尝试中去改进,很多时候没有办法直接定位问题的根源。这些问题,跟我们上线之前的准备工作不充分有很大的关系。

我们团队是非常扁平的,这个扁平意思不只是说一个人管多少人,而是一个人既做研发又负责一些iot又做运维上线还要做测试。面对系统的多重问题,就对我们的技术人员提出了新的要求。

我们希望能够通过监控尽早发现问题,避免线上的误操作和效率问题,同时要不断增强系统的IOT容错能力。

第二阶段基础性能

从八月份到12月,用户增长很快,每月达到2X的速度。随着规模的扩大,系统在功能上逐渐完善,我们也更重视系统的性能问题。

于是我们开始设计第二代也就是V1的系统架构。V1的主要改进目标针对V0的问题做修复,并提高稳定性和基础性能。

从以下四个方面,我们可以看到系统的改进:

第三阶段性能优化

很快,业务的增长速度达到了3X每月,性能问题日益凸显。由于没有做很好的流量管控,整个服务是一套,如果这个加了一百个服务器以后,后面系统连接数就很多,很可能就爆掉,这时候再加机器也没用了。

于是我们设计了第三代架构 V2

我们把架构做成两层,先去Dubbo化,再服务拆分,拆完了以后我们发现整个监控也要简化,性能测试大大简化,发布影响也大大缩小了,之后是数据库的拆分,我们当时拆一个核心的库表,拆了一千多个库,再做的过程中发现不仅是拆的事情,而是把所有的业务都梳理一遍,拆一个库表一个月,我们后来就不坚持做这个策略了,我们就先拆地域,再分片,这个也是和我们业务有关系的。

4月份做了一个周年的活动,那天基本达到了一个峰值,也被行业内攻击了一下,之后基本就开挂了,整个服务没有非常明显的宕机。

从以下四个方面,我们也实实在在看到系统在不断完善和优化:

对物联网,我们更多是做一些链路的分析,当时也是说性能问题很多是由用户的反馈过来的,我们每次报过来就让一个人查和分析链路是什么,这个事情非常重,当时稍微做了一些链路分析的工作,就把核心链路做了分析,就是开关锁的分析。

第四阶段并行迭代能力

现在又到了第四个阶段,这个时候我们的系统比较稳定了,但是我们性能稳定了,但是还是会宕机,宕机的原因很多,很多是因为业务复杂度导致的,业务复杂度是因为需求变多了,很多事情想做,这个架构必须确保很多人同时开包的时候,大家可以很稳定的合作,很稳定的上线,而不是说今天上线明天就回滚。

我们一方面考虑团队增长,需要确保团队的能力和兴趣匹配,需要一个比较好的结构支持这个事情。

同时整个系统在做更好调优,不是那么简单了,要做一个并发的研发环境,做业务无关的数据库分片方案,还有系统化的IOT方案,国际化的架构方案,我们需要做一些系统化的设计。

我们分为几步走,一个是基础架构的东西,做了一个核心业务的拆分,拆分不只是微服务化,更多是需要把一些相关的系统整合到一块,对子系统的整理。

同时我们还做了一个中间件层的收口,把一些底层依赖收起来。第三是数据库分片,IOT的核心功能,设备管理能力,请求链路分析,开关锁的统计分析,我们还有一个OTA的能力升级,从性能到能力。同时我们做了国际化设计,这是一个高频率发布的事情,有一套适合摩拜的代码管理的流程。

到了第三版,功能对比如下,这个迭代的过程,一步一步到今天这个状态,对我们来说,最重要的就是MoveFast,尽量用工具来提高这些效率。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-10-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

做软件测试,如何月薪过万?

很多人提到软件测试都觉得测试,就是看看软件能不能正常的运行,而且一般测试都是一些小姑娘,一般都是嘻嘻哈哈在聊天中就完成一些软件功能的测试,还有多大的技术含量,这...

35311
来自专栏大数据和云计算技术

运营商常见大数据业务

3.1 运营商常见的大数据业务 第1章介绍了运营商拥有的数据资产,运营商拥有从底层的设备和网络数据到上层的用户行为数据。有了这些数据,运营商大数据便可以衍生出...

35410
来自专栏钱塘大数据

【推荐收藏】探寻大数据本质,不做DT时代的旁观者

很多人对于热门的新技术、新趋势往往趋之若鹜却又很难说的透彻,如果你问他大数据和你有什么关系?估计很少能说出一二三来。究其原因,一是因为大家对新技术有着相同的原始...

3664
来自专栏华章科技

十大优势让4D打印成为新蓝海

日前,MarketsandMarkets发布关于4D打印的最新市场研究报告《4D打印市场之材料、终端用户的行业和地域——全球趋势及预测,2019—2025》。该...

941
来自专栏SDNLAB

AWS S3服务中断,你要放弃公有云吗?

美国时间2月28日,由于亚马逊AWS弗吉尼亚州数据中心出现故障,使得其云服务S3出现了较高的错误率,直接影响到成千上万个在线服务。 ? 据悉,受到影响的网站服务...

2869
来自专栏互联网高可用架构

【云时代架构】技术培训系列课程

1503
来自专栏DevOps时代的专栏

顾宇:成功的微服务应该是什么样 — 组织篇

4 月在深圳的 GOPS 大会上我分享了“落地微服务的难点和如何高效落地微服务”,这是我 2017 年 4 月份开始做的项目总结,后来发表到了自己的博客和” T...

762
来自专栏数据猿

金融科技&大数据产品推荐:易鑫大数据风控平台

易鑫大数据风控平台综合了机器学习、网络爬虫、指标体系、规则引擎、图数据库、流式计算等核心技术,整合线上线下多维度数据,可支持反欺诈、信用评分、贷前审批、贷中监控...

27612
来自专栏mini188

谈谈敏捷开发

我对敏捷开发是源于10多年前看了一本关于迭代开发的书,从而对迭代开发有了一些兴趣。从那时开始有了迭代开发的概念。随着项目经验的增加迭代的重要性也越发觉得明显。随...

610
来自专栏大数据技术学习

大数据概念:史上最全大数据解析

现如今,我们身边很多人对一些热门的新技术、新趋势往往趋之若鹜却又很难说得透彻,比如大数据,如果被问大数据和你有什么关系,估计很少能说出一二三来。究其原因,一是因...

1232

扫码关注云+社区