【IT168资讯】2012年9月14日消息,由盛拓传媒旗下的IT168、ChinaUnix、ITPUB联合主办为期三天(2012年9月13日~2012年9月15日)的第四届中国系统架构师大会于在北京永泰福朋喜来登酒店隆重召开。来自百度、淘宝、腾讯、IBM、新浪、网易、奇虎360等IT巨头的讲师分享了业界非常先进的技术经验与趋势。
奇虎360系统部总监唐会军在大会上以“奇虎360 Cassandra系统设计改进实践”为主题为与会的架构师进行了精彩的分享。
目前,Cassandra在奇虎360情况是这样的,总服务器规模超过1500台,最大单个集群150台,Cassandra的版本都是基于0.7.3上不断改进的,这些就是Cassandra在奇虎 360公司的使用情况。
Why Cassandra?
主要原因是团队人员少,事情多,每一个团队的人都很少,需求紧,而且对于中小型企业去开发一个这样的软件是很困难的,所以选择开源项目,无单点,无中心,适合在线业务,代码是JAVA的容易懂,团队成员有代码基础,社区比较活跃。下面呢介绍一下使用方法。
使用&读写
读和写是大家对产品最常见的操作,我们一般的数据也是3份拷贝,一致性级别选择为quorum,我们改进地方就是支持读操作发3个Value请求,而且还增加一系列digest接口(get_digest... ...),最总要的是我们采取了100%开启读修复。
使用&改进
*Compaction
关闭自动触发,因为自动触发这样就不太好控制了,我们采用了脚本定期触发的方式,我们对数据量大的keyspace每天一次,数据量小且重复key较多每两个小时一次,最后呢我们还增加制定参与Compaction的SStable大小,还有一个改进就是将Skip异常record。
*扩容(Bootstrap)
对于Cassandra增加限速功能(参考高版本),修改选取算法,保证从三个节点拖数据,拖取数据时跳过有问题无法读取的Sstable,重建Ineex时跳过异常record。
*顶替节点(Replace token)
Replace过程中正常接收写请求,数据备份检查&修复,接入节点记录写成功不足3的KEY,后台线程修复,增加Hinted off保存KEY的时间,后台线程定期全局扫描检查并修复。
*Commitlog
降低写操作较少的Keyspace刷mentable时间,节点STOP前手动flush memtable
*Java GC
Full GC 使用CMS,增加MaxDirectlo内存限制
总结
*Cassandra缺点
-不支持多版本
-扩容麻烦
-不清楚数据的备份情况
*Cassandra VS Hbase
-Cassandra无中心,服务可靠性强,但扩展和管理相对复杂,目前在对可靠性强,但扩展和管理相对复杂,目前在对可靠性要求高的在线存储业务上可以使用。
-Hbase有中心,服务无冗余,但扩展和管理容易,目前在离线存储业务上使用。
心得体会
我们一定要重视运维,包括监控、流程、规范、预案等,再一个就是要熟悉原理和代码,因为在规模大了以后,就会产生各个各样的问题,定位和解决需要了解大量的原理和代码,最后一点是要重视问题,不要轻易放弃任何问题,一定要刨根问底查明原因。