redis集群和分布式区别

redis集群和分布式区别

分布式是指将业务系统进行拆分,即分布式的每一个节点都是实现不同的功能。

集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。 (推荐学习:Redis视频教程)

简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

Redis Cluster 集群模式通常具有高可用、可扩展性、分布式、容错等特性。Redis 分布式方案一般有两种:

客户端分区方案

客户端就已经决定数据会被存储到哪个 redis 节点或者从哪个 redis 节点读取数据。其主要思想是采用哈希算法将 Redis 数据的 key 进行散列,通过 hash 函数,特定的 key会映射到特定的 Redis 节点上。

客户端分区方案的代表为 Redis Sharding,Redis Sharding 是 Redis Cluster 出来之前,业界普遍使用的 Redis多实例集群方法。Java 的 Redis 客户端驱动库 Jedis,支持 Redis Sharding 功能,即 ShardedJedis 以及结合缓存池的 ShardedJedisPool。

优点

不使用第三方中间件,分区逻辑可控,配置简单,节点之间无关联,容易线性扩展,灵活性强。

缺点

客户端无法动态增删服务节点,客户端需要自行维护分发逻辑,客户端之间无连接共享,会造成连接浪费。

代理分区方案

客户端发送请求到一个代理组件,代理解析客户端的数据,并将请求转发至正确的节点,最后将结果回复给客户端。

优点:简化客户端的分布式逻辑,客户端透明接入,切换成本低,代理的转发和存储分离。 缺点:多了一层代理层,加重了架构部署复杂度和性能损耗。

代理分区主流实现的有方案有 Twemproxy 和 Codis。

Twemproxy

Twemproxy 也叫 nutcraker,是 twitter 开源的一个 redis 和 memcache 的中间代理服务器程序。Twemproxy 作为代理,可接受来自多个程序的访问,按照路由规则,转发给后台的各个 Redis 服务器,再原路返回。Twemproxy 存在单点故障问题,需要结合 Lvs 和 Keepalived 做高可用方案。

优点:应用范围广,稳定性较高,中间代理层高可用。 缺点:无法平滑地水平扩容/缩容,无可视化管理界面,运维不友好,出现故障,不能自动转移。

Codis

Codis 是一个分布式Redis 解决方案,对于上层应用来说,连接 Codis-Proxy 和直接连接原生的Redis-Server 没有的区别。Codis 底层会处理请求的转发,不停机的进行数据迁移等工作。Codis 采用了无状态的代理层,对于客户端来说,一切都是透明的。

优点

实现了上层 Proxy 和底层 Redis 的高可用,数据分片和自动平衡,提供命令行接口和 RESTful API,提供监控和管理界面,可以动态添加和删除Redis 节点。

缺点

部署架构和配置复杂,不支持跨机房和多租户,不支持鉴权管理。

更多Redis相关技术文章,请访问Redis数据库使用入门教程栏目进行学习!

以上就是redis集群和分布式区别的详细内容,更多请关注其它相关文章!