APP下载

Redis集群系统的优化研究与实现

2020-02-18伍华锋王小刚唐小林

伍华锋,王小刚,候 劲,唐小林

(四川轻化工大学自动化与信息学院,四川 自贡 643000)

引 言

现如今,大数据量的处理已经成为互联网应用的一个常态。由于传统的关系型数据库放在磁盘上运行,会导致相应的性能瓶颈,在解决大数据量的服务调用和并发处理表现不佳[1]。Redis作为运行在内存上的一种高性能非关系型数据库,读写速度比关系型数据库快得多,同时其拥有丰富的数据结构,可以应对不同的互联网应用场景[2]。而由于单机Redis受自身内存、IO处理等影响[3],并不能满足实际业务场景的需求。在实际生产环境中,更多的是使用分布式的Redis集群。

Rediscluster相对于Redis而言,它能够实现自动故障转移、迁移中数据访问、构建大容量集群等,有很多优越性[4]。越来越多的项目都期望从Redis迁移到Redis cluster上,从而提升项目吞吐量和稳定性[5]。但如果直接进行迁移,客户端代码将会进行大面积的改造,工作量和复杂性都极高[6]。如果可以通过一个代理中间件来兼容Redis和Rediscluster,对于客户端代码就不用做任何修改。

近年来越来越多的公司和相关研究学者关注Redis集群架构的设计和优化。

在系统架构设计方面,2016年,阿里云等公司使用自研Proxy的方式搭建Redis集群,并且提供独立的组件HA负责集群的主备切称。百度等公司基于C语言开发对twemproxy进行改造,将Redis内核中的db划分成16384个,请求下发到具体的db上。京东等公司基于Golang语言开发自研Proxy,同时增加sentinal哨兵监控Proxy和Redis实例。

在系统优化方面,2017年,李轲[7]通过将Redis服务器实例和CPU核绑定在一起,减少进程切换优化集群。……

登录APP查看全文