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>对一些数据处理方式上,因为有特殊引擎提供处理能力,使得平台的设计思路有所改观。