首页 > 代码库 > 移动基于Percona XTRADB Cluster的大数据解决方案

移动基于Percona XTRADB Cluster的大数据解决方案

移动基于Percona XTRADB Cluster的大数据解决方案
    
    一、移动的去IOE之旅
    

       最近因为“棱镜门”事件的曝光,引起了国家对信息安全问题的注意,各大行业也开展起来去“IOE”的行动。对移动而言, 一方面是对信息安全的担心,另一方面是对降低成本的考量,对开源体系架构的引入也成为一种现实的方案。

       在互联网行业,MySQL的使用成为主流,但随着Oracle对Sun的收购,MySQL的控制权落入Oracle手中,对MySQL可能闭源的风险也成为业界的共识。 由此,产生了各种MySQL的分支。本文主要对其中的PerconaXtraDB作为数据库方案进行了分析。


     二、Percona STRADB Cluster分析

网址: http://www.percona.com/

Percona XtraDBCluster是MySQL高可用性和可扩展性的解决方案.

Percona XtraDBCluster提供的特性有:

1.同步复制,事务要么在所有节点提交或不提交。

2.多主复制,可以在任意节点进行写操作。

3.在从服务器上并行应用事件,真正意义上的并行复制。

4.节点自动配置。

5.数据一致性,不再是异步复制。

Percona XtraDBCluster完全兼容MySQL和Percona Server,表现在:

1.数据的兼容性

2.应用程序的兼容性:无需更改应用程序

集群特点:

? 集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。

? 每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。

? 每个节点都包含完整的数据副本。

优点如下:

1.当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。

2.无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作。

3.良好的读负载扩展,任意节点都可以查询。

缺点如下:

1.加入新节点,开销大。需要复制完整的数据。

2.不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。

3.有多少个节点就有多少重复的数据。

架构图如下:

Percona XTRADB Cluster架构图

Percona XtraDB Cluster与MySQL Replication区别在于:

分布式系统的CAP理论:

C—一致性,所有节点的数据一致;

A—可用性,一个或多个节点失效,不影响服务请求;

P—分区容忍性,节点间的连接失效,仍然可以处理请求;

任何一个分布式系统,需要满足这三个中的两个。

 

MySQLReplication: 可用性和分区容忍性;

Percona XtraDBCluster: 一致性和可用性。

因此MySQL Replication并不保证数据的一致性,而Percona XtraDB Cluster提供数据一致性。

 

Percona XtraDBCluster组件:

Percona XtraDB Cluster基于XtraDB的PerconaServer以及包含写复制集补丁。使用Galera 2.xlibrary,事务型应用下的通用的多主同步复制插件。

 

Galera 2.x新特性有:

1.IST(IncrementalState Transfer)增量状态传输。对于WAN特别有用。

2.RSU(RollingSchema Update)旋转更新架构。不会阻止对表进行操作。


     三、基于Percona STRADB Cluster的系统架构
     munion_sysarch
     扩展性架构
  

垂直分片:

->多个Percona XTRADB Cluster;
->Spring配置多个数据源;

水平分片:

->多个PerconaXTRADB Cluster;
->Guzz实现数据水平切片和ORM;

   LVS+Keepalived扩展:
采用三层交换机的等价路由技术最多可配置8台LVS服务器,每台都是Master,LVS配置成DR模式,消除了LVS瓶颈。

     五、总结
     我们准备在移动某互联网项目中使用以上方案,经测算在5000万PV、10000并发的情况下,需要1,828,571tpmC 的服务器一台。按8台LVS服务器,每台转发100个Percona XTRADB集群,每个集群8台服务器计算(集群内每个节点数据相同),相当于8X100=800台服务器。每台服务器tpmC按1,807,347,支持5000万PV计算,即800X5000万=4000000万PV。足够满足该项目的需求了。
     
     以上方案还需在后续的持续运营中进行验证。请大家批评斧正!