Курс высокие нагрузки: очереди (отрывок)

17,457 views
18,960 views

Published on

Разработка надёжных высоконагруженных систем
Москва, 24, 25 и 26 мая

http://smira.highload.ru/

Трехдневный мастер-класс с практическими заданиями

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
17,457
On SlideShare
0
From Embeds
0
Number of Embeds
15,366
Actions
Shares
0
Downloads
13
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Курс высокие нагрузки: очереди (отрывок)

  1. 1. © Copyright 2014 Andrey Smirnov Очереди • Выполнение вычислительных действий • Асинхронные коммуникации • почта • sms • push-нотификации • …
  2. 2. © Copyright 2014 Andrey Smirnov Producer-Consumer
  3. 3. © Copyright 2014 Andrey Smirnov Publish-Subscribe • Publisher ничего не знает о subscriber • Subcriber может указать фильтр получения (маску вида user.*.signup)
  4. 4. © Copyright 2014 Andrey Smirnov beanstalkd • Producer-Consumer • Простой протокол, нет кластеризации • Очередь задач • buried-задачи • TTR
  5. 5. © Copyright 2014 Andrey Smirnov Redis • Publish-Subscribe: • PUBLISH, SUBSCRIBE, PSUBCRIBE, … • Producer-Consumer: • BLPOP, LPUSH, BRPOPLPUSH, … • Сложно реализовать надежного consumer
  6. 6. © Copyright 2014 Andrey Smirnov pgq • Publish-Subscribe • Реализовано средствами PostgreSQL • Транзакционность
  7. 7. © Copyright 2014 Andrey Smirnov Kafka • Publish-Subcribe, Producer-Consumer • Распределенные очереди, репликация • ZooKeeper в качестве динамической конфигурации • Хранение очередей в файловой системе (последовательный ввод-вывод)
  8. 8. © Copyright 2014 Andrey Smirnov Партиционирование очередей • Очередь делится по ключу • Каждая часть независима • События внутри партиции упорядочены
  9. 9. © Copyright 2014 Andrey Smirnov Consumer Group • Consumerы из группы имеют общий указатель чтения • Одна группа consumer’ов: produce-consume • Каждый consumer в своей группе: publish- subscribe
  10. 10. © Copyright 2014 Andrey Smirnov Failover • За партицией закреплен master и реплики • Конфигурация в ZooKeeper • Failover в случае недоступности, данные обновляются в ZooKeeper • Клиент сам определяет, к какому узлу подсоединяться
  11. 11. © Copyright 2014 Andrey Smirnov RabbitMQ • Erlang • “Победившая” реализация AMQP • Реализация AMQP 0-9-1
  12. 12. © Copyright 2014 Andrey Smirnov AMQP • Протокол, разработанный, в частности iMatix • Enterprise-взгляд • “Один вариант для всех” • Последующий отказ создателей от продолжения работы
  13. 13. © Copyright 2014 Andrey Smirnov AMQP
  14. 14. © Copyright 2014 Andrey Smirnov Direct Exchange
  15. 15. © Copyright 2014 Andrey Smirnov Fanout Exchange
  16. 16. © Copyright 2014 Andrey Smirnov Topic Exchange
  17. 17. © Copyright 2014 Andrey Smirnov AMQP • Брокер - SPOF • Брокер конфигурируется API-запросами • Надежные и ненадежные очереди
  18. 18. © Copyright 2014 Andrey Smirnov Clustering • Erlang кластер (не WAN) • Дублируется конфигурация, но не очереди • Клиент может подключаться к любому узлу
  19. 19. © Copyright 2014 Andrey Smirnov High Availability • На основе cluster • У очереди есть master и slavе’ы • Master-slave promotion • Возможны потери и перепосылки сообщений
  20. 20. © Copyright 2014 Andrey Smirnov Хранение очередей • Хранение в памяти (пока возможно) • Message Index - хранение содержимого сообщений • Queue Index - принадлежность сообщений очереди
  21. 21. © Copyright 2014 Andrey Smirnov Зачем еще нужна очередь? • RPC ❔ • Метрики: события • Сбор логов
  22. 22. © Copyright 2014 Andrey Smirnov Надежность • Семантика очереди: • producer положил в очередь, ack - ? • consume • at most once • at least once
  23. 23. © Copyright 2014 Andrey Smirnov Надежность • Брокер очередей - SPOF • Чем строже семантика, чем хуже производительность • Распределенность накладывает ограничения
  24. 24. © Copyright 2014 Andrey Smirnov Очередь в backend • После выполнения запроса часть действий остается во внутренней очереди • Корректный shutdown • Надежность, применимость?
  25. 25. ? © Copyright 2014 Andrey Smirnov Где нам могут пригодиться очереди в twtr? Какой будет эта очередь?
  26. 26. © Copyright 2014 Andrey Smirnov Разработка  надежных   высоконагруженных  систем • 24,  25  и  26-­‐го  мая,  Москва   • h4p://smira.highload.ru/   • Мастер-­‐класс  с  практическими  заданиями

×