本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【j2开奖】美丽说数据库架构变迁及中间件应用

时间:2016-07-07 07:05来源:报码现场 作者:本港台直播 点击:
【j2开奖】美丽说数据库架构变迁及中间件应用,sql server 数据库应用教程,sql server 数据库的应用,未能检索到此链接的数
  【IT168 专稿】本文根据【2016 第七届中国数据库技术大会】现场演讲嘉宾冯超老师分享内容整理而成。录音整理及文字编辑IT168@ZYY@老鱼。

  讲师简介:

美丽说数据库架构变迁及中间件应用

 

冯超



  DBA冯超,前美丽说数据库及中间件负责人,技术经理,6年数据库架构经验,1年创业经验,30年瞎掰经验。2008年加入人人,2014年从人人离职加入美丽说,经历了美丽说从导购转型电商的过程,2016年加入美图,成为美图数据库团队负责人。

  正文:

  大家好,本港台直播今天的演讲主题是“

  美丽说数据库架构变迁及自主研发中间件应用”。自2014年从人人网离职加入美丽说之后,经历了美丽说从导购网站向电商网站的转型。虽然过程坎坷,但结果还是比较不错的。美丽说的GMV从最开始不到百万到增长到最高峰的时候一天10亿左右的交易额。今天主要给大家介绍一下美丽说转型过程中数据库架构变迁的经验和心得。

  本港台直播把美丽说的转型分为三个阶段;

  1、 导购时代。

  2、 转型时代,这个阶段是电商从无到有的建立过程,从小型交易到快速成长的过程,基本上从0到GMV百万级别,峰值订单10/s;

  3、 爆发时代,根据前面积累的经验,公司进行了大规模的宣传和推广,这个阶段对本港台直播们的架构迎来了一些挑战, GMV从千万级增长到billion规模,峰值订单3k/s。

  导购时代:

  导购时代本港台直播总结的经验有两个关键字:“混合”、“无规范”。混合是指数据库业务、功能、用途都混合在一起。如商业库,只有一主三从结构,商家在用、用户在用、统计在用,本港台直播们DBA也在用。

  另一个是无规范,当时没有专职的DBA,所以配置、版本、权限等都没有规范起来,造成两个问题:

  1、 稳定性差,因为所有的业务和功能混合在一起,其中一项业务出问题就会影响到其开奖直播所有业务,当时的情况是,今天A业务出问题,明天B业务有问题,最后整个网站都会因为不同业务的问题导致整体稳定性非常差。

  2、 扩展性差,耦合性强,扩展性就差。牵扯的业务众多,所以任何扩展都是意见非常耗时耗精力的事情。

  当时问题比较多,也有一件正确的事情,也对未来的优化提供了一个基础,就是引入配置文件,在业务层做读写分离。所有在业务层读取的数据库,有了配置文件就相当于有了配置中心,本港台直播们所有的改变都是基于此实现的,这就是导购时代。

  转型时代:

  转型时代的关键就是“Change”,所有的东西都在变化。由于本港台直播本人的电商经验相对匮乏,所以本港台直播当时考虑的是如何应对电商的变化以及如何让它从正确的方向有序优化演进而不是以一种杂乱无章的方式变化到最后失控。

  本港台直播首先想到的是建立规则,包括两方面:内部规则和外部规则。内部规则如主机名、版本、参数的规范,方便日后进行批量操作,其次也为监控推广提供基础。这样做还有个根本目的,第一减少DBA的人为操作失误,在没有规范,业务发展迅速的情况下,人为操作可能会发生很多问题;第二是规范定好,可为以后脚本化、自动化打下很好的基础。

  外部规范,主要是sql规范,引导研发更好地利用Mysql的性能,写出符合更高效率的sql语句;其次是业务规范,说到底就是把业务解耦,让不同的业务访问自己的数据库,不同业务之间通过接口调用数据,在这个过程中特别强调的一件事是,把用户和权限规范起来。当时是为了开发方便,都走的root用户,具有所有权限,换句话说,每个用户都可以做任何想做的事,风险非常大。其次时不时就会有人把其它业务数据删掉或更新错误,需要不停地修补数据,浪费大量人力,所以在访问规范之后,制定了账户权限,读有读账户、写有写账户、DBA有自己的账户、访问有访问账户、脚本有脚本账户等,有迹可循,每个人都没有权限做额外的事情。

  促销秒杀场景:

  规则建好之后就需要解决实际问题,在导购时代是没有促销和秒杀的,美丽说成功转型电商以后,促销和秒杀的场景就非常多了。美丽说的第一次促销是5月20日12点,结果在那个时间点,美丽说所有的服务网站集体全部down掉,凌晨2点跑到公司去解决追查问题,但是有两个问题需要解决:第一是容量问题,对于数据库来说就是写瓶颈和读瓶颈。第二是短链接问题,当时用的是PHP语言,在高并发的情况下频繁建立和销毁链接,对PHP来说建立和回收都需要一定时间,高并发的情况下造成了很多超时问题,如果前端业务没有对超时问题进行从严和机制化处理就会造成服务在瞬间全部不可用。针对这两个问题,本港台直播们当时提出了两个容量问题解决方案:

  一、 纵向扩展(成本换时间)。纵向扩展是可以比较快速实施起来的。纵向扩展主要有三个方法:一是升级磁盘,从普通的SAS盘升级到SSD;二是增加内存;三是升级CPU,由于线上的某些sql写的不是非常规范,所以很多运算都在数据库里发生,这就对CPU有了更高的要求,所以本港台直播们必须要升级CPU换取sql的优化时间。二是增加从库,解决读瓶颈。由于用户混合在一起,导致本港台直播们之前增加的从库效果并不明显。12点又是统计需求大量跑的时间点,增加的从库被统计需求大量消耗,最后用户的读容量并没有增加多少。之后本港台直播们开始对从库的用途进行拆分(配置文件)。三是增加缓存,例如redis、memecache等。

  二、 横向扩展,就是数据拆分。把数据逐步打散分布到机器和实例中提高它的容量。关于数据拆分,本港台直播总结了一个方法,优先业务拆分再功能拆分,完成后再对具体的表进行垂直、水平拆分。

美丽说数据库架构变迁及中间件应用

 

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容