Py学习  »  Python

政治不正确?Redis\/Python等的master-slave要改名了。

Hollis • 5 年前 • 637 次点击  

Master/Slave模式,是分布式系统中一个比较常用的计算结构。这个词最开始来源于MySql数据库,主要表示MySQL数据库自身提供的主从复制功能,通过master-slave,可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。

这个名词由两个单词组合而成:Master和Slave。

Master:主人、雇主。 Slave:奴,奴隶。

争议焦点

组合成的词一般写作Master/Slave 或者 master-slave,一般表示主从结构。这个词本身是一个没有任何感情色彩的中性词语。

master-slave目前在软件行业内被广泛使用,如Mysql、Redis、Python、mongodb、ActiveMQ、PostgreSQL、Ruby、Jenkins 等都有类似的描述。

但是,随着人们开始越来越重视人权、歧视等问题,很多开发者认为这一描述具有侵犯性,即认为使用master-slave是政治不正确的。所以,出现了很多声音呼吁修改这一描述。他们的主要诉求是不要使用master-slave这一词汇,而是使用其他词汇代替。

在西方价值观中的政治正确,是指在政治立场上隐瞒真实想法与客观事实,在言语、政策、行为上不能“冒犯”少数族裔和弱势群体,对弱势群体“极其照顾”(特权),无视强势群体的正常需求,一味要求其忍让、包容、退让、付出等。

这件事儿之所以最近这么受重视,是因为比较关键的技术被要求修改,那就是Redis和Python。

Redis被迫修改

2018年9月7日,Redis 5.0 RC5 发布了,该版本中仍然使用master-slave来表示主从模式,这引起了很多开发者的抗议。

值得注意的是,以上提交记录的第一个提交者antirez就是Redis的作者。他的真名叫Salvatore Sanfilippo,antirez是他的网名。

对于大部分开发者抗议使用master-slave这一描述,antirez 表示这已经不是开发者第一次提这种要求了,他很抱歉 master-slave 这个描述让许多人感到失望,但他不认为这个特定于上下文环境的术语具有侵犯性。

但是,虽然这么说,但是antirez还是在推特上发起了一个投票,结果显示,超过半数的人希望修改这一描述。

antirez 还表示,这个看似简单的修改实际上要付出昂贵的代价,并产生兼容性问题。例如:

  • 不能在应用现有的 PR

  • 现在有像 INFO 和 ROLE 这样的命令 —— 使用包含 slave 术语的协议进行回复

  • 术语 slave 中的源代码包含 1500 个事件

  • 拥有私人项目并根据需要进行代码合并的人会遇到很多问题

可以看到,冒然进行变动会产生很多问题。而且,现在发布的 Redis 5 候选版本是向后兼容的首个稳定版本。

最后 antirez 决定,在不影响项目进度的情况下做了些妥协,表达了希望能折中解决问题的建议。

短期变化

  • 将 master-slave 架构的描述改为 master-replica

  • 为 SLAVEOF 提供别名 REPLICAOF,所以仍然可以使用 SLAVEOF,但多了一个选项

  • 保持继续使用 slave 来对 INFO 和 ROLE 进行回应,现在目前看来,这仍然是一个重大的破坏性变更

长期变化

  • 编写一个 INFO 的替代品

  • 在内部替换很多东西,因为技术原因,如果作了改动,许多 PR 也会无法应用,所以必须在某些地方进行大变动

Python可能也会修改

同样是2018年9月7日,在 Red Hat 工作的 Python 开发者 Victor Stinner 公开提交了 4 个 PR,希望能将 Python 文档和代码中出现的 “master” 和 “slave” 修改为像 “parent” 和 “worker” 这样的术语,以及对其他类似的术语也进行修改。

Victor Stinner 在他的 bug report 中解释说,出于多元化的考虑,尽量避免出现与奴隶制相关的术语反而可能会更好,像 ‘master’ 和 ‘slave’ 这种。他还指出之前就已有关于这个问题的投诉,但都是私下提出的 —— 以避免引起激烈的争论。

对于这个问题,Python的创始人,已经宣布退出Python核心开发组决策层的Guido van Rossum被请回参与了这一事件的讨论及仲裁。最终他做出了重要的决定:

计划在Python 3.8中,将slave改为worker、helper、另外将master process改为parent process。

前尘与未来

事实上,在技术圈子里,这种关于政治正确的事屡见不鲜。其实,这也不是关于master-slave的第一次讨论,Redis也并不是第一个屈服的。

早在2014 年,Drupal 项目就用 primary 和 replica 替换了 master 和 slave;Django 项目则用 leader 和 follower 替换之;CouchDB 项目也做了类似语言上的净化。如今,Redis和Python也将在后续版本中国年逐渐淡化master-slave这一说法。

随着Redis和Python的妥协,相信未来会有更多的软件也会做一些相应的修改。那么问题来了,下一个会是谁呢?

继master-slave之后,会不会有另外的词汇被质疑呢?下一个词又会是什么呢?

最后,还要说的就是,起名,真的很重要!

福利时间

书籍介绍

《Java 核心技术及面试指南》


本书根据大多数软件公司对高级开发的普遍标准,为初级程序员提供了升级到高级工程师的路径,并以项目开发和面试为导向,精准地讲述升级必备的技能要点。

 

此外,本书还提到了对项目开发很有帮助的“设计模式”和“虚拟机内存调优的知识点”,在这部分中虽然大家看不到纯理论性的讲述,但能看到很多能实际操作的干货。本书还从资深面试官的角度,给出了如何准备简历和面试的建议。


全面:作者团队阵容强大,既有架构师、培训师,又有面试官,分别从自身经验出发讲解工作中遇到的痛点。

实用:知识点主要围绕技术升级和面试技巧展开,让你在升级专业知识的同时更能顺利通过面试;本书将相关知识的系统整合,符合现在Java的主流应用,拒绝全面不实用。 

丰富:附带Java Core常用知识点的视频和面试题,并且内容会不断更新。

等不及了,扫码快速购买

参与方式


活动截止时间:9月25日 上午10:00


1、本文下方评论,点赞数排名前5名,获得书籍1本。


微信公众号的精选留言最多只能有100条,我会从所有留言者中筛选部分有意义的留言选择上墙。


你可以说说你最近的学习工作状态、对于Hollis的建议、或者你对Hollis的看法等。“我只想要本书”、“求点赞”之类的留言不会被上墙。


PS:为了避免刷赞,为了给更多人机会,最近两次内获得过点赞送礼的用户无法再次获得。

 

直面Java第125期:Java中List>和List之间的区别是什么?

成神之路第013期:Java集合类—Map。


- MORE | 更多精彩文章 -


如果你看到了这里,说明你喜欢本文。

那么请长按二维码,关注Hollis

转发朋友圈,是对我最大的支持。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/dWAVG5Y5FI
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/24232
 
637 次点击