Gossip protocol[1] (протокол пліток) — стиль протоколу комунікації комп'ютер-комп'ютер, натхненний плітками в соціальних мережах. Сучасні розподілені системи зазвичай використовують протокол gossip, щоб вирішити проблеми, які може бути важко вирішити у інший спосіб, або коли мережа має незручну структуру, є дуже великою, чи тому, що використання gossip є найефективнішим рішенням з наявних.

Термін epidemic protocol інколи використовується як синонім протоколу gossip, бо останній поширює інформацію способом, схожим на поширення вірусу.

Gossip комунікація ред.

Концепція gossip комунікації може бути проілюстрована як аналогія офісних працівників, що поширюють чутки. Для прикладу кожної години вони збираються біля кулера. Кожен працівник ділиться плітками з іншим, вибраним випадково. Зранку Аліса починає нову плітку, що Чарлі фарбує вуса, і розказує її Бобу. Наступного разу Боб розказує Дейву, а Аліса Єві. Після кожної зустрічі кількість людей подвоюється (не враховуючи повтори, коли Аліса спробує розказати історію Франку, лише дізнавшись, що Франк її чув від Дейва). Комп'ютерні системи зазвичай імплементують протокол такого типу, як випадковий «вибір учасників»: з заданою частотою, кожен комп'ютер випадково обирає іншого і ділиться з ним свіжими чутками.

Потужність протоколу полягає в надійному поширенні інформації. Навіть якщо Дейв не зрозуміє Боба, він, скоріш за все, знайде когось іншого, щоб дізнатись новини.

Виражаючи вищесказане в технічних термінах, gossip protocol повинен відповідати наступним вимогам:

  • Ядро протоколу передбачає періодичну парну, міжпроцесну взаємодію.
  • Інформація, що при цьому передається, має обмежений розмір.
  • Коли агенти взаємодіють, стан хоча б одного агента змінюється, щоб відобразити стан іншого.
  • Надійна комунікація не передбачена.
  • Частота взаємодії є низькою в порівнянні з типовими затримками повідомлень, тому затрати протоколу є незначними.
  • Наявна яка-небудь форма випадкового вибору учасників. Вони можуть вибиратись з повної множини, чи з підмножини сусідів.
  • Наявна надмірність інформації, через реплікацію.

Приклади коду ред.

Існує три відомих бібліотеки, які реалізують алгоритм gossip, щоб виявити вузли в одноранговій мережі:

  • Apache Gossip використовує UDP, написаний на Java, підтримка довільних даних і CRDT типів.
  • gossip-python [Архівовано 19 жовтня 2020 у Wayback Machine.] використовує TCP стек, дозволяє обмін інформацією через побудовану мережу.
  • Smudge [Архівовано 1 червня 2017 у Wayback Machine.] написаний на Go і використовує UDP для обміну інмормацією про стан; також дозволяє поширювати довільні дані через побудовану мережу.

Примітки ред.

  1. Demers, Alan; Greene, Dan; Hauser, Carl; Irish, Wes; Larson, John; Shenker, Scott; Sturgis, Howard; Swinehart, Dan; Terry, Doug (1 січня 1987). Epidemic Algorithms for Replicated Database Maintenance. Proceedings of the Sixth Annual ACM Symposium on Principles of Distributed Computing. PODC '87. New York, NY, USA: ACM: 1—12. doi:10.1145/41840.41841. ISBN 089791239X.