负载均衡算法(一致性Hash算法,通俗易懂)
一、普通hash算法普通hash算法最大的特点是散列,说白了就是将一些具有相同特征的数据打散成完全不同,随机,均匀分配的数据看这个例子将abc和abcd进行md5运算,得到如下结果可以看出,两个及其相似的字符串进行md5后生成了两个完全不同的字符串,负载均衡正是利用这一特性,对于大量随机的请求或调用,通过一定形式的Hash将他们均匀的散列,从而实现压力的平均化。(当然,并不是只要使用了Has...
一、普通hash算法普通hash算法最大的特点是散列,说白了就是将一些具有相同特征的数据打散成完全不同,随机,均匀分配的数据看这个例子将abc和abcd进行md5运算,得到如下结果可以看出,两个及其相似的字符串进行md5后生成了两个完全不同的字符串,负载均衡正是利用这一特性,对于大量随机的请求或调用,通过一定形式的Hash将他们均匀的散列,从而实现压力的平均化。(当然,并不是只要使用了Has...
分布式项目中要实现单点登录(SSO - Single Sign On):对于同一个客户端(例如 Chrome 浏览器),只要登录了一个子站(例如 a.com),则所有子站(b.com、c.com)都认为已经登录。比如用户在登录淘宝后,跳转到天猫时就已经登录了。通过redis缓存和cookie实现单点登录:登录接口逻辑处理: @ResponseBody @RequestMappi...
服务器高可用!Redis缓存使用流程客户端向服务器发送读请求,此时后台会先去缓存中查数据,如果数据命中,那么返回结果,反之去数据库中查询,如果数据库中查到数据,那么返回数据,并且写入缓存,如果没有查到该数据即返回空结果缓存穿透(数据未命中)概念缓存穿透的概念很简单,用户想要查询一个数据,发现Redis缓存中没有,也就是缓存没有命中,于是就向数据库查询,然后发现也没有,于是本次查询失败。当用户...
Redis哨兵模式(sentinel)概述主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。手动调节不是一种推荐的方式,更多的时候我们优先考虑哨兵(Sentinel)模式。Redis从2.8开始正式提供了Sentinel(哨兵)架构来解决这个问题。哨兵模式相当于谋朝篡位的自动版,能够后台监控主机是否故障,如...
Redis事务Redis事务简介Redis事务的本质是一组命令的执行,一个事务中的所有命令都会被序列化,所有命令按照入队的顺序执行,先入队的先执行;Redis事务没有隔离级别;单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。一次性;顺序性;排他性Redis事务执行顺序开启事务(multi)命令入队(多条...
Redis三种特殊数据类型Geospatial(地理位置)127.0.0.1:6379> GEOADD china:city 116.46 39.92 beijing #将指定的地理空间位置(经度,纬度,名称)添加到key中 (integer) 1 127.0.0.1:6379> GEOADD china:city 121.48 31.22 shanghai (integer) ...
Redis简介Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Re...