存储 频道

电商"猫狗大战" 云数据库存储也来比拼

  【SACC 2015现场报道】2015年10月22日,第七届中国系统架构师大会在北京新云南皇冠假日酒店盛大开幕。从2009年到现在,我们伴随着中国系统架构师大会走过了七个春秋,从最早的500人规模逐年升级到现在的2500人规模,这些年我们目睹了整个IT架构的变迁,也见证了中国IT圈内一波又一波的架构师成长之路。

  青云林源:IT转型与基于云的架构实现

  ▲2015中国系统架构师大会直播地址:http://oa.it168.com/topic/2015/10-20/SACC2015/

  本届大会有着超过200家知名企业的架构师作为主讲嘉宾,累计有超过10000多名CIO/CTO、IT架构师、技术总监、运维经理与主管、IT系统及网络管理人员参会,累计沉淀了获百万次下载的技术演讲干货素材。本次大会依旧延续了“高人气、高水准、高质量”的属性,汇聚了近百位业界技术领袖,在两大主场和16个分会场中与2500名IT精英济济一堂,共话互联网+下如何重塑IT架构。

  每年的双11促销,都是对几大电商的软硬件平台服务能力的一次大考。京东每天的库房记录在十亿个数量级,商品图片总共有几十亿张。这些文件基本上都是KB 级别的,很明显关系型数据库不太擅长处理这些海量小文件。当用户京东上疯狂的进行流畅浏览、搜索、下单的背后,究竟是什么样的设备与架构才能支撑住如此庞大的流量?

  在大会第一天备受期待的《存储技术架构》专场中,京东云数据库技术负责人田琪为我们讲述了京东幕后数据库和存储的故事。

电商
京东云数据库技术负责人田琪

  云数据库服务是云平台不可或缺的重要组成部分,它承载着用户重要关系型数据落地,数据分拆,无缝扩容等重要功能,而RDS(Relation Database Service)服务本身各家都有不同的实现。田琪表示,通常RDS服务提供商对每个用户的数据库申请会为其单独分配一台数据库实例,这个实例也是单独建立在一台或者多台虚拟机上的,这种服务提供方式可以提供相对高性能的解决方案。但是存在一个问题,如果为每个用户的实例背后都是一个或者多个虚拟机的话,必然会导致总体成本的提高,而这种成本上的增加通常也不是必要的。因为大多数中小型的业务是完全可以跑在同一个数据库实例里的。这样也就可以帮助那些中小开发者们大大的节省了成本问题,最终做到一个月几块钱的创业成本。

  另外也会存在一部分业务数据量和访问量都比较大,不适合同其他用户一起跑在同一个数据库实例里,这部分用户就比较合适独立一个数据库的实例。京东云数据库考虑到了这两种不同的需求,所以单独开发了共享型云数据库平台,独享型数据库平台两套系统,同时又支持无缝地从一个平台迁移到另一个平台上。

电商
▲Why not MySQL

  据田琪介绍,共享型云数据库最大的特点就是低成本,同时又不会牺牲数据库的可用性和可靠性,即使很多个用户共享同一个数据库实例,每个用户也都是有自己单独独立的备份,主从互备等支持。 这种方案的几个技术上的关键点在于如何做到用户资源的有效隔离,数据库的平滑扩容升级等。

  京东共享型云数据库架构

  1.Shared RDS API对外提供create/delete/describe等管理共享型数据库的接口

  2.对于创建数据库Shared RDS API会根据DB资源池负载信息选择一个适合的实例为用户创建数据库,并更新集群路由到JManager

  3.JManager管理整个集群路由信息,收到的任何路由变更同步到JProxy路由节点

  4.JProxy路由节点对外提供透明的MySQL代理服务,根据路由信息将用户请求发送到用户所在的数据库实例上

  5.每个数据库实例根据资源使用情况超过指定阈值,会由JTransfer模块将数据迁移到空闲的实例上

  6.Cron模块定时通过RDS API动态为资源池增加空闲资源

  此外,京东共享型的云数据库做到了以下关键技术实现:

  1. 租户隔离。多个租户共享同一数据库实例必然需要一个有效的隔离方案,防止一个用户的慢查询请求或恶意请求影响其他用户访问。这里的隔离实现方式是通过JProxy层对用户所有的访问进行了拦截,并根据用户访问的数据表索引信息等,对用户执行该请求所需资源进行预判,并拦截掉恶意的请求及影响其他用户的请求。同时为了精确控制每个用户的资源使用,整个系统针对用户使用的连接数,内存占用容量,磁盘空间使用情况,带宽流量等都做了有效的记录和监控并根据用户的配额进行控制。

  2. 集群路由信息高一致性保障。整体集群采用经典的弱中心化集群结构,在满足集群高性能的基础上同时具备足够的可控性,JManager管理整个集群路由信息,并通过多个Slave避免单点故障,当路由变更时,JManager首先同步路由变更信息给自己的Slave,然后才会同步所有的JProxy,避免路由变更时JManager挂掉导致路由不一致。

  3. 高可用保障。

0
相关文章