从Oracle到MySQL,余额宝云实践分享
原文链接:http://www.csdn.net/article/2013-11-/2817426-interview-financial-case-yuerbao-aliyun07
余额宝、百度百发、腾讯财付通谋划的互联网理财工具,吹响了互联网对金融行业的进军节奏。而后,网易、和讯、京东商城、苏宁云商等二线实力企业纷纷涉水。另一边,一众金融精英也在频频转换思路,不仅银行网络中心从副行长牵头的服务部门一跃成为行长主抓的业务部门,而且高调发布互联网金融理财产品与携手互联网企业并行,力图实现金融互联网的新价值。一时之间,互联网金融热潮涌动,无数专家多视点多维度进行了深入剖析,数十篇业内深度文章从产品、渠道、市场与趋势等全面解析互联网金融本质。
天弘基金创新支持部总经理樊振华(左),阿里云金融云服务架构师白培新(中),深圳市金证科技股份有限公司副总裁徐岷波(右)
但汹涌的背后,是鲜为人知的技术实战。从传统封闭的IOE格局迁移到更加动态扩展、成本更经济的云平台中,要跨越的障碍实在不少。即使在云计算发源地——美国,囿于安全性、合规性和风险等方面的挑战,金融业虽然与AWS接触频频,但还没有走出实质性的那一步。到了国内,习惯有标杆可以模仿的我们,是继续等待?还是走出新路?
好在,5个月,开户用户超过1600万,货币基金累计申购超过1300亿的余额宝在市场上砸出了声音。而我们一直极为关注的,余额宝一期二期技术迁移实践经验也终于浮出水面。余额宝的背后是四方力量:支付宝、天弘基金(基金合作方)、金证股份(软件供应商)和阿里云,在2013年阿里云开发者大会中,记者有机会直面其中三位核心人士:天弘基金创新支持部总经理樊振华,深圳市金证科技股份有限公司副总裁徐岷波,阿里云金融云服务架构师白培新,却发现:经验,比我们想象的要复杂;过程,却比大家想象的要简单。
一期“IOE”,二期要“入”云,原因何在?
外界看待余额宝是个整体,但没想到在技术实践上,余额宝是有一期和二期工程的。樊振华对CSDN云计算说:“最初余额宝与互联网的尝试,在整个基金行业也是第一次。完全是摸着石头过河。为了稳妥,我们在一期的时候是采用传统IOE的架构,总投资400多万。但是没有想到数据量和交易量会增长幅度如此大,远超平台承受能力,以至于到了余额宝二期时,如果还采用IOE的模式,初步估算至少需要投入5000万(主系统+同城灾备+异地灾备等)。再加上后期人力和周期服务,要三个月完成目标,这将是不可承受之重。”
怎么办?要知道,由于安全、合规和风险等方面的考虑,金融对公有云很抵制。但当余额宝6月13日上线,6月17日召开新闻发布会之后,天弘与支付宝一起来评估是否在11月的时候支持“双十一”大促时,却发现:如果支持,那么按照2012年的数据,余额宝平台所承受的压力要骤增数十倍甚至数百倍,估算约为1亿客户数,3亿笔交易,2.5小时完成清算。采用当时的IOE架构,投入将要增加数千万,设备、软件之外,甚至是余额宝一期所用的机房也完全无法满足需求。
不仅如此,余额宝发布之后不到两个月,就为天弘基金带来百亿级别的资金增量及百万级活跃用户,平均每月规模增长100亿元左右,天弘增利宝已经成为国内用户数最多的货币基金。如此增长之后,保证安全+降低成本+为未来业务提供弹性扩展架构已经成为必须。
如果说6月13日是一期的截止时间点的话,那么“二期,是从7月初开始开发的”。没有先例,是否就需要继续等待下去?没有先例,是否要继续投入上千万去扩容和升级?没有先例,是不是可以等等看,期待国外会有案例给以启迪和复制?可市场会给予大家等待的时间么?
“余额宝迁移到云平台上,已经成为我们自发的需求。当然,也别无其他选择。”樊振华说。
下定决心,决策过程反而没有想象中那么复杂了。“评估系统上线,只有三项标准:成本评估、安全评估、架构扩展评估。尽管国际上,金融行业还也没有采用公有云平台的先例。这不仅是单纯的技术障碍,还是意识、理解、勇气和监管要求等复杂交织的结果。但市场逼着我们向前,所以决策并没有大家想象的那么复杂。”
事实证明,“没有选择的选择,到后来却发现是最好的选择。”樊振华笑着对CSDN云计算的记者说。
去IOE,最难的是去Oracle数据库
要将曾经根植在IOE的软件迁移到阿里云上,开发、调整、优化必不可少。但时间如此紧张(最多就3个月),那么,一开始,打造合作多方的信任关系自然至关重要。
“余额宝本身拥有极强的互联网属性,数据量大、业务量大、响应速度要求高。时间这么紧,天弘、金证和阿里云、支付宝,简单沟通后立即投入了启动工作。也因为时间太紧,所以我们也没有调研的时间,更没有可调研的成功案例。可以说,基于多方的信任,资源共享和无所畏惧,是我们走到一起的根本原因。”樊振华如此表示。
去IOE,硬件相对容易些,最难的是与应用密切相关的数据库。
Oracle数据库向MySQL转换的时候,连最简单的批量插入,由于对于底层理解的不同,都有很多问题。在Oracle中,开发者是不需要关心底层问题的,但在MySQL则不同,要关注很多。批量提交,事务开启还是关闭,都需要人为干预。
数据库解决的问题是插入、删除修改。所以迁移的时候,这些问题需要一个一个去研究去解决,然后复制过来一个一个测试,开发阶段的测试工作量可想而知。业内认为MySQL无法支撑大数据清算,这是有根据的。但在彻底了解MySQL之后,天弘感觉迁移就如同修路一样,原来基于IOE是条路,而基于云架构,一条不行,可以修50条路,100条路,总归是可以化整为零,用水平化、分库分表等方式,并行化思路来解决,用小单位来解决问题的。虽然在迁移中,对中间层的要求更高,但是可行的。
白培新详细介绍了一些技术难点。在数据库切换过程中遇到一些比较困难的点,比如说Oracle集中管理强,MySQL单机的能力显然要弱很多。余额宝迁移到阿里云上之后,要考虑双十一对于天弘基金系统吞吐量的压力。在评审架构后,通过对性能进行预估,采用了50个MySQL实例的方式。但需要天弘将业务逻辑、应用层所用的数据库通过一个维度来进行水平拆分,然后将这些业务平均分配在这50个MySQL实例上,以保证每一个MySQL的性能负载比较平均,从而实现用50个MySQL来支撑的大业务量。阿里在去IOE方面实践的时间长,有经验,阿里云底层专业的DBA团队和数据库专家都参与到项目中,共同和天弘来做拆分方案。而后,在从Oracle平台到MySQL的过程中,金证承担了主要的迁移工作。
徐岷波也对CSDN云计算表示:“金证在金融行业有20年的历史了,客户广泛。由于业务需要,金证对DB2、Sybase、Oracle、SQLServer这样在金融行业应用较多的数据库都有应用。这也使得金证在开发新系统的时候,一直非常关注‘跨平台特性’,尽可能不要用到哪一种单一数据库的很特殊的功能。所以金证开发的系统,完全没有采用存储过程的模式,所有的应用和业务逻辑都是在中间件这一层,于是所有的业务( 数据管理、业务服务等,如现在用到的PA和直销,未来用到的交易、管理、甚至数据仓库这样的业务系统等)都可以放在应用服务器上,数据库就是存储的功能。这也使得从余额宝的Oracle到MySQL的切换数据库比较容易实现。除此以外,余额宝使用的中间件也是金证开发的,原有软件架构非常好,虽然第一次接触MySQL,但跨平台很容易实现迁移。但如果系统利用了大量存储,且大量业务是跑在数据库上,中间件也是用的Oracle的,那么应用移植其实就非常难,因为每一种数据库的存储过程的差别是非常大的,现在来看其实有很多有利的因素是我们各方的配合达到现在这样的效果。”
事实上,单纯从技术上看,余额宝是个性且不易复制的。一方面,金证的直销系统和中间件都是自主开发的,比较可控;另一方面,业务系统对底层的业务依赖主要是在应用层,整体的改造难度较小。不过即使如此,有了多方汇聚的极强技术实力,阿里云还是和金证一起,用两天时间来将金证系统中所有SQL语句都过了一遍,大概是有几十万条SQL语句,才彻底解决一些性能优化的问题。
好在,迁移到云上之后,白培新表示:“在预测环节,实时并发数,要求为3000TPS(每秒可以开3000户),但测试结果是可以开到5000,极限容量可以到12000TPS。”徐岷波进一步补充说:“50个MySQL的实例完全可以支撑余额宝的双十一峰值业务,并且在没有做过任何优化的情况下,还留出了很大余量。如果经过系统调优,以过去的工作经验来看,在现有的设备和硬件网络环境下,性能翻一倍应该是正常的。”
除此以外,樊振华对安全也很满意:“在测试中,阿里云提供的数据库服务主备切换时,速度非常快。再加上我们化整为零的策略,全部热插播硬盘,使得数据的安全性得到了很大的满足。一直到现在,都没有出现过任何问题。坦白说,在基础平台安全方面,阿里云已经比较成熟了,尤其是在应对高流量、大数据量冲击的时候,要比很多中小基金自己的系统稳定和安全很多。”
据悉,每一次系统迁移的演练是需要36个小时,反复演练多次,确保万无一失,才在9月份正式做了切换。
下一步,大数据挖掘与分析
从IOE向云中迁移,余额宝的项目团队作出了非凡的努力。
樊振华说:“天弘投入了10个人,金证投入20多人,阿里云(主要是专业金融集群)投入了50多人,支付宝投入了数十人,就这样,组建了我们的百人技术团队。项目组从7月闭关到9月底,每天从早上8点开始一直到晚上12点,根本没有周六周日,很辛苦,非常辛苦。而由于项目开发中出现了很多问题,非常多的问题,争吵、低落、抱怨都是常态,甚至一度整个团队都觉得项目失败的概率很高,几乎处于崩溃边缘。但好在几位项目带头人非常有信心,知道最高的风险点在哪里,我们和金证、阿里云从架构设计到技术迁移、业务实现,一点点来抠,一点点地解决问题。四方合作,忘我的奉献和投入让我们终于拿下这个如今成为行业典范的项目。现在余额宝的系统架设在300余台云主机上,使用了阿里云的ECS+RDS+SLB+云监控等多项服务。 ”
“真正去了IOE,发现没有想象中复杂。”几乎是每位组员的感受。
一直很低调的余额宝,在技术上更加低调,老老实实做事。据悉,二期整个团队都是封闭的,“我们做什么外面基本都不知道”。在切身体验了互联网金融“用户多,数据量大;分时段爆发增长;用户体验要求很高”的特性之后,下一步,天弘希望能够联合更多伙伴,建设数据中心、数据仓库,并继续完善安全监控,争取在数据挖掘和分析方面,提供更多“非高大上”的产品以及创新的服务。
从Oracle到MySQL,余额宝云实践分享的更多相关文章
- WOT干货大放送:大数据架构发展趋势及探索实践分享
WOT大数据处理技术分会场,PingCAP CTO黄东旭.易观智库CTO郭炜.Mob开发者服务平台技术副总监林荣波.宜信技术研发中心高级架构师王东及商助科技(99Click)顾问总监郑泉五位讲师, ...
- Hangfire项目实践分享
Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...
- Dropbox可伸缩性设计最佳实践分享
http://www.infoq.com/cn/news/2012/11/dropbox-scale-bestpractice Dropbox的运维工程师Rajiv,跟大家分享了可伸缩性设计的最佳实践 ...
- MySql主从配置实践及其优势浅谈
MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...
- 数据库笔试面试题库(Oracle、MySQL等)
数据库笔试面试题库(Oracle.MySQL等) 版权声明:版权所有,欢迎分享本文,转载请保留出处,否则追究法律责任,谢谢合作. 注:本文将持续更新,可关注作者微信公众号以便获得最新笔试面试资料. ⊙ ...
- Oracle和MySQL分组查询GROUP BY
Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别? 答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段 ...
- oracle与mysql
『创业团队最佳选择是Oracle+MongoDB,而不是MySQL』,当深蓝在QQ群里抛出这样的观点的时候,就像是在马蜂窝里丢了一串鞭炮一样热闹起来. 创业者甲: 开什么玩笑,Oracle要收钱的,太 ...
- mysql性能测试--sysbench实践
mysql性能测试--sysbench实践 Sysbench 业界较为出名的性能测试工具 可以测试磁盘,CPU,数据库 支持多种数据库:oracle,DB2,MYSQL 需要自己下载编译安装 建议 ...
- oracle、mysql、db2三大数据库分页方法的整理
最近项目中经常会涉及到代码中支持三种数据库的分页的功能,自己整理了关于三种数据库的分页的写法,分享给大家,以供大家使用.希望能帮到更多的码友! 先来看一个代码片段: String page = ala ...
随机推荐
- ZOJ 3983 - Crusaders Quest - [DFS]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3983 题意: 给出一个长度为 $9$ 的字符串 $s$,且 $s ...
- Apple Pay的实现
首先是搜到的大神写的全套知识点:http://www.jianshu.com/p/8d7b86f1d142 http://www.cnblogs.com/dashunzi/archive/2016/0 ...
- JMeter(十)-正则表达式关联
jmeter中,接口自动化的关键在于参数关联.比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?下面就以实际的例子来仔细说一说 1:登录接口 这里有一个实际的登录接口, ...
- 2018/03/10 每日一个Linux命令 之 cksum
每日一个Linux命令 2018-03-10 Linux 命令 cksum cksum [文件] 今天楼下的一个大妈去世了,不仅感叹,现如今,真的和以前不一样了,楼上楼下都不知道住的是谁? cksu ...
- 正则表达式(三):Unicode诸问题下篇(转)
原文:http://www.infoq.com/cn/news/2011/04/regular-expressions-4 我们使用正则表达式,熟练掌握各种功能和结构只是手段,解决实际的问题才是真正的 ...
- grunt学习二
1. 新建文件和文件目录 mkdir grunt-in-action cd grunt-in-action cd grunt-in-action mkdir grunt-empty cd grunt- ...
- mysql transaction 事务
1.事务简介 一个"最小的"不可再分的"工作单元". 一个事务通常对应了一个完整的业务.如:银行的转账功能,a转账给b,a扣钱,b加钱. 一个事务包含一条或多条 ...
- 怎样在wordpress后台显示日志 ID
有时我们需要在wordpress后台编辑特定的文章,找了大半天眼睛都花了,不禁会吐槽一下.有没有什么办法可以直接在日志列表查看日志 ID 呢?我们可以通过下面的代码实现: <?php /* Pl ...
- 如何给Pycharm加上头行 # *_*coding:utf-8 *_*?
File>Setting>Editor>Code Style>File and Code Templates>Python Script 后面加上 # *_*codin ...
- [lr] 直方图
直方图基础知识 • 直方图的特征和作用 ▪ 直方图的x轴从左到右代表亮度逐渐增加,即从最暗到最亮:y轴代表某个亮度值下颜色像素的多少(密度). ▪ 直方图由红绿蓝三种颜色组成,分别表示红绿蓝通道:其中 ...