论文部分内容阅读
随着各种互联网应用的业务系统复杂度以及用户数据量的增长,数据的存储与读写压力随之不断提升,采用非关系型数据库,可以在一定程度上解决这个问题。常用的非关系型数据库Cassandra具有很好的横向可扩展性以及较好的写操作性能,但是,在实际使用过程中,发现Cassandra的读操作速度不是非常理想,并且并发性能也有着一定的瓶颈,而缓存和索引可以高效地提升数据系统的读操作速度。所以,本文将系统并且全面地介绍基于Cassandra数据库的缓存和索引数据系统的设计与实现。本文在保证了 Cassandra分布式特性的前提下,对于Cassandra数据库的并发读、写性能进行了优化。首先,读操作缓存以及索引系统可以很好地降低对于磁盘的直接访问,但是由于近两年内存价格居高不下,为了增大缓存的容量,提高缓存命中率,本文将近些年投入使用的固态硬盘作为内存的后备缓存使用,利用分代式算法思想对于内存和固态硬盘中的缓存数据进行分别处理,不仅可以对内存缓存进行扩容,还能够增强缓存的容错能力,实现缓存的持久化。其次,结合Bloom Filter的一种优化方法来作为索引系统,和Cassandra数据系统本身采用的LSM数据存储思想结合,通过存储寻址速度的加快,来提升整个系统的读性能。并且,为LSM数据存储方式增加数据缓冲层,来保证数据批量刷入磁盘,可以在一定程度上增强系统的写操作性能。最后,结合近些年非常热门的Node.js服务端框架以及对象关系映射思想,实现了 Node.js环境下的Cassandra数据库驱动,并且结合异步I/O以及多进程并发思想,实现了一个高效的Node.js数据服务端。除此之外,为了增强系统的可维护性,本文使用了数据可视化的方法将上述各个模块的运行状态实时反馈,保证了每个模块都能够稳定运行。通过上述几点优化,来实现一个可以很好地和现有的云计算平台结合的数据系统。本文的最后对于实现的Cassandra数据系统进行部署以及测试,分别测试系统最初预设的功能目标以及实现性能。测试结果表明,改进后的Cassandra数据系统的读性能有着较大幅度的提升,而并发性能和写性能也有小幅增长。