一致性哈希算法

一致性哈希算法 一致性哈希算法是一种分布式哈希(DHT)算法,设计目标是为了解决因特网中的热点(Hot spot)问题。一致性哈希算法是一种负载均衡算法。 一致性哈希的原理 环形Hash空间 按照常用的hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间中。现在我们可以将这些数字头尾相连,想象成一个闭合的环形。 然后把数据通过一定的hash算法处理后 … 继续阅读

负载均衡算法

负载均衡 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群技 … 继续阅读

线程池

最近在看线程池以及池化相关的技术,整理了一些线程池相关的东西。 线程池 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。 线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一 … 继续阅读

序列化以及序列化协议

序列化 序列化(serialization、marshalling)的过程是指将数据结构或者对象的状态转换成可以存储(比如文件、内存)或者传输的格式(比如网络)。反向操作就是反序列化(deserialization、unmarshalling)的过程。 更直白一点: * 序列化: 将数据结构或对象转换成二进制串的过程 * 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程 JS … 继续阅读

Redis雪崩、穿透和击穿

缓存雪崩 由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。 解决方法: 随机的缓存过期时间 给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存 1、缓存标 … 继续阅读

Redis RPush 命令

今天帮订单组那边,设计一个基于redis的消息系统,和架构师聊的时候,他建议了我使用RPush命令。RPush命令的返回结果是,操作之后列表的长度,这个在某些场合有一些特殊妙用。于是整理个文章来记录RPush命令 Redis Rpush 命令 Redis Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。 如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列 … 继续阅读