【直击DTCC】业务量暴增50倍之易到数据库成长烦恼

2023-11-06 19:20

本文主要是介绍【直击DTCC】业务量暴增50倍之易到数据库成长烦恼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【IT168 技术】最近,易到用车的新闻很多也很劲爆,获得网约车牌照,被消协约谈,创始团队集体辞职,被爆资金匮乏等等,危机不断。但这些都与技术无关,也不能否认易到用车曾经的辉煌,至少在2016年7月,易到用车日订单破百万,仅次于滴滴。业务量的暴增让易到的数据库压力剧增,也经历了成长的烦恼,而这个过程中易到数据库演化/迭代的过程和思路,相信对DBA们还是颇具参考价值。

  

5月11日,第八届中国数据库技术大会(DTCC 2017)在北京国际会议中心拉开帷幕。作为国内数据库与大数据领域最大规模的技术盛宴,本次大会吸引了近5000名IT人士参会。

  

在11日下午的分会场,来自易到用车数据库总监徐海鹏分享了主题为《年业务量暴涨50倍之数据库成长烦恼》。


▲易到用车数据库总监徐海鹏

  

徐海鹏,有着17年数据库部门管理经验,先后任职于美国DoubleClick、加拿大保险局,后因为情怀和机缘, 回到中国并出任易到数据库总监。

  

早期的易到作为共享出行的先行者,从2015年的日均2万单迅速发展到去年巅峰时期的百万单, 经历了50倍的暴涨。这是一个典型的互联网公司高速成长期系统演化案例。易到用车如何用非常有限的资源, 通过引入各种成熟的方案, 在短期内取得巨大的提升的?

  

徐海鹏在演讲时说,最初的易到面对业务量暴增,应对方式很简单粗暴,靠不断堆砌服务器来提升数据库的处理能力。而易到初期的系统架构也非常简单,3级系统分别是app层,服务层,数据库层。这种模式下带来的问题是,数据库高度耦合, 成为系统瓶颈。难扩展,垂直扩展的路走到尽头。系统容易产生雪崩效应。主从复制的性能低下, 容易产生高延迟, 影响系统可用性。

  

因此,最终为了解决这些问题,徐海鹏带领团队痛下决心,拆。其过程主要分为二个阶段。

  

而第一阶段,首先进行的是解耦、拆分。对业务模块解耦,引入Redis缓存、MariaDB、数据库水平扩展、分库分表。其中数据库水平拆分,最高1024个分库和分表。按用户ID、司机ID和汇总表三个维度分库,新系统提供的接口与老系统完全一致新老系统并存,通过Proxy分流,逐步将流量切到新系统,最终新系统完全取代老系统,实现平滑升级。

  

经过第一阶段解耦、拆分效果是显著的。


▲第一阶段成果

  

第二阶段,全面优化主要包含:冷热数据分离、数据抽取优化、精细化数据库管理、高可用实施、NoSQL应用。

  

冷热数据分离,一级存储使用SSD磁盘的OLTP, 3个月数据。二级存储使用SAS的低成本数据库,保存2年的交易数据和日志。三级存储压缩文件存储系统,保存需要永久保存的交易数据。通过自己开发的数据库脚本,来每天退出线上数据。

  

高可用实施,经过多个方案的比较, 采取MHA+keepalived 方案,可用性标准从3个9提升至4个9。


▲第二阶段成果

  

最后,徐海鹏强调,作为DBA不能等到出现数据问题, 才去排查,那个时候往往已经造成了较大后果,需要根据数据间的一致性逻辑, 进行校验及时发现纠正问题。

这篇关于【直击DTCC】业务量暴增50倍之易到数据库成长烦恼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/358551

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom