SlideShare a Scribd company logo
Очереди и
блокировки
Календарёв Александр
akalend@mail.ru
www.slideshare.net/akalend
О чём речь ...
•Зачем нужна очередь
•Где и как она используется
•Протоколы
•AMQP (на примере RabbitMQ)
•Блокировки
WEB
Типовая архитектура
Junior проект
WEB
Типовая архитектура
Junior проект
WEB
Типовая архитектура
Junior проект
WEB
Типовая архитектура
Junior проект
WEB
Типовая архитектура
Junior проект
HTTP ERROR 504
504 Gateway Timeout error
WEB
Типовая архитектура
Junior проект
WEB
WEB
Типовая архитектура
Junior проект
WEB
WEB
Типовая архитектура
Junior проект
WEB
WEB
Типовая архитектура
Junior проект
WEB
MySQL ERROR 2006
MySQL gone away
Типовая архитектура
уже не Junior проект
Master
WEB
WEB
Slave
Типовая архитектура
уже не Junior проект
Master
WEB
WEB
Slave
HTTP ERROR 502
Bad Gaetway
Типовая архитектура
уже не Junior проект
Master
WEB
WEB
Slave
Типовая архитектура
уже не Junior проект
Master
WEB
WEB
Slave
Типовая архитектура
уже не Junior проект
Быстрая часть
Критическая
часть
Медленная
часть
Не очень
важная часть
Типовая архитектура
уже не Junior проект
Быстрая часть
Критическая
часть
Медленная
часть
Не очень
важная часть
Типовая архитектура
уже не Junior проект
Быстрая часть
Критическая
часть
Медленная
часть
Не очень
важная часть
WEB
Backend
Паттерн: хитрый ученик
Быстрая часть
Критическая
часть
Медленная
часть
Не очень
важная часть
WEB
Backend© СоюзМультФильм
Паттерн: хитрый ученик
© СоюзМультФильм
Сперва скажу, что
выучил уроки,
а потом сделаю...
Паттерн: хитрый ученик
отложенные вычисления
© СоюзМультФильм
Вычисляем по мере
необходимости
Использование Backend сервера
BackendWEB
Проблема синхронизации и
обмена данными
BackendWEB
WEB Backend
Проблема синхронизации и
обмена данными
BackendWEB
WEB Backend
?
Проблема синхронизации и
обмена данными
BackendWEB
WEB Backend
Очередь
Очередь – это список
FIFO – First Input First Output
Поговорим о ...
•Зачем нужна очередь
•Где и как она используется
•Протоколы
•AMQP (на примере RabbitMQ)
•Блокировки
Взаимодействие частей проекта
Загрузка
YML
Сведение
в pricelist
Парсинг
YML
Загрузка
img
Взаимодействие частей проекта
Загрузка
YML
Сведение
в pricelist
Парсинг
YML
Загрузка
img
Очередь через БД
CREAE TABLE queue (
id BIGINT AUTOINCREMENT NOT NULL,
data VARCHAR (…),
PRIMARYKEY (id)
)
Очередь через БД
Запись в очередь:
INSERT INTO queue (data) VALUES (...);
Очередь через БД
Чтение из очереди:
SELECT * FROM queue ORDER BY id LIMIT 1
DELETE FROM queue WHERE id = ?
Очередь через БД
Чтение из очереди:
LOCK TABLE queue;
SELECT * FROM queue ORDER BY id LIMIT 1
DELETE FROM queue WHERE id = ?
UNLOCK TABLE queue;
Очередь через БД
Надежно
Медленно
Можно хранить историю
(UDATE SET deleted=1 вместо DELETE)
Очередь через MongoDb
Вставка: db.queue.insert(...);
Очередь через MongoDb
Вставка: db.queue.insert(...);
Чтение: db.queue.findAndModify({
query : {},
remove:1
})
Очередь через MongoDb
Надежно
Медленно, быстрее, чем БД
Использование Tarantool
Использование Tarantool
WEB
Использование Tarantool
BackendWEB
Использование Tarantool
• Memory Only хранилище
•Необходимо следить за памятью
•Необходим мониторинг системы
Использование Tarantool
●
Репликация из коробки
●
Возможен шардинг
(дополнительный пакет)
●
Персистентность данных
Использование Tarantool
Есть специальный пакет Queue
$tnt = new Tarantool('localhost', 3301);
$tnt->connect(); $tnt->select('q1');
$tnt->call('queue.tube.q1:put', $data);
$tnt->call('queue.tube.q1:take', 0.1 ));
Использование Tarantool
Синхронный:
while(1) {
$data= $tnt->call('queue.tube.q1:take' ));
… /* обработка данных */
}
Использование Tarantool
Асинхронный:
while(1) {
$data= $tnt->call('queue.tube.q1:take', 0.1 ));
If (!$data) {
usleep(1000); continue;
}
… /* обработка данных */
}
Использование Tarantool
Пакет Queue
●
Очереди с приоритетом
●
Жизнь элемента очереди ttl
●
Подтверждение доставки
●
Синхронные / асинхронные запросы
●
Можно самому менять логику
Использование Redis
Операции со
списками
●
RPUSH
●
LPOP
Head
Tail
Использование Redis
Использование Redis
WEB
Использование Redis
WEB
Curl
Использование Redis
WEB Backend
Curl
Использование Redis
Memory Only хранилище
●
Необходимо следить за
памятью, мониторинг
●
Персистентно
Использование Redis
Операции со списками
●
RPUSH {key} {data}
●
LPOP {key}, BLPOP (блокирующий)
●
COUNT {key}
Использование Redis (часть 2)
Проект загрузки видео
Youtube
Vimeo
Vk
Использование Redis (часть 2)
Load
Convert
WEB
Curl
Клиентский
скрипт
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
Необходимо
проинформировать
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
Постоянно
Проверяем статус
Способ – I Push
Curl
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
устанавливаем
статус: Выполнено
Способ – I Push
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
Отдаёт статус:
Выполнено
Способ – I Push
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
Способ – I Push
Загружаем файл
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
WebSockets
Подписываемся
на канал SUBRIBE
Способ – II Pull
Curl
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
PUSH: Выполнено
Способ – II Pull
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
Способ – II Pull
Получаем статус
Выполнено
Использование Redis (часть 2)
Load
Convert
WEB
Клиентский
скрипт
Способ – II Pull
Загружаем файл
Паттерн Писатель / Читатель
Подписка / Публикация
●
PUBLISH {channel} {data}
●
SUBSCRIBE {channel}
●
UNSUBSCRIBE {channel}
Паттерн Писатель / Читатель
Подписка / Публикация
Приемник
данных
Внешний
источник
PUBLISH
SUBSCR
MemcachedQ
Протокол memcached
●
SET {key} {data}
●
GET {key}
memcached + berkeleyDb
MemcachedQ
●
Быстро
●
Работает, пока есть память
●
Масштабируется в рамках клиента
libmemcached
●
Не возможен мониторинг
Zerro MQ
Это встраиваемое решение
Oтсутствует брокер
Очень быстрое решение:
- Запрос / Ответ
- Подписка / Публикация
- Потоковой обмен
Apache Kafka
●
Система потоковой обработки
сообщений, разрабатывалась
для сбора логов
●
Распределённоe решение
●
С подтверждением доставки
Apache Kafka
●
Очень производителен в
кластере
●
Требует синхронизации
кластера через Zookeper
О чём речь ...
•Зачем нужна очередь
•Где и как она используется
•Протоколы (кратко)
•AMQP (на примере RabbitMQ)
•Блокировки
Протоколы
•STOMP- Simple (or Streaming) Text Oriented
Message Protocol
•MQTT - Message Queue Telemetry Transport
•AMQP - Advanced Message Queuing Protocol
Протокол STOMP
•Текстовый (по верх HTTP, Websocket)
•Сообщение имеет тело и заголовок
•Сообщение может быть разделено на
фреймы
•Подписка / Публикация
•Подтверждение доставки, Авторизация
Протокол MQTT
•Бинарный
•Сообщение имеет тело и заголовок
•Сообщение может быть разделено на
фреймы
•Подписка / Публикация
•Подтверждение доставки, Авторизация
Поддержка протоколов
Реализация Java
Реализация erlang
Реализация Java / C++
Поговорим о ...
•Зачем нужна очередь
•Где и как она используется
•Протоколы
•AMQP (на примере RabbitMQ)
•Блокировки
Exchange
AMQP : Exchange (обмен)
●
Принимает сообщения
●
Имеет имя
●
Имеет тип:
- fanout
- direct
- topic
Exchange
Имеет свойства:
- autodelete
- transit
- durable
AMQP : Exchange (обмен)
Exchange
AMQP : Exchange (обмен)
$exchange = new AMQPExchange($channel);
$exchange->setName('MyExchange';)
$exchange->declare();
●
Отдает сообщения
адресату по принципу FIFO
●
Имеет имя
●
Имеет свойства:
- autodelete
- durable
Queue
AMQP : Queue (очередь)
Queue
AMQP : Queue (очередь)
$queue = new AMQPQueue($channel);
$queue->setName('MyQueue');
$queue->declare();
●
Между Exchange и Queue определяем связь
(или маршрут): Bind
●
Имеет ключ, в соответствии с которым
определяется маршрут сообщения
QueueExchange
Bind
AMQP : Bind (связь)
QueueExchange
Bind
AMQP : Bind (связь)
$queue = new AMQPQueue($channel);
$queue->setName('MyQueue');
$queue->bind('MyExchange', $key);
Exchange
Состоит:
●
тела
●
routing key
●
заголовки
●
свойства
AMQP : Message
Exchange
В зависимости от типа
Exchange и routingKey
сообщения
определяется маршрут
сообщения
AMQP : Message
Exchange
Fanout – ключ не учитываем
Direct – полное совпадение
Topic – совпадение по маске
AMQP : Message
использование Routing key
В зависимости от типа Exchange:
Exchange
AMQP : Message
использование Routing key
$exchange = new AMQPExchange($channel);
$exchange->setName('MyExchange';)
$exchange->publish($message, $key);
●
Забывают устанавливать связь Bind:
$queue->bind($exchange, $key);
●
Забывают объявлять очередь/обмен:
$queue->declare($name);
●
Если Обмен/Очередь не autodelete,
то достаточно объявить их один раз
AMQP : Типичные ошибки
Rabbit MQ
●
Довольно сложное решение, требует
администрирования
●
Требовательно по памяти
●
Можно объединять в кластер
●
Возможно расширение plugins
Rabbit MQ
2015 № 11
Кролик в песочнице
Rabbit MQ
2015 № 12
RabbitMQ.
Вырастаем из штанишек.
И в заключение
•Зачем нужна очередь
•Где и как она используется
•Протоколы
•AMQP (на примере RabbitMQ)
•Блокировки
Загрузка
YML
Сведение
в pricelist
Парсинг
YML
Загрузка
img
Загрузка
YML
Сведение
в pricelist
Парсинг
YML
Загрузка
img
Apache Zookeeper
Иерархическое хранилище
Основное понятие znode
Аналог inode в ФС
•Операции:
- GetData / SetData
- Create / GetChildren
Apache Zookeeper
znode:
•простые
•эфемерные
•последовательности
Операции: exist / sync
Пример: обновление
конфигурации на лету
Процесс 1
Процесс 2a
Процесс 2b
Процесс 2c
192.168.100.1
192.168.100.2
192.168.100.3
Пример: обновление
конфигурации на лету
Процесc 1
Процесc 2a
Процесc 2b
Процесc 2c
192.168.100.1
192.168.100.2
192.168.100.3
/config/nodes/n1
/config/nodes/n2
/config/nodes/n3 config
nodes
n-1 n-2 n-3
/config/nodes/n-1
/config/nodes/n-2
/config/nodes/n-3
Пример: обновление
конфигурации на лету
Процесc 1
Процесс 2a
Процесc 2b
Процесc 2c
192.168.100.1
192.168.100.2
192.168.100.3
Останавливается процесс
Пример: обновление
конфигурации на лету
Процесc 1
Процесc 2a
Процесc 2b
Процесc 2c
192.168.100.1
192.168.100.2
192.168.100.3
Рвется соединение
Пример: обновление
конфигурации на лету
Процесc 1
Процесc 2a
Процесc 2b
Процесc 2c
192.168.100.1
192.168.100.2
192.168.100.3
Посылаем event
Пример: обновление
конфигурации на лету
Процесc 1 Процесc 2b
Процесc 2c
192.168.100.2
192.168.100.3
Пересчитываем конфигурацию
Пример: обновление
конфигурации на лету
Процесc 1 Процесc 2b
Процесc 2c
192.168.100.2
192.168.100.3
Процесc 1
/config/nodes/n1
/config/nodes/n2
/config/nodes/n3 config
nodes
n-2 n-3
/config/nodes/n-2
/config/nodes/n-3
Apache Zookeeper
•Используется для синхронизации
процессов в кластере
•На последовательностях можно
организовать очереди
speed scale memory replika ACL/SSL Prototokol Safety Extend
Kafka критичен
RabbitMQ критичен AMQP
STOMP
MQTTActiveMQ ? ?
ZMQ Отсутствует брокер
MemcacheQ Memcached
Tarantool MsgPack
Redis ? ? Redis
MongoDb BSON
Databases ?
Выводы:
1) Не стоит микроскопом забивать гвозди
2) Cкорость * надежность = const
3) Мониторинг – третий глаз админа
Очереди и
блокировки
Календарёв Александр
akalend@mail.ru
www.slideshare.net/akalend

More Related Content

What's hot

Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.
Alexey Lesovsky
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Andrey Smirnov
 
Vladimir V Perepelitsa Ae Highload
Vladimir V  Perepelitsa Ae HighloadVladimir V  Perepelitsa Ae Highload
Vladimir V Perepelitsa Ae Highloadrit2010
 
implementation of 'go'-like language constructions in scala (russian)
implementation of 'go'-like language constructions in scala (russian)implementation of 'go'-like language constructions in scala (russian)
implementation of 'go'-like language constructions in scala (russian)
Ruslan Shevchenko
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
odnoklassniki.ru
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected load
Grid Dynamics
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Ontico
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Ontico
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Ontico
 
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
Fwdays
 
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Ontico
 
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actual
Yevgen Levik
 
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellPostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of Hell
Alexey Lesovsky
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
Badoo Development
 
Отладка производительности СУБД MySQL
Отладка производительности СУБД MySQLОтладка производительности СУБД MySQL
Отладка производительности СУБД MySQL
Sveta Smirnova
 
FreeRTOS
FreeRTOSFreeRTOS
FreeRTOSquakke
 
Caching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaCaching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaAndrei Pangin
 

What's hot (20)

Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 
Vladimir V Perepelitsa Ae Highload
Vladimir V  Perepelitsa Ae HighloadVladimir V  Perepelitsa Ae Highload
Vladimir V Perepelitsa Ae Highload
 
implementation of 'go'-like language constructions in scala (russian)
implementation of 'go'-like language constructions in scala (russian)implementation of 'go'-like language constructions in scala (russian)
implementation of 'go'-like language constructions in scala (russian)
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected load
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
 
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
 
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
 
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actual
 
Php + erlang
Php + erlangPhp + erlang
Php + erlang
 
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellPostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of Hell
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Отладка производительности СУБД MySQL
Отладка производительности СУБД MySQLОтладка производительности СУБД MySQL
Отладка производительности СУБД MySQL
 
FreeRTOS
FreeRTOSFreeRTOS
FreeRTOS
 
Caching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaCaching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in Java
 

Similar to Очереди и блокировки

Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Ontico
 
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...rit2011
 
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёруДенис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Yandex
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
Nikolay Sivko
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
ARCCN
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)
Alexander Gornik
 
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Cisco Russia
 
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Ontico
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted PythonHighLoad2009
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
Andrei Pangin
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...DevDay
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Ontico
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Ontico
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
Anatoly Popov
 
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
AvitoTech
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"
Fwdays
 
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
sami_11
 

Similar to Очереди и блокировки (20)

Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
 
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёруДенис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
 
Tarantool_qs
 Tarantool_qs Tarantool_qs
Tarantool_qs
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)
 
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
 
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"
 
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
 

More from Alexandre Kalendarev

шардинг на коленке
шардинг на коленкешардинг на коленке
шардинг на коленке
Alexandre Kalendarev
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Alexandre Kalendarev
 
PHP daemons into social games
PHP daemons into social gamesPHP daemons into social games
PHP daemons into social games
Alexandre Kalendarev
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
Alexandre Kalendarev
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Alexandre Kalendarev
 
TreeDb key/value noSQL database
TreeDb key/value noSQL databaseTreeDb key/value noSQL database
TreeDb key/value noSQL database
Alexandre Kalendarev
 

More from Alexandre Kalendarev (6)

шардинг на коленке
шардинг на коленкешардинг на коленке
шардинг на коленке
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
 
PHP daemons into social games
PHP daemons into social gamesPHP daemons into social games
PHP daemons into social games
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере Tarantool
 
TreeDb key/value noSQL database
TreeDb key/value noSQL databaseTreeDb key/value noSQL database
TreeDb key/value noSQL database
 

Очереди и блокировки