GO2应对千万级访问量的解决之道

来源:互联网 发布:口取纸打印软件 编辑:程序博客网 时间:2024/05/02 04:44

1,  背景:

        GO2 是一套完整的用车解决方案,它详细记录了车辆位置、用户驾驶行为等信息,为用户更好的了解自身驾驶习惯及定位车辆提供了帮助

        所有的数据都来源于装载在用户车辆上GO2设备,它会定时发送收集到数据到云端,然后用户通过GO2 APP调用云端API获得相应的数据。

        GO2自上线伊始就实现了快速的增长,随着访问量及数据量 的提升,最早的架构已无法承载现有的业务量,因此我们对重新设计了架构以

        适应业务需求,以下就是我们应对方案及架构演变的介绍。

2,  架构演变

   (1) 原始阶段

        -流量:<100W

        -架构:双机负载,flask+python

        -具体实现及原因:

            1,在设备与接口服务间添加代理服务,降低链接次数

            2,使用nginx做负载均衡,提高Server可用性

            3,使用单台mysql服务器,项目初期降低成本和运维成本

        -架构图:

   

           -问题:

              1,存储的设备数据延时较大

              2,并发能力弱

  (2)  成长阶段

         -流量:<5000W

         -架构:业务分离,Server集群,tornado,MySQL读写分离

         -具体实现及原因:

            1,创建设备独立Server集群,为加快处理速度及并发能力,采用tornado异步非堵塞框架及celery任务队列(MQ:redis)

            2,将使用率高的数据放入redis中,提高查询效率

            3,创建MySQL读写cluster,减轻数据库压力

         -架构图:

 

3,未来规划    

        随着业务量持续的增长,我们不得不未雨绸缪,将不断加大投入、优化架构、提高效率:

            -服务划分:SOA化

            -统一访问控制:KV集群

            -分布式数据库:Hbase

            -快速部署、提高伸缩性:Docker


0 0