Разработка
веб-сервисов

Беседа 6: Компоненты веб-систем
План занятия
 Сетевое взаимодействие
 Основные компоненты веб-систем

 Примеры построения веб-систем

2
Схемы взаимодействия
Схемы взаимодействия компонентов

 клиент-сервер
 peer-to-peer

3
Схемы взаимодействия
Клиент-сервер

 Поставщики услуг (серверы)
 Потребители услуг (клиенты)

4
Схемы взаимодействия
Клиент-сервер

5
Схемы взаимодействия
Клиент-сервер. Преимущества

 Код в одном месте
 Пониженные требования к клиентам

 Лучшая защищенность

6
Схемы взаимодействия
Клиент-сервер. Недостатки

 Единая точка отказа
 Высокая стоимость оборудования, а иногда и ПО

 Требует квалифицированной поддержки

7
Схемы взаимодействия
peer-to-peer

 Основана на равноправии участников
 Каждый узел — и клиент, и сервер

8
Схемы взаимодействия
peer-to-peer. Одноранговая сеть

9
Схемы взаимодействия
peer-to-peer. Гибридная сеть

10
Схемы взаимодействия
peer-to-peer. Примеры использования

 Обмен файлами (BitTorrent etc)
 Распределенные вычисления

 Децентрализованные платежные системы (Bitcoin)

11
Основные компоненты веб-систем
 Веб-серверы
 Хранилища данных

 Фоновая обработка данных
 Инфраструктурные серверы

12
Основные компоненты веб-систем
Веб-серверы
Основная задача — принимать и отвечать на HTTP-запросы

 серверы-акселераторы
 серверы приложений

13
Основные компоненты веб-систем
Хранилища данных
Основная задача — временное и постоянное хранение и
обработка данных

 От файлов к СУБД
 Персистентные хранилища и хранилища в памяти

14
Основные компоненты веб-систем
Хранилища данных. Файлы

client1; 100; test@example.com n

client2; 400; foo@bar.com n
client3; 1000; bar@foo.com n

15
Основные компоненты веб-систем
Хранилища данных. Файлы

0; 29; 53
client1; 100; test@example.com n

client2; 400; foo@bar.com n
client3; 1000; bar@foo.com n

16
Основные компоненты веб-систем
Фоновая обработка данных

 Задания по расписанию
 Очереди

17
Обработка соединений
Принципы сетевой работы

 Многопроцессная
 Многопоточная (мультитредная)

 Мультиплексная

18
Веб-серверы
Функции веб-серверов

Основная функция – принимать HTTP-запросы и
отвечать на них
GET /img/logo.gif HTTP/1.1
Host: tp.mail.ru

19
Веб-серверы
Функции веб-серверов

Дополнительно:
 аутентификация и авторизация пользователей
 поддержка шифрования трафика
 логирование запросов
 запуск приложений

20
Веб-серверы
Запуск приложений

 CGI — интерфейс запуска приложений (скриптов)
GET /index.php?foo=bar HTTP/1.1
Host: tp.mail.ru

21
Веб-серверы
Запуск приложений. СGI
 Формирование переменных окружения






REQUEST_METHOD
QUERY_STRING
REMOTE_ADDR
SCRIPT_NAME
…

 Определение обработчика
 Вызов обработчика и передача ему данных через STDIN
22
Веб-серверы
Запуск приложений

Внутренний интерпретатор
 mod_perl
 mod_php
 etc…

Разделяемая память

23
Веб-серверы
Запуск приложений

FastCGI — расширение CGI
 В отличие от CGI — постоянно запущенные обработчики
 Более производительный (нет накладных ресурсов)
 TCP/IP и Sockets вместо STDIN

24
Веб-серверы
Типы веб-серверов

 Акселераторы
 Серверы приложений

25
Веб-серверы
Примеры веб-серверов. Nginx

Традиционно:
 Проксирование на бэкенд
 Аутентификация и авторизация
 URL Rewrite
 Кэширование

 Сжатие трафика (gzip…)
 SSL
26
Веб-серверы
Примеры веб-серверов. Nginx

Нетрадиционно:
 Upstream-балансировка
 Secure-link
 Streams
 Embeded perl

27
Веб-серверы
Примеры веб-серверов. Apache HTTP Server

Состав:
 HTTP-сервер
 Обработка файлов конфигураций
 Модули

28
Веб-серверы
Примеры веб-серверов. Apache HTTP Server

Модули (несколько сотен):
 Поддержка языков программирования (perl, php, lua…)
 Расширение функций (mod_rewrite, mod_proxy)
 Безопасность (ограничение доступа к файлам, mod_auth,
mod_ldap)

29
Веб-серверы
Примеры веб-серверов. Java-ориентированные

 Сервлеты
 Загрузка и инициализация класса
 Обслуживание запроса
 Удаление сервлета

 Серверы сервлетов:
 Apache Tomcat
 WebSphere App Server
30
Веб-серверы
Примеры веб-серверов. Иные серверы

 lighttp
 IIS

 0w
 Node.js
 etc…

31
СУБД
Функции СУБД

СУБД — Система Управления Базами Данных
 управление данными (в памяти и на диске)

 управление изменениями данных и восстановлением
после сбоев
 поддержка языков обработки данных

32
СУБД
Работа СУБД

 Физический уровень работы СУБД
 Хранение данных и индексов
 Журналы

 Хранилища на диске
 Хранилища в памяти

33
Возможности СУБД
Индексы: ускорение доступа к данным

 Хранение данных:
 B-tree, hash, функциональные индексы

 Простые и составные индексы
 Первичный и уникальные ключи

34
Возможности СУБД
Языки обработки данных

SQL:
 Описание данных
 Манипуляция с данными

Хранимые процедуры

35
Возможности СУБД
Языки обработки данных. SQL
Описание данных:
CREATE TABLE students (
id
int,
name
varchar(255),
birth
date,
comments
text,
primary key (id)
);
36
Возможности СУБД
Языки обработки данных. SQL

Манипуляция данными
 INSERT
 UPDATE
 DELETE

37
Возможности СУБД
Языки обработки данных. SQL

 Интерпретация запроса
 План запроса, оптимизатор

38
Возможности СУБД
Языки обработки данных

Хранимые процедуры:
 Возможности

 Назначение
 Скорость
 Фоновая работа
 Безопасность

39
Возможности СУБД
 Принципы работы с пользователями
 Ограничения на доступ к данным
 Таблицы и табличные пространства (tablespace)
 Хранимые процедуры

40
Возможности СУБД
Транзакции

Транзакция — последовательные действия с базой
данных, объединенные в одну логическую группу

41
Возможности СУБД
Транзакции. Свойства транзакций

ACID
 Атомарность — всё или ничего
 Согласованность — фиксация только допустимых
результатов
 Изоляция — параллельные транзакции не оказывают
влияния на результат
 Долговечность — сохранение результатов после фиксации

42
Возможности СУБД
Транзакции. Уровни изолированности

 Read uncommited
 Read commited

 Repeatable read
 Serializable

43
Возможности СУБД
Транзакции. Виды транзакций

 Обычные
 Автономные транзакции

 Распределенные транзакции
 Двухфазная фиксация изменений

44
Возможности СУБД
Репликация — синхронизация данных

Назначение
 Устойчивость к сбоям
 Снижение нагрузки сети
 Разъединённые вычисления

45
Возможности СУБД
Репликация
По типу
 синхронная
 асинхронная
По источнику
 master-slave
 master-master
По принципам
 Запросы или данные
 Полная или инкрементальная
46
Возможности СУБД
Распределенные СУБД

CAP-теорема:
 Согласованность данных – данные непротиворечивы в
любой момент времени
 Доступность (avability) – любой запрос получает
корректный ответ
 Устойчивость к разделению (partition tolerance) –
разделение не приводит к некорректности ответа
каждой секции
47
Возможности СУБД
Распределенные СУБД
Колоночные субд
 hbase/hadoop, cassandra

Документо-ориентированные
 MongoDB, CouchDB

key-value хранилища
 Redis, Memcache, tarantool
48
Серверы очередей
Асинхронная работа
 Ajax
 Фоновые скрипты
 Службы СУБД (Oracle.Jobs, MySQL.Events…)
 Что еще?

49
Серверы очередей
Асинхронная работа. Проблемы
 Ajax
 Лишние запросы

 Фоновые скрипты
 Не чаще раза в минуту

 Службы СУБД (Oracle.Jobs, MySQL.Events…)
 Что это?
50
Серверы очередей
Обмен сообщениями
Сообщение — пакет некоторых команд,
передаваемых от источника к получателю

51
Серверы очередей
Обмен сообщениями. Принципы устройства
 Данные
 Типы сообщений

 Приоритеты выполнения
 Параллельность обработки

52
Серверы очередей
Обмен сообщениями. Промышленные протоколы
 AMQP — Advanced Message Queuing Protocol
 JMS — Java Message Service

53
Серверы очередей
Обмен сообщениями. Протоколы
 AMQP
 Сообщение

 Точка обмена — распределение сообщений
 Очереди сообщений

 JMS
 point-to-point
 publisher-subscriber
54
Серверы очередей
Обмен сообщениями. Примеры систем
 ActiveMQ
 RabbitMQ
 Microsoft MQ
 Oracle AQ

55
Иные серверы
Примеры серверов
 Почтовые серверы (exim, postfix, dovecot…)
 Серверы авторизации
 Файловые хранилища
 Инфраструктурные (dns, серверы времени итп)

56
Резюме
 В основном используется клиент-серверная схема
 Нужны веб-серверы, хранилища данных и серверы
асинхронной работы
 Инструментов много, у каждого свои особенности

 Комбинируйте и экспериментируйте!

57
Вопросы?
Максим Бабич
tpark@maxbabich.ru
+7 916 9415275

Разработка веб-сервисов осень 2013 лекция 6