Mysql cluster 学习总结

来源:互联网 发布:专科出国读研 知乎 编辑:程序博客网 时间:2024/05/16 19:25

1、学习目标
 为了能够更短时间内处理更多的数据,以及在现有服务性能基础上,使用集群模式达到预期的性能目标。
 目标值:
 每天处理网页访问流量或广告点击统计工作,大概在500万量;
 及时处理,完成分析结果。而非产生要处理数据被积压情况;
 把新的模式应用于现有的可控制的产品当中,做经验的积累工作。


MysqlCluster首选原因
 公司已经具备linux平台专业维护人才和数据库操作专业维护人才;
 从系统能够智能划分处理任务的角度考虑,集群模式是首选方案;
 Linux系统平台的Mysql Cluster开源免费意味着软件成本的节省;
 现有公开的测试报告中,看出我们采取的简单模型能够在集群环境当中实施。
2、环境要求
 软件要求:
 Linux El 5操作平台
 Mysql相关软件包,直接在官方下载
硬件要求:
 四台服务器:管理节点1台,Sql操作节点1台,数据存储节点2台;
 管理节点:普通的pc
 两台hp普通服务器;
 一台:dell高级服务器(使用一天,效果比原先的pc很明显。主要怀疑网卡的性能上)
 希望的环境:
 最少四台服务器:管理节点1台,Sql操作节点1台,数据存储节点2台;
 管理节点服务器配置方面没有太多要求。
 其他三台机器:内存尽可能大,希望4G;千兆网卡;64位处理器;
 交换机:千兆速度交换机;
 组成高速局域网环境
 
3、配置方法

4、测试过程
4.1 测试用例
    及时跟踪用户感性点
 对当前用户的查看多个url(m url)之后,对应的多个关键词(n kw)进一步计算,在数据库中很快判断出用户正在关注着什么关键,迅速进行排列结果。
 用户行为产生的url和关键词部分来源于Autosense系统的数据库。
4.2测试使用表格
表格结构
mysql> show create table userkeyword/G;
*************************** 1. row ***************************
       Table: userkeyword
Create Table: CREATE TABLE `userkeyword` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `ClientID` varchar(25) NOT NULL DEFAULT '',
  `LastUpdateTime` datetime DEFAULT NULL,
  `Keyword` varchar(25) NOT NULL DEFAULT '',
  `UpdateCount` int(11) NOT NULL DEFAULT '1',
  PRIMARY KEY (`ID`),
  KEY `idxUpdateCount` (`UpdateCount`),
  KEY `idxcid` (`ClientID`),
  KEY `idxkw` (`Keyword`)
) ENGINE=ndbcluster DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

表格数据
mysql> select count(*) from userkeyword;
+----------+
| count(*) |
+----------+
|  2404648 |
+----------+
1 row in set (0.01 sec)

   
4.3测试过程

 数据的更新速度 
 两百万数据的时候,使用6客户端进行随机的insert 和 update 工作,能够平稳处理500记录/每秒。
 同时,在进行某一个用户的关注感兴趣的关键词排名查询需要0.01 sec。
 
 这种情况符合及时分析用户的行为,并用户下一次查看网页的时候,及时计算用户关注点报告(例如,关注汽车行业关键词排行)。

   这样的处理速度引入到广告系统的处理引擎模块当中,及时计算针对报表格式的很多统计结果。
  可以应用词引擎高速处理能力,实现功能:
 及时计算用户的活动频率和关注点;
 广告系统当中,防作弊功能的实现;
 及时计算其他一些统计功能;
总结
 在集群系统的说明文档学习过程中,所理解的情况和设想的解决方案的模型对比,从新认识MysqlCluster系统。

 失败:
 <1>对数据处理能力的边界,没有明确的控制能力。很想让更多的解决问题依托于一个处理模型上。比如,初步设想的范围当中,想使用此引擎处理更多的数据或者海量数据。
 从实际操作的过程中,得到的结果就是平台或产品当中,需要使用不同的处理引擎完成不同的任务,而非实用一个引擎完成全部。
 <2>集群模式当中子查询非常消耗时间。这个特点让很困惑,而且使用的很多时间来试图突破掉瓶颈。可惜最终还没有能找到很好的解决方案。
 如果需要使用子查询方式的地方,暂时不能在此集群环境上做运算工作。
 <3>对网卡和交换机等硬件方面的吞吐量,比较怀疑达到极限或者怀疑有拖延情况。

收获:
<1>尝试集群工作模式。
<2>享受开放软件的优点。
<3>处理速度的提高,让人很惊讶。
对一台机器Mysql做inset,update,delete 和没有自查询的其他一些操作的时候,单一客户端每秒能够处理150条左右。而在集群环境当中,6个客户端,很平稳状态处理速度在500条以上。
<4>对一些数据处理方式上,因为有特殊引擎提供处理能力,使得平台的设计思路有所改观。