6. billing.ru
Как на самом деле устроен мир
6
Узел 1 Узел 2 Узел N
Промежуточное звено
Клиент 1 Клиент 2 Клиент M
…
…
7. billing.ru
Проблемы масштабируемости
Проблема Решения
Значительное
время ожидания
ответа от
удаленного узла
1. Применение децентрализованных алгоритмов:
• Работа в условиях отсутствия полной
информации о системе
• Принятие решения на основе локальной
информации
2. Сокрытие времени ожидания:
• Асинхронное выполнение
• Выполнение на клиенте
Распределение
нагрузки
1. Применение алгоритмов:
• Хеш функция (mod)
• Случайное распределение
• Round robin
• Распределение в зависимости от нагрузки, % CPU
и т.п.
2. Shared Nothing Architecture
Падение узлов
/ штатный
рестарт узлов
1. Репликация
2. Кеширование
7
12. billing.ru
Модели целостности системы
ACID BASE
• Atomicity — Атомарность
• Consistency — Согласованность
• Isolation — Изолированность
• Durability — Надежность
• Basic Availability – базовая
доступность
• Soft-state – неустойчивое
состояние
• Eventual consistency –
согласованность в конечном
итоге
RDBMS • NoSQL (не всегда)
• Распределенные DB
MySQL, Oracle Cassandra, Dynamo, MongoDB
• Согласованность данных за
счет доступности
• Доступность данных за счет
согласованности
• Большая надежность • Лучшая производительность
• Пессимистичная стратегия • Оптимистичная стратегия
14. billing.ru
CAP Теорема
В любой реализации распределѐнных
вычислений возможно обеспечить не более двух
из трѐх следующих свойств Consistency
(согласованность данных), Availability
(доступность) и Partition tolerance (устойчивость
к разделению).
Дополнение к теореме: любая распределенная
система должна быть P (устойчивой к
разделению)!
Уточнение теоремы: при отсутствии P система
может (должна) быть CA
17. billing.ru
CAP Теорема – применение
17
Думать о своих данных: разные данные –
разные нужды (книжный магазин vs торговля
акциями);
Может лучше согласованность в конечном
итоге, но 100% доступность?
В высоконагруженных системах массового
обслуживания лучше доступность, чем
согласованность.
Объяснять заказчикам, что при падении
(рестарте) узлов системы возможно обеспечить
только ―согласованность в конечном итоге‖.
18. billing.ru
Чего в презентации не было
Event-Driven Architecture
AMQP (Advanced Message Queuing Protocol)
RabbitMQ
Паттерны масштабирования (Scalability Patterns)
Google – поставщик инноваций:
MapReduce
GFS (Google File System)
LevelDB
Применение NoSQL DB
Facebook: Cassandra
LinkedIn: Voldemort
Amazon: DynamoDB
Yahoo: Hbase
Распределенные файловые системы
Распределенные хранилища данных RAID
18