Разработка веб-сервисов осень 2013 лекция 6
-
Upload
technopark -
Category
Education
-
view
177 -
download
6
Transcript of Разработка веб-сервисов осень 2013 лекция 6
Разработкавеб-сервисов
Беседа 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; [email protected] \n
client2; 400; [email protected] \n
client3; 1000; [email protected] \n
15
Основные компоненты веб-систем
Хранилища данных. Файлы
0; 29; 53
client1; 100; [email protected] \n
client2; 400; [email protected] \n
client3; 1000; [email protected] \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
Возможности СУБД
36
Языки обработки данных. SQL
Описание данных:
CREATE TABLE students (
id int,
name varchar(255),
birth date,
comments text,
primary key (id)
);
Возможности СУБД
Языки обработки данных. 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