360 Cassandra在2012年中国系统架构师大会的应用与优化实践

需积分: 10 3 下载量 23 浏览量 更新于2024-07-27 收藏 315KB PDF 举报
在2012年中国系统架构师大会(SACC2012)上,唐会军分享了360公司对Cassandra数据库的实践经验。360在当时已经大规模采用Cassandra,其集群规模超过了1500台服务器,最大的单个集群包含150台机器,基于Cassandra 0.7.3进行了一些定制改进。 首先,唐会军介绍了360选择Cassandra的原因。由于团队人员有限且需求紧迫,他们倾向于开源项目以降低成本和响应速度。Cassandra的分布式特性、无单点设计和中心化的避免使其成为在线业务的理想选择。此外,Cassandra的代码结构清晰,易于理解和维护,这符合团队的技术背景。 在实际使用中,360对Cassandra进行了优化。他们在读写性能上进行了增强,如设置3份数据拷贝,一致性级别为quorum,允许并发读取多个值,还增加了get_digest等digest接口,并开启100%的读修复。对于数据压缩(Compaction),他们选择手动触发定期执行,根据不同数据量和重复键的情况调整频率,同时避免了异常记录的影响。 在扩容和故障处理方面,360引入了限速功能来适应更高版本的特性,改进了数据迁移算法,确保从多个节点获取数据并跳过不可读的SSTable。当需要顶替节点时,即使在替换过程中也能够正常接收写请求。此外,他们开发了高效的haskey方法来快速判断键是否存在。 为了保证数据的完整性和可靠性,360实施了数据备份策略,监控写入成功的KEY数量,如果不足3个,会启动后台线程进行修复。同时,他们增加了Hintedoff保存key的时间,并定期进行全局扫描以发现并修复问题。在写入性能优化上,他们降低了写操作较少的Keyspace刷memtable的时间,并强调在节点停止前手动flush memtable。 针对内存管理,360调整了Java垃圾回收策略,采用了CMS(Concurrent Mark Sweep)进行Full GC,并增加了MaxDirectIO内存限制以提高性能。最后,他们还关注日志级别的监控,以确保系统的稳定运行。 通过这次分享,我们可以看到360公司在使用Cassandra时,不仅充分利用了其分布式和可扩展性优势,还结合实际业务需求进行了深度定制和优化,以提升系统的稳定性和效率。这为其他企业在面临类似挑战时提供了有价值的参考案例。