政治不正确?Redis/Python等的master-slave要改名了。
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之后,会不会有另外的词汇被质疑呢?下一个词又会是什么呢?
最后,还要说的就是,起名,真的很重要!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python3基础——运算符、数据类型
一、Python 3 的数据类型 Python之所以简单,是因为赋值一个变量的时候,不需要定义这个变量的数据类型。 Python3的六个标准数据类型:Number数字型、string字符串、list列表、tuple元组、sets集合、dictionary字典。 二、Number数字型 1、Number数字型包含:int整形、float浮点型、bool布尔型、complex复数型。 1-1、整型(int):例如 a = 10 1-2、布尔型(bool):True、False 1-3、浮点型(float):round(float,ndigits) 其中float代表数字,ndigits代表精度。规则:四舍六入。 示例: a = 3.1415926 m = round(a,3) print(m) 结果:m=3.14 二、Python 运算符 2-1、数字运算符: +加、-减、*乘、/除、%余数 2-2、关系运算符:等于==、不等于!=、大于>、小于<、大于等于>=、小于等于<= 2-3、赋值...
- 下一篇
如何轻松搞定数据科学面试:Python&R语言篇
对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理、分析和可视化。 在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言。这两种语言各有优缺点,掌握这两种语言大有益处,但是针对面试者而言,最好的方式是学习其中一种并熟练掌握。 在本文中,我对这两种语言分别进行介绍,希望能帮助你更好地应对数据科学面试。 1. 选择一种语言 正如上文中所提到的,我并不建议你两种语言都掌握。在我所经历的面试中,无论是作为面试者还是面试官,我发现这些面试都允许面试者用任何一种语言解决问题。所以选取其中一种进行学习即可。 那么,应该选Python还是R语言呢? Python Python是一种多用途且功能齐全的编程语言。旨在实现C语言、Java等编程语言同样的的功能。与C语言不同,Python使用起来更方便,具有自动内存管理和动态类型等功能。 在我看来,用Python进行数据科学优势在于:它能够像生产系统的后端语言一样。也就是说,作为数据科学家,你的任何建模都可以通过在线网站或软件产品等形式轻松实现。如果你主要的兴趣是写代码或原型化代码,我推荐选择Python。 R 另一方...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- 设置Eclipse缩进为4个空格,增强代码规范
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音