Master/slave (технологія)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Master/slave — це модель асиметричної взаємодії чи комунікації де один прилад чи процес («Master») контролює один чи більше інших пристроїв чи процесів («Slaves») і служить їх комунікаційним концентратором. У деяких системах «Master» обирається з групи придатних пристроїв чи процесів, а інші пристрої чи процеси з цієї групи є «Slaves» (напр. Group Replication в MySQL).

Приклади використання[ред. | ред. код]

  • В електроніці, master/slave взаємозв'язки викорстовуються для опису певних сценаріїв, як-от:
  • В реплікації баз даних, «master» бази даних є авторитетним джерелом даних, а «slave» бази даних (також іноді називаються «replica») синхронизується з ними.
  • У фотографії вторинні або їх ще називають підлеглі («slave») спалахи можуть бути синхронізовані з головним («master») спалахом для забезпечення світла з додаткових напрямків.
  • В автомобільній техніці головний («master») циліндр — це пристрій керування, який перетворює силу в гідравлічний тиск в гальмівній системі. Цей пристрій керує робочими («slave») циліндрами, розташованими на іншому кінці гідравлічної системи.

Проблеми термінології[ред. | ред. код]

Термінологія «master/slave» (дослівно — господар/раб) в технологічній сфері існує десятиліттями і навіть стала частиною багатьох стандартів, в тому числі Network News Transfer Protocol (RFC 977). Проте в 21 сторіччі ця термінологія стала предметом суперечок і критики, а група Global Language Monitor в 2004 році навіть назвала її найбільш політично не коректним терміном року[1] оскільки її асоціюють з рабством.[2] Деякі організації та продукти (напр. Бази даних чи Мови програмування) заміняють цю термінологію альтернативною.[3][4][5]

В 2003 році, округ Лос Анджелес в штаті Каліфорнія закликав виробників, постачальників і підрядників перестати використовувати термін «master» і «slave» в своїх продуктах/роботі. Округ зробив це прохання «виходячи з культурного різноманіття та чутливості округу Лос Анджелес».[6]

Рух «Black Lives Matter» знову підняв питання щодо цього терміну в 2020 році. Учасники руху стверджують, що зміни є поверхневими і що компанії повинні зробити реальні зміни, щоб підтримати чорношкіру спільноту.[7]

Заміни[ред. | ред. код]

Для заміни термінології «master/slave» були прийняті різні фрази. Деякі з них наведено нижче.

Primary/Secondary[ред. | ред. код]

В грудні 2017 року, неприбуткова корпорація Internet Systems Consortium вирішила дозволити слова «головний» (primary) та «другорядний» (secondary) як заміну для master/slave термінології у своєму програмному забезпеченні DNS-сервера BIND.[8]

Primary/Replica[ред. | ред. код]

В травні 2014 року, Django в своїй документації замінив термінологію master/slave на leader/follower[9] (лідер/послідовник), а пізніше, через два дні замінив і цей термін на primary/replica[10].[11]

Master/Replica[ред. | ред. код]

Термінологія master/replica була прийнята платформою Engine Yard[12] та базою даних Redis[13].

Source/Replica[ред. | ред. код]

В липні 2020 року, MySQL анонсувала заміну термінології master/slave на source/replica в майбутніх релізах.[14]

Master/Standby[ред. | ред. код]

PostgreSQL використовує термінологію master/standby.[15][16]

Provider/Consumer[ред. | ред. код]

OpenLDAP використовує термінологію provider/consumer.[17]

Controller/peripheral[ред. | ред. код]

В червні 2020 року, не прибуткова організація Open Source Hardware Association вирішила припинити використання таких акронімів як MOSI/MISO (master out slave in / master in slave out) для послідовного зв'язку при проектуванні електроніки. Замість цього будуть використовуватись акроніми COPI/CIPO (controller out peripheral in / controller in peripheral out).[18]

Initiator/Follower[ред. | ред. код]

Специфікація HDMI викорстовує терміни «Initiator» і «Follower» для протоколу зв'язку CEC.[19]

Main/Replica[ред. | ред. код]

GitHub замінили термін «master» на «main» в жовтні 2020 року.[20][21]

Client/Server[ред. | ред. код]

Modbus замінили термінологію master/slave на client/server в липні 2020 року.[22]

Python і Linux[ред. | ред. код]

В 2018 році, Python замінив використання терміну «master» на «main», «parent» та «server» і терміну «slave» на «worker», «child» та «helper» в залежності від контексту використання.[23] Ядро Linux прийняло подібну політику для використання більш конкретних термінів у новому коді чи документації.[24]

Примітки[ред. | ред. код]

  1. politically incorrect Archives. The Global Language Monitor (англ.). Архів оригіналу за 25 лютого 2021. Процитовано 14 лютого 2021.
  2. Tech Confronts Its Use of the Labels ‘Master’ and ‘Slave’. Wired (en-us) . ISSN 1059-1028. Архів оригіналу за 10 лютого 2021. Процитовано 14 лютого 2021.
  3. Updates to coding terminology - News - Apple Developer. developer.apple.com (англ.). Архів оригіналу за 3 березня 2021. Процитовано 14 лютого 2021.
  4. Архівована копія. go-review.googlesource.com. Архів оригіналу за 8 березня 2021. Процитовано 14 лютого 2021.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  5. On Jenkins Terminology Updates. On Jenkins Terminology Updates (англ.). Архів оригіналу за 24 січня 2021. Процитовано 14 лютого 2021.
  6. CNN.com - 'Master' and 'slave' computer labels unacceptable, officials say - Nov. 26, 2003. edition.cnn.com. Архів оригіналу за 12 листопада 2020. Процитовано 14 лютого 2021.
  7. Shankland, Stephen. Tech terms face scrutiny amid anti-racism efforts. CNET (англ.). Архів оригіналу за 9 лютого 2021. Процитовано 14 лютого 2021.
  8. Risk, Victoria (Mon Jun 15 20:12:41 UTC 2020). BIND Masters and slaves. Архів оригіналу за 2 березня 2021. Процитовано 14 лютого 2021.
  9. #22667 replaced occurrences of master/slave terminology with leader/follower by fcurella · Pull Request #2692 · django/django. GitHub (англ.). Архів оригіналу за 19 лютого 2021. Процитовано 14 лютого 2021.
  10. Multiple databases | Django documentation | Django. docs.djangoproject.com. Архів оригіналу за 5 березня 2021. Процитовано 14 лютого 2021.
  11. Fixes #22667. Replaced leader/follower terminology with primary/replica by fcurella · Pull Request #2694 · django/django. GitHub (англ.). Архів оригіналу за 6 травня 2021. Процитовано 14 лютого 2021.
  12. Set Up Database Replication. Engine Yard Developer Center (амер.). Архів оригіналу за 1 березня 2021. Процитовано 14 лютого 2021.
  13. Changing Redis master-slave replication terms with something else · Issue #5335 · redis/redis. GitHub (англ.). Архів оригіналу за 13 березня 2021. Процитовано 14 лютого 2021.
  14. Gryp, Kenny (1 липня 2020). MySQL Terminology Updates. MySQL High Availability (амер.). Архів оригіналу за 6 березня 2021. Процитовано 14 лютого 2021.
  15. High Availability and Load Balancing. PostgreSQL Documentation (англ.). 5 грудня 2011. Архів оригіналу за 6 травня 2021. Процитовано 14 лютого 2021.
  16. Gustafsson, Daniel (19 червня 2019). Remove one last occurrence of "replication slave" in comments. PostgreSQL Mailing List Archives (англ.). Архів оригіналу за 8 березня 2021. Процитовано 14 лютого 2021.
  17. Update wording to remove slave and master terms, consolidate on provider/consumer. https://git.openldap.org/ (Англійською) . 14 лютого 2021. Архів оригіналу за 10 травня 2021. Процитовано 14 лютого 2021.
  18. A Resolution to Redefine SPI Signal Names. Open Source Hardware Association (амер.). Архів оригіналу за 27 січня 2021. Процитовано 14 лютого 2021.
  19. HDMI Specification 1.4b. www.hdmi.org. Архів оригіналу за 19 січня 2021. Процитовано 14 лютого 2021.
  20. September 22, Jack Wallen in Developer on; 2020; Pst, 8:37 Am. GitHub to replace master with main starting in October: What developers need to do now. TechRepublic (англ.). Архів оригіналу за 8 лютого 2021. Процитовано 14 лютого 2021.
  21. GitHub abandons 'master' term to avoid slavery row. BBC News (брит.). 15 червня 2020. Архів оригіналу за 22 березня 2021. Процитовано 14 лютого 2021.
  22. Tracey, Lenore Tracey (9 липня 2020). Modbus Organization Replaces Master-Slave with Client-Server (PDF). https://www.modbus.org (Англійською) . Архів оригіналу (PDF) за 13 квітня 2021. Процитовано 14 лютого 2021.
  23. Issue 34605: Avoid master/slave terminology - Python tracker. bugs.python.org. Архів оригіналу за 10 лютого 2021. Процитовано 14 лютого 2021.
  24. Cimpanu, Catalin. Linux team approves new terminology, bans terms like 'blacklist' and 'slave'. ZDNet (англ.). Архів оригіналу за 24 лютого 2021. Процитовано 14 лютого 2021.