beihai

beihai blog

分布式一致性协议 Raft 原理

Raft 是一种基于消息传递通信模型、用来管理日志复制的一致性协议,它允许一组机器像一个整体一样工作,即使其中的一些机器出现错误也能正常提供服务。在 Raft 被提出来之前,Paxos 协议是第一个被证明的一致性算法,但是 Paxos 的原理理解与工程实现都很困难。Raft 是 Paxos 的一种实现方式,目标是提供更好理解的算法,并被证明可以提供与 Paxos 相同的容错性以及性能。

加密哈希算法的实现原理

哈希算法(Hash function)又称散列算法,是一种从任何数据中创建小的数字“指纹”的方法。哈希算法只需满足把一个散列对象映射到另一个区间的需求,因此根据使用场景的不同,可将哈希算法分为加密哈希与非加密哈希。

2019 年总结:教训、反思、新尝试

将年终总结以“教训、反思、新尝试”为主题未免感觉有些小题大作,但这也是我在 2019 年的心路历程。在这一年里除了工程能力上的提升,还在个人学习方式、团队协同工作方面进行了一些思考,对上半年比赛过程中产生的教训进行了反思,希望在未来的工作中少犯同类的错误。

Redis RDB 与 AOF 持久化 · Analyze

Redis 是内存数据库,将数据保存在内存中,以换取更快的读取速度。但由于内存是易失性存储器,一旦进程退出或者硬件设备出现故障,Redis 存储的数据可能就会丢失。为了解决数据持久化问题,Redis 提供了 RDB 快照与 AOF 写操作记录两种方案,这篇文章就这两种分案的实现方式进行分析。

Redis 慢查询日志 · Analyze

Redis 的慢查询日志功能用来记录执行时间超过给定时长的命令请求,我们可以利用这个功能分析和优化查询速度。本篇文章将会对 Redis 的慢查询日志功能的实现原理进行分析。

Redis RESP 通信协议 · Analyze

Redis 是 client-server 架构的软件,了解 Redis 客户端与服务端的通信原理,可以更好地理解 Redis 的工作方式。Redis 客户端和服务端之间使用 RESP(REdis Serialization Protocol) 二进制安全文本协议进行通信,该协议是专为 Redis 设计的,但由于该协议实现简单,也可以将其用于其他的项目中。

Redis 事件的实现 · Analyze

Redis 采用事件驱动机制来处理大量的 I/O 操作,并实现了自己的事件驱动库,基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序监听多个 Socket,以处理大量的事件。

Redis db 的实现 · Analyze

在了解 Redis 的底层数据结构之后,Redis 是如何将这些碎片化的数据以键值对的形式存储在数据库中,并执行内存回收操作,Redis 数据库的实现又存在哪些特殊之处?这篇文章将会分析 Redis 数据库的实现。