写点什么

从“望车兴叹”到实时公交查询,是什么支撑起北京日均 800 万人次的公交系统?

  • 2021-02-03
  • 本文字数:3791 字

    阅读完需:约 12 分钟

从“望车兴叹”到实时公交查询,是什么支撑起北京日均800万人次的公交系统?
00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    《超级探访·春节特辑》之“启迪公交”篇(上)

    00:00 / 00:00
      1.0x
      • 3.0x
      • 2.5x
      • 2.0x
      • 1.5x
      • 1.25x
      • 1.0x
      • 0.75x
      • 0.5x
      网页全屏
      全屏
      00:00

      《超级探访·春节特辑》之“启迪公交”篇(下)


      说起公共交通,在地铁还没有发达的时候,北漂的人们或多或少都经历过“公交车囧事”。有人因为公交卡没钱只能无奈下车;有人顶着严寒酷暑在公交车站“望车兴叹”——公交车一趟又一趟,就是没有自己要搭的那一路;还有人好不容易等到了车,结果发现公交车挤成了“沙丁鱼罐头”,使出浑身解数也挤不上去,只能继续原地等待下一辆或者选乘其他交通工具。

       

      近些年随着云计算、大数据、物联网等新兴技术的高速发展,这些影响着人们出行的问题也得到了极大改善。如果公交卡忘记充钱,可以使用公交车软件扫码先乘车后付款;在出门前,就可以通过手机 APP 实时了解公交车到站的具体时间和车辆拥挤程度,减少因等车浪费的时间;此前疫情横行的严峻形势下,为避免交叉感染,公交车严格控制乘车人数,人们还可以通过手机 APP 提前预定车次,既保证了有需求的人出行,也加强了防疫力度。

       

      潜移默化间新兴技术究竟是如何改变了公共交通?这款帮助大家便利出行的手机 APP 又是“何方神圣”?它又是凭借哪些技术手段,帮助人们实现实时车辆动态查询等出行需求的?带着这些问题,我们来到了这款手机 APP 诞生的地方——启迪公交,探寻以上问题的答案。

      数据高楼难建“地基”,启迪公交实行技术突围

       

      众所周知,北京有着国内规模最大、车辆最多、计费方式最复杂的城市公交系统。而作为这个公交巨无霸系统的运营者,北京公交集团也是业内公认的“全球最大公交集团”,其拥有两万多辆公共电汽车,1000 多条运营线路,日均客运量超过了 800 万人次。隶属于北京公交集团的启迪公交就是这个巨无霸背后的科技“智囊团”。

       

      “支撑北京公交庞大的系统运转,需要一个强大、高效、高性能、稳定性极强的系统支撑。2018 年,启迪公交成立之初,便决定搭建包括‘北京公交 App’在内的一整套数字公交软硬件系统,帮助北京公交近 2.5 万台公共汽车互联上云。 ”启迪公交产品研发总监周国礼面对镜头讲道。

       

      但事实上,这并不是一个一蹴而就的事情。庞大的高并发数据量增加了研发的难度,巨无霸公交系统需要支撑北京市 2 万多辆公交车、早晚高峰出行 1500 笔/秒刷卡并发访问,且随着北京市日均 800 万人次的公交出行乘坐量,每日产生的上下车刷卡数据就能高达 1600 万笔,预计未来两年将会产生百亿级的数据存储和访问需求,这种数据高楼构建高可靠性系统架构地基的难度可想而知。

       

      传统的 IT 架构显然很难支撑,它既缺少可靠的数据传输机制,同时也缺少有效的对硬件设备安全管控的机制,以及对设备远程监控和管理的能力,难以应对早晚高峰高达每秒上千的并发量级,无法解决传统公交管理上实时监控、实时调度、基于数据进行支撑决策的难题。

       

      新的市场需求催生着更为强大的技术手段的出现,启迪公交需要一个强大的技术伙伴合力开展研究。

       

      经过慎重抉择,最终启迪公交从市场上诸多数据库产品中选用了阿里云 PolarDB-X 分布式数据库,构建云上全部业务系统。据周国礼介绍,他们做出这一选择的主要原因是 PolarDB-X 技术经历过多年阿里巴巴双十一考验,能够有效地满足业务超高并发以及海量数据存储的需求,还可通过选用多可用区部署满足同城容灾诉求,以及使用在线变配能力解决业务高峰时段的弹性诉求。

       

      基于以上诉求,双方快速达成了合作。

      搭载 PolarDB-X 云原生分布式技术,启迪公交实现全业务系统上云

       

      在乘客看不到的角落,新系统的开发上线总是会面临着诸多困难,例如如何才能在不影响居民正常出行的情况下快速完成数万台刷卡机的替换。“2018 年的时候,启迪公交面临在不影响道路公交运营的情况下,为全市 2 万多辆公交车替换 6 万+机具的难题。”启迪公交研发总监王前说到。

       

      以当时的情况来看,这似乎是一个“伪命题”,就在众人一筹莫展之际,阿里云云原生分布式数据库成为攻克难题的关键钥匙。

       

      “如果采用在场站等候的方式,至少需要几个月的时间才能完成全部机具的更换,而基于 PolarDB-X 云原生分布式的快速部署能力,我们迅速开发和上线了机具辅助安装系统,通过安装人员 GPS 数据与车辆 GPS 相结合,实现了人找车快速部署机具,更换新机具的效率大幅提高,短短 1 个半月的时间,就完成原本要 1 年时间才能完成的机具更换工作。”

       

      除此之外,PolarDB-X 云原生分布式技术也成功支撑住了北京公交系统庞大的数据高楼,不仅保障了北京日均 800 万人次乘车,也支持了 6 万多台车载刷卡机的设备连接和管理,同时更顶住了大型节假日、重大赛事下公交出行客流峰值对底层核心系统带来的严峻挑战。

       

      “基于阿里云原生分布式数据库 PolarDB-X 产品,我们构建了包括支持扫码、刷卡、第三方支付、票务管理的核心业务系统,在帮助公交系统实时掌握道路运行情况的同时,也帮助乘客更便捷进行线路查询。 ”携手阿里云,启迪公交为北京市民交出了一份满意的答卷。

       

      当被问及数据化给企业带来的直观感受时,王前以票务管理工作台为例进行了说明。

       

      作为公交内部的核心业务系统,票务管理工作台不仅需要承担与票务相关的业务,还要能够通过累计的业务数据进行分析,实现科学合理的指挥公交的核心业务,在支持城市公交正常运作上有着举足轻重的作用。

       

      “以往公交集团获悉路上具体有多少辆公交汽车在运行,也没有办法知道这些公交车的一个状态,没有办法快速调度车辆。当我们采用了 PolarDB-X 构建票务管理工作台后,通过用户检录数据就可以实时同步到阿里云原生数据仓库 AnalyticDB,继而分析出实时客流,结合公交汽车机具上传的扫码信息进行实时统一分析,支持指挥车辆调度,助力场站调度人员更加快速地进行业务策略调整,实现更加合理的调度排班方案。”

       

      比如说在重大节假日时,以往公交系统排班和运力调配往往是根据经验来进行操作,在某些地点突发客流激增时会出现运力不足、道路拥堵的情况,搭载了 PolarDB-X 的公交系统可以实时了解客流分布情况、运力情况,以便及时对客流激增地区补排车辆。

       

      基于云原生分布式数据库 PolarDB-X 方案构建云上业务系统


      当下,启迪公交已逐步将各个业务系统部署到了阿里云平台上,包括北京公交 App 的后端业务服务处理,刷码刷卡检录数据的采集和上传、合单、支付结算、清算、票务等等。阿里云平台统一提供云资源的分配、调度和支撑,包括系统的性能调优、梳理业务和技术架构、优化软件代码、协调内外部资源进行统一的研发、测试等一系列工作。除此之外,系统的整体安全性也由阿里云来支持配合。

      TPS 数高达 1.4 亿?云原生分布式数据库 PolarDB-X 的技术特性

       

      作为承载了北京公交最为核心和基础部分的数据库,云原生分布式数据库 PolarDB-X 方案到底有哪些优势和特点?



      从三种当前常见的数据库架构中便可窥一二,如上图所示,从左至右依次是单机数据库、共享存储数据库和分布式数据库。

       

      单机数据库的计算资源和存储资源易受到单个节点的容量限制。共享存储数据库将开源数据库(如 MySQL)的底层存储替换成共享的分布式存储,容量的可扩展性得到了显著提升,可以做到完全兼容开源数据库,但由于其上层组件保留了单机数据库结构,仍然受到单个节点的性能限制。而以 PolarDB-X 为代表的云原生分布式数据库架构,所有节点之间互相不共享资源,节点间通过网络进行通讯,无论是存储还是计算资源,只要添加机器就可以了,具有良好的可扩展性。由此可见,作为一种分布式数据库架构,PolarDB-X 的优势从一诞生便非常显著。

       

      此外,PolarDB-X 一直在朝着一个伟大愿景发力,即把各种架构的优势结合到一起,包括 Sharding on MySQL 的简单轻量,NewSQL 的高扩容,Cloud Native DB 存储容量的弹性扩展。其具有 6 个显著特点:

       

      • 高可用。基于 Paxos 协议,数据强一致;少数派节点故障下数据不丢、不停服;RPO=0 RTO<30s。

      • 高兼容。MySQL 兼容,支持全局事务,二级索引;主流国产操作系统和芯片互认证;全局 binlog 日志,兼容数据库上下游生态。

      • 高扩展。水平扩展,按需在线扩缩容,不停服;PB 级海量存储能力,单实例突破 256 节点(真实业务);千万级并发,可抵御双 11 流量峰值。

      • HTAP。智能读写分离,保障 TP 流量的稳定性;MPP 并行查询,基于只读副本保障查询隔离;基于全局 TSO 时间戳,保证多副本的一致性读写。

      • 极致弹性。存储资源池化,自动按需伸缩,按需付费;扩容不迁移数据,突发流量支持快速升配。

      • 开放生态。拥抱 MySQL 开源社区,代码自主可控;闭环生态工具支持,DTS/DBS/DMS;产品架构简单开放,社会人才密度高。

       

      作为阿里云自主研发的云原生分布式数据库,PolarDB-X 可谓是身经百战。其采用分布式 SQL 引擎与存储引擎,专注解决海量数据存储、超高并发吞吐,历经各届天猫双十一及阿里云各行业客户业务的考验,在 2020 年双十一期间更是支撑了 58.3 万笔/秒创建订单的峰值,数据库处理 TPS 数高达 1.4 亿。

       

      基于以上分析,PolarDB-X 能够承载住北京公交系统如此庞大且繁杂的数据压力,也就并不足为奇了。

       

      在和启迪公交的合作中,PolarDB-X 将上述的 6 大特色运用到了极致,其以云原生一体化架构设计底层,采用多副本的高可用架构最大限度保证系统的可靠性,为北京公交 APP 端提供稳定的用户体验,同时也为公交票务管理实时大数据分析运行提供着重要的数据支撑。 

       

      “公共交通出行关乎整个城市的核心基础保障,阿里云原生分布式数据库 PolarDB-X 方案极大地提升了公交运营效率和服务水平,助力启迪公交打造北京公交智能化业务系统,为首都人民提供了更加绿色和便利的公交出行服务。新基建时代下,未来希望我们能够更加紧密地结合,助力城市公交系统的智能化发展百尺竿头更进一步。”

      2021-02-03 15:463784

      评论

      发布
      暂无评论
      发现更多内容

      Jenkins Agent 的低成本高弹性实践

      玄月九

      Kubernetes jenkins 弹性 降本 Kaniko

      上篇:技术架构的设计方法

      阿里巴巴中间件

      阿里云 中间件 技术分享 技术思考

      从原理到操作,让你在 Apache APISIX 中代理 Dubbo3 服务更便捷

      阿里巴巴中间件

      阿里云 开源 云原生 dubbo

      SAP UI5 的自动化测试套件页面的开发步骤介绍

      汪子熙

      JavaScript SAP SAP UI5 5月月更 SAP前端开发

      Angular 项目里使用 scss 文件的一些技巧

      汪子熙

      typescript 前端 前端开发 angular 5月月更

      下篇:技术 Leader 的思考方式

      阿里巴巴中间件

      阿里云 中间件 技术分享

      DecoratorPattern-装饰者模式

      梁歪歪 ♚

      设计模式

      架构实战营-模块2作业

      Elvis FAN

      Crypto们纷纷聚焦“Building platonic”,PlatoFarm是解决方案吗?

      股市老人

      Docker下RabbitMQ四部曲之四:高可用实战

      程序员欣宸

      Java Docker Docker-compose RabbitMQ 5月月更

      微信朋友圈高性能架构设计

      地下地上

      架构实战营

      [go]mongo工具类

      林逸民

      Go mongo goalng-underscore

      Flutter 利用 StreamProvider 一起玩 WebSocket

      岛上码农

      flutter ios 前端 安卓开发 5月月更

      一个程序员眼中的元宇宙

      总师

      程序员 元宇宙

      Vue框架学习笔记【day二】

      恒山其若陋兮

      5月月更

      「AuthTalk」今晚 7 点直播|从制造到“智造”,探索制造企业破局之道

      Authing

      云原生 身份云 制造业 Idaas

      [Day47]-[递归]-基本计算器

      方勇(gopher)

      递归 LeetCode

      WPF|快速添加新手引导功能(支持MVVM)

      沙漠尽头的狼

      C# WPF 新手引导

      MSVC编译环境介绍

      Loken

      音视频 5月月更

      跨平台应用开发进阶(十八) :全局异常日志处理方案探究

      No Silver Bullet

      5月月更 异常日志 处理方案探究

      BuilderPattern-建造者模式

      梁歪歪 ♚

      设计模式

      OKALEIDO简化玩家进入NFT的门槛,做NFT界的UNISWAP

      股市老人

      RocketMQ 5.0: 存储计算分离新思路

      阿里巴巴中间件

      阿里云 开源 云原生 消息队列 Apache RocketMQ

      Feign 共享登录信息进行请求

      Java Feign

      架构实战营模块二作业:微信朋友圈高性能复杂度

      融冰

      ProxyPattern-代理模式

      梁歪歪 ♚

      设计模式

      leetcode 540. Single Element in a Sorted Array 有序数组中的单一元素

      okokabcd

      LeetCode 查找

      密码学系列之:PEM和PKCS7,PKCS8,PKCS12

      程序那些事

      密码学 程序那些事 5月月更

      # 继续前行github star突破8k即时通讯IM开源项目OpenIM版本发布计划

      Geek_1ef48b

      如何提高技术部的信任值

      石云升

      项目管理 职场经验 5月月更 跨部门沟通

      AdapterPattern-适配器模式

      梁歪歪 ♚

      设计模式

      从“望车兴叹”到实时公交查询,是什么支撑起北京日均800万人次的公交系统?_数据库_马红伟_InfoQ精选文章