逐步实现TCP服务端Step04-1:改造

目前的这版程序不支持多客户并发,并非由于结构的局限性导致的无法实现。而是由于在早期不想引入不相关的复杂度而故意没去做这部分内容。

现在进行改造。主要修改netio,将监听socket置为非阻塞,让accept也参与到主循环中来。另外,还需要一个容器来存放那些已被accept了的新socket 。

这个容器要能方便地删除元素(客户离线),同时支持随机访问。基于数组存储的链式结构可以满足需求。

基于C++模板实现了一个不关注元素具体类型的List类 ...


一致性哈希

一致性哈希是一种特殊的哈希过程,它被用于bucket数量会动态变化的场景中。所谓的“一致性”是指当bucket数量发生改变时,绝大多数的key-value映射关系都不会改变。若使用不具备“一致性”特性的哈希过程,几乎所有的key-value映射关系都将遭到破坏。

哈希的一般过程是:用户输入一个key,由哈希函数计算得出哈希值,然后基于这个值再算出一个索引号,最后用该索引号在一组bucket中检索出一个特定的bucket,在该bucket中读写value:

上图假设4个字符串类型的key ...