Рубрика:
Разработка /
Проектирование
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСАНДР КАЛЕНДАРЕВ, РБК Медиа, программист, akalend@mail.ru
Очереди. Теория и практика
В майском номере [1] было рассмотрено взаимодействие разных потоков с использованием очередей в рамках одного адресного пространства. А как организовать взаимодействие для нескольких процессов, даже если они разнесены на разные физические серверы?
Без сетевого взаимодействия тут никак не обойтись. И что в данном случае является связующим звеном между взаимодействующими компонентами? Это либо специализированная сетевая библиотека, либо выделенный процесс, именуемый сервером очередей. В данной статье будут рассмотрены различные способы использования очередей.
Очередь – это структура данных, которая соответствует принципу: первый пришел, первый вышел.
Вот несколько архитектурно-важных причин использования очередей:
- Масштабируемость – очереди сообщений позволяют распределить порции информации между несколькими системами обработки. Если система не справляется с входящим потоком информации, мы можем, не изменяя архитектуру, нарастить элементы обработки информации.
- Отказоустойчивость – очереди сообщений позволяют отделить обрабатывающие информацию процессы таким образом, что если некий процесс выйдет из строя, то сообщения могут быть добавлены в очередь и могут быть обработаны позднее, после восстановления.
- Снижение пиковой нагрузки – процессам посредством очереди предоставляют возможность асинхронной обработки данных, не влияя на систему в целом, если процесс не успевает обработать всю приходящую информацию, то он может ее обработать позднее, используя очередь сообщений, как буфер информации.
Давайте приведу вам несколько примеров использования очередей:
- отложенная обработка пользовательского контента;
- передача статистики;
- сглаживание нагрузки;
- выполнение периодических задач;
- оповещение процессов о некотором событии.
Существует всего несколько подходов к организации очередей:
- использовать реляционные базы данных;
- применить существующие библиотеки;
- использовать существующие решения (серверы очередей, NoSQL-хранилища).
Использование реляционной СУБД
Давайте дадим ответ на вопрос: а как в качестве очереди можно использовать простую БД?
Представим блокнот, в который мы записываем будущие покупки. И как только какую-то покупку осуществили, то сразу эту строчку вычеркиваем из нашего блокнота. А теперь наш воображаемый блокнот заменим на таблицу БД. В данной таблице (queue) должны как минимум быть поля:
- id (autoincrement) – номер записи;
- data – пользовательские данные.
Статью целиком читайте в журнале «Системный администратор», №6 за 2014 г. на страницах 76-77.
PDF-версию данного номера можно приобрести в нашем магазине.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|