ZibuのHippocampus

人生天地间,忽如远行客

一致性哈希算法对2^32次方进行取模,将整个 Hash 空间看做一个圆环,把服务器节点的 IP/Hostname作为关键字进行哈希,对所有的数据,进行哈希,获得它在圆环上的位置,顺时针方向寻找,遇到的第一个服务器,就是所定位的服务器。

一致性哈希在分布式集群的场合中有广泛的应用,传统的对服务器数量取模计算,在节点数量变更时,会导致几乎所有请求的目标服务器都发生变化,大量缓存的同时失效,则将导致缓存雪崩,大量的请求直接落在数据库上。但在一致性哈希的场合中,受到影响的只有变更节点所对应的数据。

阅读全文 »

Storm是一个免费开源的分布式实时计算系统。利用 Storm 可以很容易做到可靠地处理无限的数据流。

数据在发往 Storm之前,一般会将数据直接存放到 MQ 中,如 Kafka。Storm 再从Kafka 中读取数据,因为Storm 只负责消费数据,并不提供数据缓存。

相比于 Hadoop,Storm 更注重数据的实时性,而 Hadoop 则更侧重于批处理,各有优点。

阅读全文 »

Raft是一种便于理解和实现的一致性算法,它在容错方面的表现与Paxos相当,不同之处在于它被分解为相对独立的子问题,并且它干净的解决了实际系统中所需的主要部分。

阅读全文 »

Redis有以下两个密码设置

  • requirepass: 用于客户端连接Redis
  • masterauth: 当 Redis Master 节点设置了 requirepass, 需要在 Slave 节点添加配置以连接。

Redis 密码设置可以通过修改配置文件和命令行的方式。注意:命令行的参数配置会在节点重启后消失。

阅读全文 »

SUBSCRIBE、UNSUBSCRIBE、PUBLISH 三个命令实现了Redis 的发布与订阅信息泛型,在这个实现中,发送者将信息发送给频道,频道将信息转发给所有该频道的订阅者。

发送者和接受者之间没有主动的交流,该模型通过对发布者和订阅者进行解构,极大地提高系统的扩展性。

阅读全文 »

Redis 作为了一款内存型数据库,数据存储在内存上,但由于内存的易失性,为避免数据丢失,则需要持久化机制将数据保存在磁盘上。为此 Redis 提供了多种不同级别的持久化方式:

  • RDB 持久化可以在指定的时间间隔内生成数据的时间点快照(Point-in-time Snapshot)
  • AOF (Apend Of File)持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。
  • Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
  • 你甚至可以关闭持久化功能,让数据只在服务器运行时存在。
阅读全文 »

内存 Swap是指:当物理内存不够时,系统将就会把一些不常用的内存页交换到 swap 空间(磁盘),以释放内存。

Swap 在提高内存使用上限的同时,也会由于磁盘本身的读写速率的问题,一定程度的降低内存读写效率。因此请根据具体情况使用 Swap 内存,且不宜超过物理内存的50%。

阅读全文 »

Bitmap 位图算法,通常使用于大数据量数字需要统计查重等场景。

阅读全文 »
0%