Высоконагруженные приложения - Глава 9 - Согласованность и Консенсус

Высоконагруженные приложения - Глава 9 - Согласованность и Консенсус

Ранее книжный клуб нашей компании изучил отличную книгу:

Martin Kleppmann - Designing Data-Intensive Applications

Мартин Клеппман - Высоконагруженные приложения. Программирование, масштабирование, поддержка

Это - лучшая книга о создании комплексных масштабируемых программных систем, которые я когда-либо читал. 💪

Как обычно, я подготовил краткий обзор и майнд-мапу.

В главе 9 рассказывается о согласованности и консенсусе в распределенных системах. Она охватывает следующие темы:

  • Что такое согласованность и согласованность в конечном счете.
  • Линеаризуемость. Зачем это нужно. Отличие от сериализуемости. Как реализовать линеаризуемость. Стоимость линеаризуемости. Теорема CAP.
  • Гарантии определения порядка. Что такое порядок и причинность. Их отношение к линеаризуемости. Sequence Number Ordering и как его реализовать. Total Order Broadcast и как его реализовать.
  • Распределенные транзакции и консенсус. Зачем нужны консенсус и распределенные транзакции. Как их реализовать, связанные с ними проблемы и программное обеспечение, которое помогает.

Резюме:

  • Нам не нужен Консенсус для КАЖДОЙ операции:
    • Мы можем использовать одного лидера с возможностью линеаризации, а консенсус использовать для выбора нового лидера.
    • Или мы можем использовать причинную согласованность, а консенсус использовать для некоторых проблемных случаев.
    • Также у нас есть специальное программное обеспечение, реализующее Консенсус.
  • Некоторые системы (без лидера / с несколькими лидерами) не нуждаются в линеаризуемости и могут работать с ветвлением и слиянием.

Скачать всю майнд-мапу в PDF

Смотрите также: