打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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


编辑手记



作者介绍

张屹凌  摩拜技术副总裁

历任微软、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,尽量用工具来提高这些效率。 



资源下载

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
企业架构管控实践之一:企业架构管控框架
分布式架构的前世今生……
架构杂谈——互联网系统架构演进
面向全栈的技术管理
06 - 汽车功能安全(ISO 26262)系列: 系统阶段开发 - 系统安全架构
【Java进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?【石杉的架构笔记】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服