开发者社区> javaedge> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Redis分布式概览

简介: 1 Redis分布式算法原理 1.1 传统分布式算法 1.2 Consistent hashing一致性算法原理 环形 hash 空间:按照常用的 hash 算法来将对应的 key 哈希到一个具有 232 个桶的空间,即(0-232-1)的数字空间中,现在我们将这些数字头尾相连,想象成一个闭...
+关注继续查看


1 Redis分布式算法原理

1.1 传统分布式算法

举个例子


蓝色表与4个节点时相同槽

1.2 Consistent hashing一致性算法原理

  • 环形 hash 空间:按照常用的 hash 算法来将对应的 key 哈希到一个具有 232 个桶的空间,即(0-232-1)的数字空间中,现在我们将这些数字头尾相连,想象成一个闭合的环形
  • 把数据通过一定的 hash 算法映射到环上
  • 将机器通过一定的 hash 算法映射到环上
  • 节点按顺时针转动,遇到的第一个机器,就把数据放在该机器上



在移除 or 添加一个 cache 时,他能够尽可能小的改变已经存在 key 映射关系

删除CacheB后,橙色区为被影响范围

也许心中的分布式这样的
但实际会这样拥挤-即倾斜性

1.3 Hash倾斜性


为解决此类事件,引入了虚拟节点


服务器台数n,新增服务器数m

2 Redis分布式环境配置

启动两台Redis-server

3 Redis分布式服务端及客户端启动

4封装分布式Shared Redis API

4.1 SharedJedis源码解析

ShardedJedis.png

封装RedisSharedPool

测试代码

集成测试

5 Redis分布式环境验证

6 集群和分布式

  • 分布式:不同的业务模块拆分到不同的机器上,解决高并发的问题。 工作形态 redis服务器各工作方式不同一般称为Redis分布式
  • 集群:同一个业务部署在多台机器上,提高系统可用性 是物理形态,一般称Tomcat集群
    集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。

你前台页面有10个用户,分别发送了1个请求,那么如果不是集群的话,那这10个请求需要并行在一台机器上处理,如果每个请求都是1秒钟,那么就会有一个人等待10秒钟,有一个人等待9秒钟,以此类推;那么现在在集群环境下,10个任务并分发到10台机器同时进行,那么每个人的等待时间都还是1秒钟;
当然,你说的浪费确实是,如果系统的并发不是很高,只有一台或者两台机器就能处理的话,那确实是有很大的浪费

7 参考

[Java企业级电商项目架构演进之路
Tomcat集群与Redis分布式
](https://coding.imooc.com/class/162.html)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
为什么分布式一定要有redis?
1、为什么使用redis 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。
1252 0
Redis持久化
Redis的非常快,很大一部分原因是因为Redis的数据存储在内存中,既然在内存中,那么当服务器宕机或者断电的时候,数据就会全部丢失了,所以Redis提供了两种机制来保证Redis数据不会因为故障而全部丢失,这种机制称为Redis的持久化机制。
699 0
Redis的持久化机制(下)
Redis的持久化机制(下)
36 0
Redis的持久化机制(上)
Redis的持久化机制(上)
56 0
Redis replication以及master持久化对主从架构的安全意义
Redis replication以及master持久化对主从架构的安全意义
42 0
Redis持久化之AOF
在上篇文章中介绍了快照持久化,对于它的优缺点大家也有所有了解了。本文主要介绍redis持久化中的另一种方式AOP(Append only file)持久化
63 0
Redis持久化之快照(RDB)
通过前面文章的介绍,大家对于redis的基本操作应该比较了解了。本文主要介绍下redis持久化方式中的快照持久化
94 0
Redis持久化之AOF的定义及执行原理
Redis 是内存数据库,就是将数据库中的内容保存在内存中,读写效率更高,但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。为了避免进程退出导致数据的永久丢失,需要定期将 Redis 中的数据以数据或命令的形式从内存保存到本地磁盘。当下次 Redis 重启时,利用持久化文件进行数据恢复。 Redis 提供了 RDB 和 AOF 两种持久化机制,前者将当前的数据保存到磁盘,后者则是将每次执行的写命令保存到磁盘(类似于 MySQL 的 Binlog)。
569 0
Redis持久化之RDB的定义及执行原理
Redis 是内存数据库,就是将数据库中的内容保存在内存中,读写效率更高,但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。为了避免进程退出导致数据的永久丢失,需要定期将 Redis 中的数据以数据或命令的形式从内存保存到本地磁盘。当下次 Redis 重启时,利用持久化文件进行数据恢复。 Redis 提供了 RDB 和 AOF 两种持久化机制,前者将当前的数据保存到磁盘,后者则是将每次执行的写命令保存到磁盘(类似于 MySQL 的 Binlog)。
561 0
+关注
javaedge
关注公众号:JavaEdge,后台回复面试,领取更多大厂求职资源。曾在百度、携程、华为等大厂搬砖,专注Java生态各种中间件原理、框架源码、微服务、中台等架构设计及落地实战,只生产硬核干货!
2303
文章
1
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载