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

58
Разработка веб-сервисов Беседа 6: Компоненты веб-систем

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

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

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

Беседа 6: Компоненты веб-систем

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

План занятия

Сетевое взаимодействие

Основные компоненты веб-систем

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

2

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

Схемы взаимодействия

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

клиент-сервер

peer-to-peer

3

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

Схемы взаимодействия

Клиент-сервер

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

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

4

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

Схемы взаимодействия

Клиент-сервер

5

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

Схемы взаимодействия

Клиент-сервер. Преимущества

Код в одном месте

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

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

6

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

Схемы взаимодействия

Клиент-сервер. Недостатки

Единая точка отказа

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

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

7

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

Схемы взаимодействия

peer-to-peer

Основана на равноправии участников

Каждый узел — и клиент, и сервер

8

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

Схемы взаимодействия

peer-to-peer. Одноранговая сеть

9

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

Схемы взаимодействия

peer-to-peer. Гибридная сеть

10

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

Схемы взаимодействия

peer-to-peer. Примеры использования

Обмен файлами (BitTorrent etc)

Распределенные вычисления

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

11

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

Основные компоненты веб-систем

Веб-серверы

Хранилища данных

Фоновая обработка данных

Инфраструктурные серверы

12

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

Основные компоненты веб-систем

Веб-серверы

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

серверы-акселераторы

серверы приложений

13

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

Основные компоненты веб-систем

Хранилища данных

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

От файлов к СУБД

Персистентные хранилища и хранилища в памяти

14

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

Основные компоненты веб-систем

Хранилища данных. Файлы

client1; 100; [email protected] \n

client2; 400; [email protected] \n

client3; 1000; [email protected] \n

15

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

Основные компоненты веб-систем

Хранилища данных. Файлы

0; 29; 53

client1; 100; [email protected] \n

client2; 400; [email protected] \n

client3; 1000; [email protected] \n

16

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

Основные компоненты веб-систем

Фоновая обработка данных

Задания по расписанию

Очереди

17

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

Обработка соединений

Принципы сетевой работы

Многопроцессная

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

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

18

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

Веб-серверы

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

Основная функция – принимать HTTP-запросы и отвечать на них

GET /img/logo.gif HTTP/1.1

Host: tp.mail.ru

19

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

Веб-серверы

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

Дополнительно:

аутентификация и авторизация пользователей

поддержка шифрования трафика

логирование запросов

запуск приложений

20

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

Веб-серверы

Запуск приложений

CGI — интерфейс запуска приложений (скриптов)

GET /index.php?foo=bar HTTP/1.1

Host: tp.mail.ru

21

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

Веб-серверы

Запуск приложений. СGI

Формирование переменных окружения

REQUEST_METHOD

QUERY_STRING

REMOTE_ADDR

SCRIPT_NAME

Определение обработчика

Вызов обработчика и передача ему данных через STDIN

22

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

Веб-серверы

Запуск приложений

Внутренний интерпретатор

mod_perl

mod_php

etc…

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

23

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

Веб-серверы

Запуск приложений

FastCGI — расширение CGI

В отличие от CGI — постоянно запущенные обработчики

Более производительный (нет накладных ресурсов)

TCP/IP и Sockets вместо STDIN

24

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

Веб-серверы

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

Акселераторы

Серверы приложений

25

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

Веб-серверы

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

Традиционно:

Проксирование на бэкенд

Аутентификация и авторизация

URL Rewrite

Кэширование

Сжатие трафика (gzip…)

SSL

26

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

Веб-серверы

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

Нетрадиционно:

Upstream-балансировка

Secure-link

Streams

Embeded perl

27

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

Веб-серверы

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

Состав:

HTTP-сервер

Обработка файлов конфигураций

Модули

28

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

Веб-серверы

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

Модули (несколько сотен):

Поддержка языков программирования (perl, php, lua…)

Расширение функций (mod_rewrite, mod_proxy)

Безопасность (ограничение доступа к файлам, mod_auth, mod_ldap)

29

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

Веб-серверы

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

Сервлеты

Загрузка и инициализация класса

Обслуживание запроса

Удаление сервлета

Серверы сервлетов:

Apache Tomcat

WebSphere App Server

30

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

Веб-серверы

Примеры веб-серверов. Иные серверы

lighttp

IIS

0w

Node.js

etc…

31

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

СУБД

Функции СУБД

СУБД — Система Управления Базами Данных

управление данными (в памяти и на диске)

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

поддержка языков обработки данных

32

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

СУБД

Работа СУБД

Физический уровень работы СУБД

Хранение данных и индексов

Журналы

Хранилища на диске

Хранилища в памяти

33

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

Возможности СУБД

Индексы: ускорение доступа к данным

Хранение данных:

B-tree, hash, функциональные индексы

Простые и составные индексы

Первичный и уникальные ключи

34

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

Возможности СУБД

Языки обработки данных

SQL:

Описание данных

Манипуляция с данными

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

35

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

Возможности СУБД

36

Языки обработки данных. SQL

Описание данных:

CREATE TABLE students (

id int,

name varchar(255),

birth date,

comments text,

primary key (id)

);

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

Возможности СУБД

Языки обработки данных. SQL

Манипуляция данными

INSERT

UPDATE

DELETE

37

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

Возможности СУБД

Языки обработки данных. SQL

Интерпретация запроса

План запроса, оптимизатор

38

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

Возможности СУБД

Языки обработки данных

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

Возможности

Назначение

Скорость

Фоновая работа

Безопасность

39

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

Возможности СУБД

Принципы работы с пользователями

Ограничения на доступ к данным

Таблицы и табличные пространства (tablespace)

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

40

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

Возможности СУБД

Транзакции

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

41

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

Возможности СУБД

Транзакции. Свойства транзакций

ACID

Атомарность — всё или ничего

Согласованность — фиксация только допустимых результатов

Изоляция — параллельные транзакции не оказывают влияния на результат

Долговечность — сохранение результатов после фиксации

42

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

Возможности СУБД

Транзакции. Уровни изолированности

Read uncommited

Read commited

Repeatable read

Serializable

43

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

Возможности СУБД

Транзакции. Виды транзакций

Обычные

Автономные транзакции

Распределенные транзакции

Двухфазная фиксация изменений

44

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

Возможности СУБД

Репликация — синхронизация данных

Назначение

Устойчивость к сбоям

Снижение нагрузки сети

Разъединённые вычисления

45

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

Возможности СУБД

Репликация

По типу

синхронная

асинхронная

По источнику

master-slave

master-master

По принципам

Запросы или данные

Полная или инкрементальная

46

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

Возможности СУБД

Распределенные СУБД

CAP-теорема:

Согласованность данных – данные непротиворечивы в любой момент времени

Доступность (avability) – любой запрос получает корректный ответ

Устойчивость к разделению (partition tolerance) –разделение не приводит к некорректности ответа каждой секции

47

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

Возможности СУБД

Распределенные СУБД

Колоночные субд

hbase/hadoop, cassandra

Документо-ориентированные

MongoDB, CouchDB

key-value хранилища

Redis, Memcache, tarantool

48

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

Серверы очередей

Асинхронная работа

Ajax

Фоновые скрипты

Службы СУБД (Oracle.Jobs, MySQL.Events…)

Что еще?

49

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

Серверы очередей

Асинхронная работа. Проблемы

Ajax

Лишние запросы

Фоновые скрипты

Не чаще раза в минуту

Службы СУБД (Oracle.Jobs, MySQL.Events…)

Что это?

50

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

Серверы очередей

Обмен сообщениями

Сообщение — пакет некоторых команд, передаваемых от источника к получателю

51

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

Серверы очередей

Обмен сообщениями. Принципы устройства

Данные

Типы сообщений

Приоритеты выполнения

Параллельность обработки

52

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

Серверы очередей

Обмен сообщениями. Промышленные протоколы

AMQP — Advanced Message Queuing Protocol

JMS — Java Message Service

53

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

Серверы очередей

Обмен сообщениями. Протоколы

AMQP

Сообщение

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

Очереди сообщений

JMS

point-to-point

publisher-subscriber

54

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

Серверы очередей

Обмен сообщениями. Примеры систем

ActiveMQ

RabbitMQ

Microsoft MQ

Oracle AQ

55

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

Иные серверы

Примеры серверов

Почтовые серверы (exim, postfix, dovecot…)

Серверы авторизации

Файловые хранилища

Инфраструктурные (dns, серверы времени итп)

56

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

Резюме

В основном используется клиент-серверная схема

Нужны веб-серверы, хранилища данных и серверы асинхронной работы

Инструментов много, у каждого свои особенности

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

57

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

Вопросы?

Максим Бабич

[email protected]

+7 916 9415275