impress application server for node.js (ru)

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

Upload: timur-shemsedinov

Post on 16-Jun-2015

2.420 views

Category:

Technology


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Impress Application Server for node.js (ru)

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

Page 2: Impress Application Server for node.js (ru)

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

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

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

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

1

Page 3: Impress Application Server for node.js (ru)

Стратегии разворачивания:• Все в одном процессе (для разработки):

cluster.strategy: "single"• Свой процесс ноды для каждой пары

хост/порт: cluster.strategy: "specialization"• Кластер на одном сервере (master+workers)

cluster: { strategy: "multiple", workers: N }• Кластер на 1 сервере с прилипанием по IP

cluster.strategy: "sticky"• Группа серверов с кластером на каждом:

strategy: "specialization", nginx обеспечивает балансировку и прилипание• Прикладное облако: аппаратный

балансировщик, несколько кластеров с strategy: "multiple", ØMQ, impress controller

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

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

2

Page 4: Impress Application Server for node.js (ru)

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

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

3

Load Balancer

С1 С2 С3

С0

C2N2C1N2C1N1 C1N3 C2N1 C2N3 C3N1 C3N2

Impress Cloud Controller

Impress Application Server

IPC

HTTP

ØMQpub/sub + req/rep

Page 5: Impress Application Server for node.js (ru)

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

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

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

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

Page 6: Impress Application Server for node.js (ru)

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

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

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

5

Page 7: Impress Application Server for node.js (ru)

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

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

6

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

Page 8: Impress Application Server for node.js (ru)

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

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

7

Page 9: Impress Application Server for node.js (ru)

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

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

8

Page 10: Impress Application Server for node.js (ru)

Создание API

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

9

Page 11: Impress Application Server for node.js (ru)

Создание API

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

10

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

независимый, состояние не сохраняется)

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

Page 12: Impress Application Server for node.js (ru)

Создание API

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

11

Page 13: Impress Application Server for node.js (ru)

Шаблоны

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

12

Page 14: Impress Application Server for node.js (ru)

Шаблоны

13

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

Page 15: Impress Application Server for node.js (ru)

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

14

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

• Отдача статических файлов прямо из оперативной памяти• Обновление кеша при изменении

файлов на диске• Удаление кеша при удалении

файлов и каталогов с диска• Сжатие gzip (кроме маленьких файлов)

и сохранение в сжатом виде в памяти• Использование HTTP if-modified-since

и выдача 304 Not modified• Минификация клиентского JavaScript

(при помощи плагина "uglify-js")

Page 16: Impress Application Server for node.js (ru)

События SSE

15

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

С1

C1N2C1N1 C1N3

IPC

Client1 Client2 Client3 ClientN…

Page 17: Impress Application Server for node.js (ru)

События SSE

16

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

С1 С2 С3

С0

C2N2C1N2C1N1 C1N3 C2N1 C2N3 C3N1 C3N2

Impress Cloud Controller

IPC

HTTP/SSE

ØMQpub/sub + req/rep

Client1 Client2 Client3 ClientN…

Page 18: Impress Application Server for node.js (ru)

Доступ к БД

17

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

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

Page 19: Impress Application Server for node.js (ru)

Доступ к БД / DBMI

18

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

Page 20: Impress Application Server for node.js (ru)

Плагины

19

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

• плагин почты (используется nodemailer, multiparty)

• плагин geoip (используется geoip-lite, ставится отдельно)

• плагин CMS (находится в разработке)

• плагин системы пользовательских прав• плагин npm (ставится отдельно)

Page 21: Impress Application Server for node.js (ru)

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

20

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

https://npmjs.org/package/impresshttps://github.com/tshemsedinov/impresshttp://blog.aumcode.comhttp://bit.ly/1cSdTF3 (NFX, AUM, UNISTACK)

mailto:[email protected]:timur.shemsedinov

npm install impress С3

C3N3

C3N1 C3N2