云场景实践研究第70期:秦苍科技

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文主要为大家分享了秦苍信息科技HTPA型数据库产品在现实中的落地应用,企业级数据库架构设计中遇到的问题以及基于云数据库运维的思考。
更多云场景实践研究案例,点击这里: 【云场景实践研究合集】联合不是简单的加法,而是无限的生态,谁会是下一个独角兽
本文主要为大家分享了秦苍信息科技HTPA型数据库产品在现实中的落地应用,企业级数据库架构设计中遇到的问题以及基于云数据库运维的思考。

采用的阿里云产品
阿里云HTPA型数据库
阿里云云效(RDS)
阿里云HybirdDB
阿里运数据管理的工具DMS
阿里云DRDS
阿里云DTS
阿里云云监控

为什么使用阿里云
使用阿里云RDS可以开箱即用并且可以弹性扩容。随着秦苍业务量的增加,可以轻松地升级,比如硬件上的升级,以及外围辅助的升级等。

关于秦苍 
上海秦苍信息科技成立于2014年3月,目前大概遍布了全国的300个城市。秦苍科技的两个主要产品,一个是买单侠,主要针对的是年轻蓝领客户群体,提供一些消费场景下的分期金融服务。另一个产品主要目标用户群体是年轻的女性白领,主要为她们提供一些医疗美容的消费分期金融服务。目前秦苍科技公司的用户数大概为400多万,每个月新增大概20万用户,每天日活用户大概是在百万左右。秦苍科技目前做单的模式并没有完全放在线上,还是偏传统一点,会与线下的手机门店、医院、电动车销售商等这些商家合作,通过线下入口而不是直接通过APP进行操作可以说秦苍科技的商业模式还是比较偏传统的。

秦苍科技的技术栈主要是用的后台技术是基于Spring Cloud的微服务架构,部署则采用的是Docker技术,当然用的是阿里云的容器服务。系统最开始的数据库是单体架构的,所有东西都放到一起。而现在数据库有将近200个,并且对于数据库也做了拆分,目前线上的数据量已经达到了3 TB。 目前所使用的数据库架构主要采用了阿里云RDS。

面临的问题
数据库架构演变的过程当中遇到了很多问题,最初因为设计的问题,所有的数据是放在同一个实例库下,所以当出现比较高的并发时就会导致实例的CPU爆掉,进而导致数据库服务不可用。这就是所面临的问题,也是这两年时间秦苍一直在做的事情——迁移、解耦和拆分。在这个过程中,秦苍遇到了异构数据迁移的问题。另外随着公司业务的发展,规模的不断变大,在整个数据库运维当中出现了效率上的问题,主要是现在有大量的SQL审核工作要做,而且有频繁的生产发布,而每次发布都要等到比较晚的时间比如业务的低谷期来发布。还有一些高频的数据查询和变更需求。主要是研发人员需要去定位Bug要获取一些数据。在开始数据规模比较小的时候使用的是比较粗暴的做法也就是人肉支撑。当发展到现在的量级,现在有3个研发中心,300多个研发人员,而DBA只有四个人,需要从DevOps角度考虑如何去支撑这么多的用户。 
f07b678b06d69f0790bb5d9d679440466cbd037a

为什么选择阿里云?
秦苍科技的所有的技术全部选择放在阿里云,包括了对于数据库的选择。使用阿里云RDS比较直接的好处就是它可以开箱即用并且可以弹性扩容。随着业务量的增加,可以轻松地升级,比如硬件上的升级,以及外围辅助的升级,还可以非常方便地实现数据迁移,后来阿里云还提供了DTS服务,可以轻松实现异构数据迁移。

使用阿里云后的数据库架构之路
秦苍科技最早数据库的架构设计,是一个比较简单的单体架构,all in one,所有数据全部放在一个库里。而且随着数据量的增加,OLTP都达到千万级,对于数据可用性无法保障。随着业务的发展,后台服务要进行微服务化架构,进行服务改造。数据库应该尽量配合后台进行微服务化的改造,那么如何进行微服务拆分呢?最后采取分组分层的方法,对于整个数据库进行架构的调整。
分层就是根据业务的需求特征进行分类划分主题域,与仓分析建模的概念相似。将数据库分成不同的层次,分组就是对主题域数据进行进一步抽象和归纳,这可能会包含多个实例或者多个库。而针对一些业务量特别大的场景,也有使用阿里云DRDS实现水平的分表分库方案。
在分组分层时,为了节省资源和方便管理,把不同的数据库暂时放在同一个实例上,但数据库的账号却是完全隔离的,只拥有访问某些数据库的权限。随着业务量的增加,出现性能问题,就可以基于阿里云DTS数据迁移服务,把数据拆分开迁入到性能比较好的实例上去。
秦苍科技同时引入了阿里运数据管理的工具——DMS,主要解决线上实时数据的查询问题,能够做到安全的管控。另外对大数据平台计算之后的数据也做了集中的管控,可以为线上提供一些数据支撑。
微服务分布式架构演变过程中少不了数据迁移,数据迁移必然会涉及到对老模型分析、新模型设计以及新老模型之间的映射和转码等问题,所以迁移之前要做好充分准备。首先要制定迁移总体方案,包括迁移准备、实施步骤、关键点控制、应急预案等。秦苍科技借助阿里云DRDS中间件实现对核心表的水平拆分。在上线过程当中, 借助阿里云DTS数据迁移和订阅服务大大降低了停机时间并实现了应急预案。 

基于云数据库运维的思考
将所有的东西放在阿里云上使秦苍科技的工作发生了本质变化。第一个是工作前置化成为可能,使DBA向DA转变成为了可能,从之前数据库运维管理到数据的应用。向数据生命周期管理的方向靠拢是目前一个工作重心,系统有生命周期,数据一样也应该有生命周期。数据的生命周期从最初的设计到发布、维护,再到下线。而现在好多数据在设计时没有考虑它的生命周期,数据很难产生最大价值,如果把一个比较小的系统设计成高并发或者高可用的方案,会造成额外的运维和经济成本。
下图对整个DBA行业做了分类,大概分为运维DBA、应用DBA以及业务DBA。每个角色的工作重点各不一样,运维DBA更加偏重于数据库的安装和配置、HA高可用、备份容灾以及升级扩容等,这些已经被云做掉了;应用DBA是秦苍当前所处的阶段,主要偏重于数据库相关技术选型、容量规划、性能优化和运维自动化等,其实阿里云也在将该部分工作实现自动化和智能化,包括CloudDBA、DMS、DTS等外围增值服务, 推动秦苍从应用DBA转向业务DBA。目前秦苍也在向这方面去靠拢和思考,后面的工作重心会更多地放在数据库的架构以及数据的应用上,让数据产生更多的价值,为业务提供数据支持。 
c40711be3a83c9553718f6d48c7d18dbee445a92

关于上海秦苍信息科技的更多实践详情: 买单侠数据库架构之路 
原文发布日期:2017-11-02
云栖社区场景研究小组成员:董黎明,仲浩。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
相关文章
在uni-app中使用element-ui
在uni-app中使用element-ui
1165 0
|
7月前
|
敏捷开发 存储 数据可视化
产品经理的效率秘籍:科学梳理产品需求
产品梳理旨在解决信息混乱、需求不清等问题,使产品架构清晰、目标明确、执行高效。通过厘清产品定位、优化需求管理、提高执行效率和加强团队协作,企业可以减少沟通成本,提升整体效率。关键步骤包括确定产品架构、规范需求管理和建立任务管理机制。借助工具如板栗看板,可实现需求可视化、高效任务拆解及顺畅的团队协作,确保产品梳理顺利落地。定期复盘和优化,引导团队使用协同工具,并加强跨部门协同,是成功的关键。
|
存储 Java
构造String问题之在JDK 9及更高版本中,直接访问String对象的coder和value属性,如何实现
构造String问题之在JDK 9及更高版本中,直接访问String对象的coder和value属性,如何实现
125 0
|
存储 内存技术
A-B罗克韦尔 6181P-00N2HW71AC 非显示型计算机
A-B罗克韦尔 6181P-00N2HW71AC 非显示型计算机
|
Ubuntu Linux Windows
Install KDE Plasma and XRDP on Ubuntu Server
Install KDE Plasma and XRDP on Ubuntu Server
458 0
Install KDE Plasma and XRDP on Ubuntu Server
|
C++
39.【C/C++ 全局变量和局部变量 (详解)】
39.【C/C++ 全局变量和局部变量 (详解)】
133 0
|
消息中间件 存储 Java
一.RocketMQ极简入门-MQ概述&RocketMQ安装
RocketMQ极简入门-MQ概述&RocketMQ安装
|
JavaScript 前端开发 Java
javaScript实战项目之动态表格【文末附源码】
js中BOM实战项目之动态表格 🍅 Java学习路线:搬砖工的Java学习路线 🍅 作者:程序员小王 🍅 程序员小王的博客:https://www.wolai.com/wnaghengjie/ahNwvAUPG2Hb1Sy7Z8waaF 🍅 扫描主页左侧二维码,加我微信 一起学习、一起进步 🍅 欢迎点赞 👍 收藏 ⭐留言 📝
268 0
javaScript实战项目之动态表格【文末附源码】
|
算法 Java
JVM02——JVM垃圾回收与性能调优(下)(一)
6.垃圾回收 6.1 判断垃圾 6.1.1 引用计数法
JVM02——JVM垃圾回收与性能调优(下)(一)