Вебклуб perlgolf.ru

61
Вебклуб perlgolf.ru Уральский Государственный Университет им. А.М.Горького YAPC::Russia 2009 Самунь Виктор Азовсков Сергей Ханов Артур

Upload: mayperl

Post on 25-May-2015

723 views

Category:

Technology


0 download

DESCRIPTION

YAPC Russia 2009 "May Perl 2"

TRANSCRIPT

Page 1: Вебклуб Perlgolf.ru

Вебклуб perlgolf.ru

Уральский Государственный Университет им. А.М.Горького

YAPC::Russia 2009

Самунь Виктор Азовсков Сергей Ханов Артур

Page 2: Вебклуб Perlgolf.ru

Perlgolf.ru – рунетовский проект для игры в perlgolf и профессионального общения

Page 3: Вебклуб Perlgolf.ru

Архитектуру программной системы можно рассматривать с различных перспектив:

• функционально-логического деления

Page 4: Вебклуб Perlgolf.ru

Архитектуру программной системы можно рассматривать с различных перспектив:

• функционально-логического деления• деления кода на модули

Page 5: Вебклуб Perlgolf.ru

Архитектуру программной системы можно рассматривать с различных перспектив:

• функционально-логического деления• деления кода на модули• вычислительных потоков

Page 6: Вебклуб Perlgolf.ru

Архитектуру программной системы можно рассматривать с различных перспектив:

• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой

Page 7: Вебклуб Perlgolf.ru

Архитектуру программной системы можно рассматривать с различных перспектив:

• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой• распределения данных

Page 8: Вебклуб Perlgolf.ru

Архитектуру программной системы можно рассматривать с различных перспектив:

• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой• распределения данных• физического деления и развёртки системы

Page 9: Вебклуб Perlgolf.ru

Архитектуру программной системы можно рассматривать с различных перспектив:

• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой• распределения данных• физического деления и развёртки системы• …и другие… [ подробнее в IEEE 1471 + воображение ]

Page 10: Вебклуб Perlgolf.ru

Архитектуру программной системы можно рассматривать с различных перспектив:

• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой• распределения данных• физического деления и развёртки системы• …и другие… [ подробнее в IEEE 1471 + воображение ]

Page 11: Вебклуб Perlgolf.ru

Требования к архитектуре perlgolf.ru

Удобство развития и поддержки проекта▫добавление и удаление модулей без

остановки всей системы▫низкая чувствительность модулей к

изменениям окружения

Page 12: Вебклуб Perlgolf.ru

Требования к архитектуре perlgolf.ruНадежность работы всей системы▫устойчивость системы к сбоям

модулей▫удобство тестирования компонентов

системы

Page 13: Вебклуб Perlgolf.ru

Требования к архитектуре perlgolf.ru

Защищенность▫DDOS▫атаки отдельных пользователей

Page 14: Вебклуб Perlgolf.ru

Основные архитектуры с точки зрения деления на модули

Page 15: Вебклуб Perlgolf.ru

Монолитная модель

A

B

F

CE

D

G

Page 16: Вебклуб Perlgolf.ru

Монолитная модель

A

B

F

CE

D

G

Page 17: Вебклуб Perlgolf.ru

Монолитная модель

A

B

F

CE

D

G

Непосредственное взаимодействие модулей

Page 18: Вебклуб Perlgolf.ru

Монолитная модель

A

B

F

CE

D

G

Непосредственное взаимодействие модулей

Высокая производительность

Page 19: Вебклуб Perlgolf.ru

Монолитная модель

A

B

F

CE

D

G

Непосредственное взаимодействие модулей

Высокая производительность Нет необходимости в создании системы связи

Page 20: Вебклуб Perlgolf.ru

Монолитная модель

A

B

F

CE

D

G

Непосредственное взаимодействие модулей

Высокая производительность Нет необходимости в создании системы связи

Возможность выстраивать нетривиальные зависимости

Page 21: Вебклуб Perlgolf.ru

Монолитная модель

A

B

F

CE

D

G

Непосредственное взаимодействие модулей

Высокая производительность Нет необходимости в создании системы связи

Возможность выстраивать нетривиальные зависимости

Высокая чувствительность модулей друг к другу

Page 22: Вебклуб Perlgolf.ru

Модель наблюдателя

A

BD

C

Page 23: Вебклуб Perlgolf.ru

Модель наблюдателя

A

BD

C

Page 24: Вебклуб Perlgolf.ru

Модель наблюдателя

A

BD

C

Взаимодействие посредством событий

Page 25: Вебклуб Perlgolf.ru

Модель наблюдателя

A

BD

C

Взаимодействие посредством событий

Распространителю событий нет необходимости знать о подписчиках ⟶ снижение зависимости

Page 26: Вебклуб Perlgolf.ru

Модель наблюдателя

A

BD

C

Взаимодействие посредством событий

Распространителю событий нет необходимости знать о подписчиках ⟶ снижение зависимости

Не расчитана на пострение связей типа «запрос-ответ»

Page 27: Вебклуб Perlgolf.ru

Событийная модель

A

E

CD

B

Ядро

Page 28: Вебклуб Perlgolf.ru

Событийная модель

A

E

CD

B

Ядро

Page 29: Вебклуб Perlgolf.ru

Событийная модель

A

E

CD

B

Ядро

Все взаимодействия - событийные

Page 30: Вебклуб Perlgolf.ru

Событийная модель

A

E

CD

B

Ядро

Все взаимодействия - событийные

Безличностный характер общения

Page 31: Вебклуб Perlgolf.ru

Событийная модель

A

E

CD

B

Ядро

Все взаимодействия - событийные

Безличностный характер общения Изменчивость окружения ⟶ написание устойчивого кода

Page 32: Вебклуб Perlgolf.ru

Событийная модель

A

E

CD

B

Ядро

Все взаимодействия - событийные

Безличностный характер общения Изменчивость окружения ⟶ написание устойчивого кода Легкость исследования

Page 33: Вебклуб Perlgolf.ru

Событийная модель

A

E

CD

B

Ядро

Все взаимодействия - событийные

Безличностный характер общения Изменчивость окружения ⟶ написание устойчивого кода Легкость исследования

Нет гарантии получения ответного события

Page 34: Вебклуб Perlgolf.ru

Событийная модель

A

E

CD

B

Ядро

Все взаимодействия - событийные

Безличностный характер общения Изменчивость окружения ⟶ написание устойчивого кода Легкость исследования

Нет гарантии получения ответного события

Изменчивая среда ⟶ сложность расчета вычислительной нагрузки

Page 35: Вебклуб Perlgolf.ru

Выбираем…

событийная модель•удобство развития и поддержки,

наблюдения•уязвимость к DDOS

Page 36: Вебклуб Perlgolf.ru

Выбираем…

событийная модель•удобство развития и поддержки,

наблюдения•уязвимость к DDOS

илимонолитная + наблюдатель

•высокая производительность•сложность экспериментирования,

развития

Page 37: Вебклуб Perlgolf.ru

А на самом деле…

Page 38: Вебклуб Perlgolf.ru

Стартовая подсистема

Page 39: Вебклуб Perlgolf.ru

События

Модуль

Модуль

Таблица обработчико

вОчередь событий

Пул потоков

Ядро

Page 40: Вебклуб Perlgolf.ru

Ядро

М

М

М

МЯдр

о

Direct callSocketNamed pipe

Ядро

Page 41: Вебклуб Perlgolf.ru

http://dev.perlgolf.ru

Page 42: Вебклуб Perlgolf.ru
Page 43: Вебклуб Perlgolf.ru

Важные модули perlgolf.ru

Ядро

AAA

DUF

Time

Golf

Персональная страница

Лог

StarterХранилищ

е

Config

Page 44: Вебклуб Perlgolf.ru

Второстепенные модули perlgolf.ru

Ядро

ОценкиСтатистика

Оценки

Хистори

Справка

RSS

Уведомления

Чат

Заставка

Page 45: Вебклуб Perlgolf.ru

Система нечётких оценок: цели•Проранжировать объекты оценки в

соответствии с некоторой характеристикой

Page 46: Вебклуб Perlgolf.ru

Система нечётких оценок: цели•Проранжировать объекты оценки в

соответствии с некоторой характеристикой

•Как можно быстрее получить некоторый диапазон

Page 47: Вебклуб Perlgolf.ru

Чёткие оценкиПреимущества Недостатки

• Детерминированность• Лёгкость хранения

• Единообразие

Сервер

Page 48: Вебклуб Perlgolf.ru

Нечёткие оценки

сервер

1c2c

3c

4c

5c

0c

…nc

Page 49: Вебклуб Perlgolf.ru

Нечёткие оценки

Субъект оценки

WiWi

Wi

Объекты оценки

Page 50: Вебклуб Perlgolf.ru

Формирование оценки

n групп, m пользователей

Формула подсчета оценки выставленной группой

nfc

ncwc

Iii

Iiii

w – вес , выставленный субъектом группе

nmmm

n

n

ccc

ccc

ccc

,2,1,

,22,21,2

,12,11,1

11

n

cc

c

n

jjG

jc

Gc

- Оценка пользователя группой- Оценка пользователя группой

Page 51: Вебклуб Perlgolf.ru

Формирование оценкиОценка для одного пользователя:

xfcx

caba

ww

wAwA

w

Awc вл

kiik

kiijikjk

ii

ijii

j

,,,

Page 52: Вебклуб Perlgolf.ru

Функция влияния

)(

12

2sin2 acb

c

xxfвл

kii

kiiji

jk

ncwc

nbwAb

aAa

0

100

100

,

,

n – число пользовтелей

Page 53: Вебклуб Perlgolf.ru

Как считать?

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

Данные об оценках

веса

Модуль подсчета и

кэширования оценок

Page 54: Вебклуб Perlgolf.ru

•Как сохранить большое количество данных на клиенте?

Page 55: Вебклуб Perlgolf.ru

•Как сохранить большое количество данных на клиенте?

•Как их туда передать?

Page 56: Вебклуб Perlgolf.ru

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

Page 57: Вебклуб Perlgolf.ru

Передача данных

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

TCP соединение

Page 58: Вебклуб Perlgolf.ru

Сравнение производительности

Page 59: Вебклуб Perlgolf.ru

Производительность .NET

Page 60: Вебклуб Perlgolf.ru

Благодарности

Page 61: Вебклуб Perlgolf.ru

Спасибо за внимание!