Многофункциональный сервер приложений,...

21
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов для создания прикладного программного обеспечения

Upload: geekslab

Post on 02-Jul-2015

308 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Многофункциональный  сервер  приложений,        обеспечивающий  среду  запуска,  и  дающий                полный  набор  инструментов  для  создания                      прикладного  программного  обеспечения  

Page 2: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Несколько  приложений  •   на  одном  сервере  •   в  одном  процессе  ноды  •   на  одном  порту  •   на  одном  домене  (разные  пути)  

Одно  приложение  •   несколько  процессов  на  одном  сервере  •   несколько  процессов  на  разных  серверах  •   имеет  несколько  доменов  (виртуалхостов)  •   на  нескольких  сетевых  интерфейсах  •   на  нескольких  портах  •   несколько  протоколов  

Масштабирование  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

1  

Page 3: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Стратегии  разворачивания:  •   Все  в  одном  процессе  (для  разработки):        cluster.strategy:  "single"  •   Свой  процесс  ноды  для  каждой  пары        хост/порт:  cluster.strategy:  "specializaZon"  •   Кластер  на  одном  сервере  (master+workers)        cluster:  {  strategy:  "mulZple",  workers:  N  }  •   Кластер  на  1  сервере  с  прилипанием  по  IP        cluster.strategy:  "sZcky"  •   Группа  серверов  с  кластером  на  каждом:        strategy:  "specializaZon",  nginx        обеспечивает  балансировку  и  прилипание  •   Прикладное  облако:  аппаратный        балансировщик,  несколько  кластеров  с        strategy:  "mulZple",  ØMQ,  impress  controller  

Масштабирование  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

2  

Page 4: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Масштабирование  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

3  

Load  Balancer  

С1   С2   С3  

C3N3  

С0  

C2N2  C1N2  C1N1   C1N3   C2N1   C2N3   C3N1   C3N2  

Impress  Cloud  Controller  

Impress  ApplicaZon  Server  

IPC  

HTTP  

ØMQ  pub/sub  +  req/rep  

Page 5: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Установка:  npm  install  impress  После  этого  имеем:  

Структура  файлов  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

4  Порядок  обработки  •   access.js  •   request.js  •   get.js,  post.js...  •   html.template  

Page 6: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Маршрутизация  URL  •   создание  обработчиков  •   наследование  обработчиков  и  шаблонов  •   типы  возвращаемых  данных  (HTLM,  JSON…)  •   запуск  обработчиков  и  шаблонов  из  памяти  •   слежение  за  файловой  системой  •   консолидация  изменений  файлов  •   несколько  копий  обработчиков  в  памяти  •   URL-­‐реврайтинг  •   перенаправление  и  reverse-­‐proxy  

Маршрутизация  URL  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

5  

Page 7: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Конфигурация  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

6  

Конфигуация:  •   config.js  •   слежение  за  файловой  системой  •   препроцессинг  конфигурации  

Page 8: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Конфигурация  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

7  

Page 9: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Конфигурация  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

8  

Page 10: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Создание  API  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

9  

Page 11: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Создание  API  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

10  

•   RPC  API  (Stateful,  состояние  может          сохраняться  в  памяти  между  запросами)  •   REST  API  (Stateless,  каждый  запрос          независимый,  состояние  не  сохраняется)  

 Типы  состояния:  •   общее  состояние  системы  •   состояние  сессии  •   состояние  пользователя  •   состояние  объекта  предметной  области  

Page 12: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Создание  API  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

11  

Page 13: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Шаблоны  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

12  

Page 14: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Шаблоны  

13  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

Page 15: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Отдача  статики  

14  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

•   Отдача  статических  файлов        прямо  из  оперативной  памяти  •   Обновление  кеша  при  изменении        файлов  на  диске  •   Удаление  кеша  при  удалении        файлов  и  каталогов  с  диска  •   Сжатие  gzip  (кроме  маленьких  файлов)        и  сохранение  в  сжатом  виде  в  памяти  •   Использование  HTTP  if-­‐modified-­‐since        и  выдача  304  Not  modified  •   Минификация  клиентского  JavaScript        (при  помощи  плагина  "uglify-­‐js")  

Page 16: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

События  SSE  

15  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

С1  

C1N2  C1N1   C1N3  

IPC  

Client1   Client2   Client3   ClientN  …  

Page 17: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

События  SSE  

16  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

С1   С2   С3  

C3N3  

С0  

C2N2  C1N2  C1N1   C1N3   C2N1   C2N3   C3N1   C3N2  

Impress  Cloud  Controller  

IPC  

HTTP/SSE  

ØMQ  pub/sub  +  req/rep  

Client1   Client2   Client3   ClientN  …  

Page 18: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Доступ  к  БД  

17  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

•   Драйвера  сделаны  плагинами  db.*.js  •   Удобства  для  SQL-­‐совместимых  БД  •   Компиляция  схем  для  реляционных  БД  •   DBMI  Веб-­‐интерфейс  для  управления  •   MongoDB  •   MySQL  

Page 19: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Доступ  к  БД  /  DBMI  

18  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

Page 20: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Плагины  

19  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

•   плагин  почты  (используется  nodemailer,  mulZparty)  •   плагин  geoip  (используется  geoip-­‐lite,  ставится  отдельно)  •   плагин  CMS  (находится  в  разработке)  •   плагин  системы  пользовательских  прав  •   плагин  npm  (ставится  отдельно)  

Page 21: Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов

Ссылки  и  контакты  

20  

Масштабирование  Структура  файлов  Маршрутизация  URL  Конфигурация  Создание  API  Шаблоны  Отдача  статики  События  (SSE)  Доступ  к  БД  Плагины  

h�ps://npmjs.org/package/impress  h�ps://github.com/tshemsedinov/impress    mailto:[email protected]  skype:Zmur.shemsedinov    npm  install  impress  

С3  

C3N3  

C3N1   C3N2