Redis哨兵模式与集群模式

4种 Redis 集群方案介绍+优缺点对比

主从模式存在一个问题:master节点故障后服务,需要人为的手动将slave节点切换成为maser节点后服务才恢复

Redis在3.0上加入了 Cluster 集群模式,实现了 Redis 的分布式存储,也就是说每台 Redis 节点上存储不同的数据。cluster模式为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器

TCP的11种状态

  • CLOSED(关闭):初始状态,表示连接未建立或已关闭。
  • LISTEN(监听):表示服务器正在等待客户端请求连接。
  • SYN-SENT(同步已发送):表示客户端已经发送了连接请求报文段,并等待服务器确认。
  • SYN-RCVD(SYN-RECEIVED,同步已接收):表示服务器已经接收到了连接请求报文段,并向客户端发送了确认报文段。
  • ESTABLISHED(已建立):表示连接已经建立,双方可以进行数据传输。
  • FIN-WAIT-1(终止等待1):表示客户端已经发送了关闭连接请求报文段,等待服务器确认或拒绝。
  • FIN-WAIT-2(终止等待2):表示客户端已经收到了服务器的确认报文段,等待服务器发送关闭连接请求报文段。
  • CLOSE-WAIT(关闭等待):表示服务器已经发送了关闭连接请求报文段,等待客户端确认或拒绝。
  • CLOSING(关闭中):表示客户端和服务器同时发送了关闭连接请求报文段,等待对方确认或拒绝。
  • LAST-ACK(最后确认):表示服务器已经收到了客户端的关闭连接请求报文段,并发送了确认报文段,等待客户端确认或拒绝。
  • TIME-WAIT(时间等待):表示连接已经关闭,但是为了保证最后的数据传输已经完成,客户端和服务器都需要等待一段时间。

go env -w GOSUMDB=off

如果go get时啥的出问题, 一定记得关闭GOSUMDB, 命令为

go env -w GOSUMDB=off

几乎所有和go mod有关的疑难杂症,都是没执行这个命令!

Eisel-Lemire算法与浮点数解析

Rust v1.55.0 发布(2021-09-10),其中 标准库对浮点解析的实现更新为 Eisel-Lemire 算法,更快、更准确,覆盖了边界情况

Go 1.16(2021-02-16) strcov包的ParseFloat方法,也改成了使用Eisel-Lemire 算法实现:

1
2
strconv
ParseFloat now uses the Eisel-Lemire algorithm, improving performance by up to a factor of 2. This can also speed up decoding textual formats like encoding/json.

Adler32算法

ZooKeeper

为什么需要Adler-32算法

关于校验码算法,我们最熟悉的算法应该是CRC校验算法,那么有了CRC校验算法之后,为什么还要提出这样一个算法呢?