论文部分内容阅读
随着网络的发展,各行各业的业务系统体量越来越庞大,业务内容也越来越复杂。传统数据库已经无法满足人们对于响应时延的要求,因此,Memcached等缓存系统被广泛的应用。实验室现有云平台也使用Memcached作为缓存数据库来提高云应用的打开速度和响应速度,但是在日常开发维护中发现存在高可用、效率、持久化等问题。为此,本文以Redis为基础,研究并实现了一套高可用的云数据库系统CRDB(CAC Redis DataBase)作为云平台的缓存数据库。主要工作如下:首先本文分析了现有实验室Memcached缓存数据库存在的问题并提出解决方案。当前实验室使用的Memcached是单点的,不支持高可用,另外只能处理键值对数据,对于其他复杂的数据类型需要客户端做大量的数据转换工作,影响开发效率。并且Memcached不支持持久化功能,对于一些关键数据很容易丢失。针对以上问题,本文以Redis数据库引擎为基础,基于proxy-based架构,提出了 CRDB云数据库系统,该系统主要由访问模块,代理模块,数据处理模块和管理模块四部分组成。然后本文从系统的四个模块出发,进行了详细的分析设计并给出了具体的实现。(1)访问模块作为系统的入口主要处理来自客户端的大量请求,使用了 LVS和Keepalived的组合架构进行负载均衡,使系统具备处理海量并发数据的能力,同时加入了用户验证以面对多租户访问的场景。(2)代理模块通过对Twemproxy二次开发,添加了多进程功能,以应对云平台的高性能要求。使用代理层对底层节点实现分片,在将海量客户端请求均匀分配转发的同时,也确保了底层能对上层进行透明的扩容操作。(3)数据处理模块实现了数据持久化操作,并对Redis的内存替换策略用LRU-K算法进行改进,提高系统对于云平台热点数据的处理性能,提升应用响应速度。(4)管理模块使用Prometheus开源组件对系统进行监控,开发了各种Exporter业务插件,帮助管理人员对于系统的掌握更全面。另外使用Sentinel架构完成了故障检测和故障处理功能,解决了单点问题,并基于log4cxx二次开发了一套日志系统,为运维和开发人员解决问题提供良好的参考。最后本文在云平台中部署了一台CRDB云数据库,并对CRDB系统进行了全面的功能和性能测试。将结果和原来的Memcached缓存进行对比,该系统符合最初的设计要求,满足云平台的需求,且具备较好的高可用和高并发性。