Master/Slave 是一个在计算机编辑中广泛使用的术语,在 Redis 用来描述主/从进程。而有些人认为 master-slave 术语被认为具有侵犯性,所以出现了很多呼吁修改的声音。
Redis
Redis作者 antirez 表示他很抱歉 master-slave 这个描述让许多人感到失望,但他不认为这个特定于上下文环境的术语具有侵犯性。所以他在 数据库 中使用 master-slave 当然不是以任何方式暗示“奴隶制度”。
antirez 还表示,这个看似简单的修改实际上要付出昂贵的代价,并产生兼容性问题。例如:
不能在应用现有的 PR
现在有像 INFO 和 ROLE 这样的命令 —— 使用包含 slave 术语的协议进行回复
术语 slave 中的源代码包含 1500 个事件
拥有私人项目并根据需要进行代码合并的人会遇到很多问题
可以看到,冒然进行变动会产生很多问题。而且,现在发布的 Redis 5 候选版本是向后兼容的首个稳定版本。所以这也是需要考虑的一方面。最后 antirez 表达了希望能折中解决问题的建议 ——
短期内的变化:
将 master-slave 架构的描述改为 master-replica
为 SLAVEOF 提供别名 REPLICAOF,所以仍然可以使用 SLAVEOF,但多了一个选项
保持继续使用 slave 来对 INFO 和 ROLE 进行回应,现在目前看来,这仍然是一个重大的破坏性变更
Python
就在上周,在 Red Hat 工作的 Python 开发者 Victor Stinner 公开提交了 4 个 PR,希望能将 Python 文档和代码中出现的 "master" 和 "slave" 修改为像 "parent" 和 "worker" 这样的术语,以及对其他类似的术语也进行修改。Victor Stinner 在他的 bug report 中解释说,出于多元化的考虑,尽量避免出现与奴隶制相关的术语反而可能会更好,像 'master' 和 'slave' 这种。他还指出之前就已有关于这个问题的投诉,但都是私下提出的 —— 以避免引起激烈的争论。