天天看點

政治不正确?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

來表示主從模式,這引起了很多開發者的抗議。
政治不正确?Redis/Python等的master-slave要改名了。
政治不正确?Redis/Python等的master-slave要改名了。

值得注意的是,以上送出記錄的第一個送出者antirez就是Redis的作者。他的真名叫Salvatore Sanfilippo,antirez是他的網名。

對于大部分開發者抗議使用master-slave這一描述,antirez 表示這已經不是開發者第一次提這種要求了,他很抱歉 master-slave 這個描述讓許多人感到失望,但他不認為這個特定于上下文環境的術語具有侵犯性。

但是,雖然這麼說,但是antirez還是在推特上發起了一個投票,結果顯示,超過半數的人希望修改這一描述。

政治不正确?Redis/Python等的master-slave要改名了。
政治不正确?Redis/Python等的master-slave要改名了。
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’ 這種。他還指出之前就已有關于這個問題的投訴,但都是私下提出的 —— 以避免引起激烈的争論。

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

對于這個問題,Python的創始人,已經宣布退出Python核心開發組決策層的Guido van Rossum被請回參與了這一事件的讨論及仲裁。最終他做出了重要的決定:

計劃在Python 3.8中,将slave改為worker、helper、另外将master process改為parent process。

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

前塵與未來

事實上,在技術圈子裡,這種關于政治正确的事屢見不鮮。其實,這也不是關于master-slave的第一次讨論,Redis也并不是第一個屈服的。

早在2014 年,Drupal 項目就用 primary 和 replica 替換了 master 和 slave;Django 項目則用 leader 和 follower 替換之;CouchDB 項目也做了類似語言上的淨化。如今,Redis和Python也将在後續版本中國年逐漸淡化master-slave這一說法。

随着Redis和Python的妥協,相信未來會有更多的軟體也會做一些相應的修改。那麼問題來了,下一個會是誰呢?

繼master-slave之後,會不會有另外的詞彙被質疑呢?下一個詞又會是什麼呢?

最後,還要說的就是,起名,真的很重要!

原文釋出時間為:2018-09-20

本文作者:Hollis

本文來自雲栖社群合作夥伴“Hollis”,了解相關資訊可以關注“Hollis”。