Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере системы управления очередью

337 views

Published on

Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере системы управления очередью.
Конференция Dev Party (http://devparty.ru).
Вологда, 02.04.2016.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере системы управления очередью

  1. 1. Четвертая конференция разработчиков ПО«DevParty» 2 апреля 2016 года, Вологда Дмитрий Ивакин Node.js: realtime приложение на примере системы управления очередью ООО «Пайлабс»
  2. 2. КомпонентыКомпоненты Киоск Табло Интерфейс оператора Интерфейс администратора
  3. 3. Архитектура (сервер)Архитектура (сервер) WebSocket mongoose
  4. 4. Архитектура (табло)Архитектура (табло) + режим киоска
  5. 5. Архитектура (табло)Архитектура (табло) + режим киоска Web Audio Api +
  6. 6. Архитектура (киоск)Архитектура (киоск) + режим киоска
  7. 7. Архитектура (киоск)Архитектура (киоск) + режим киоска Любимый банк А25 Получение наличных Перед вами 150 человек
  8. 8. Архитектура (киоск)Архитектура (киоск) Chrome App Любимый банк А25 Получение наличных Перед вами 150 человек
  9. 9. Архитектура (киоск)Архитектура (киоск) NW.js Любимый банк А25 Получение наличных Перед вами 150 человек
  10. 10. Архитектура (киоск)Архитектура (киоск) Любимый банк А25 Получение наличных Перед вами 150 человек Electron
  11. 11. Архитектура (киоск)Архитектура (киоск) NW.js Любимый банк А25 Получение наличных Перед вами 150 человек
  12. 12. Проблема конкурентностиПроблема конкурентности А26 А25 А24 Очередь А А22 А23 Оператор 1 Оператор 2
  13. 13. Проблема конкурентностиПроблема конкурентности А26 А25 А24 Очередь А Оператор 1 Оператор 2 Ticket.findOne({status: ‘waiting’})
  14. 14. Проблема конкурентностиПроблема конкурентности А26 А25 А24 Очередь А Оператор 1 Оператор 2 Ticket.findOne({status: ‘waiting’}) А24 А24 ticket.status = ‘calling’; ticket.workplace = <id оператора>; ticket.save();
  15. 15. Проблема конкурентностиПроблема конкурентности А26 А25 А24 Очередь А Оператор 1 Оператор 2 Ticket.findOne({status: ‘waiting’}) А24 А24 Ticket.findOneAndUpdate( {id: <ticketId>, v: <ticketVersion>}, – условие {status: ‘calling’, …, v: {$inc: 1} }) – поля для обновления Update If Current
  16. 16. Схема развертыванияСхема развертывания Cluster module Thread Thread
  17. 17. Схема развертыванияСхема развертывания Cluster module Thread Thread Round-robin
  18. 18. Схема развертыванияСхема развертывания Cluster module Thread Thread Sticky-session
  19. 19. Схема развертыванияСхема развертывания Thread Thread Sticky-session ip_hash;
  20. 20. Схема развертыванияСхема развертывания Thread Thread Sticky-session cookie
  21. 21. Схема развертыванияСхема развертывания Thread Thread Sticky-session
  22. 22. Четвертая конференция разработчиков ПО«DevParty» 2 апреля 2016 года, Вологда Дмитрий Ивакин Спасибо за внимание!Спасибо за внимание! ООО «Пайлабс» mpower.public@yandex.ru Skype: mpower.job

×