Вебклуб perlgolf.ru
DESCRIPTION
YAPC Russia 2009 "May Perl 2"TRANSCRIPT
Вебклуб perlgolf.ru
Уральский Государственный Университет им. А.М.Горького
YAPC::Russia 2009
Самунь Виктор Азовсков Сергей Ханов Артур
Perlgolf.ru – рунетовский проект для игры в perlgolf и профессионального общения
Архитектуру программной системы можно рассматривать с различных перспектив:
• функционально-логического деления
Архитектуру программной системы можно рассматривать с различных перспектив:
• функционально-логического деления• деления кода на модули
Архитектуру программной системы можно рассматривать с различных перспектив:
• функционально-логического деления• деления кода на модули• вычислительных потоков
Архитектуру программной системы можно рассматривать с различных перспектив:
• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой
Архитектуру программной системы можно рассматривать с различных перспектив:
• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой• распределения данных
Архитектуру программной системы можно рассматривать с различных перспектив:
• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой• распределения данных• физического деления и развёртки системы
Архитектуру программной системы можно рассматривать с различных перспектив:
• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой• распределения данных• физического деления и развёртки системы• …и другие… [ подробнее в IEEE 1471 + воображение ]
Архитектуру программной системы можно рассматривать с различных перспектив:
• функционально-логического деления• деления кода на модули• вычислительных потоков• взаимодействия пользователя с системой• распределения данных• физического деления и развёртки системы• …и другие… [ подробнее в IEEE 1471 + воображение ]
Требования к архитектуре perlgolf.ru
Удобство развития и поддержки проекта▫добавление и удаление модулей без
остановки всей системы▫низкая чувствительность модулей к
изменениям окружения
Требования к архитектуре perlgolf.ruНадежность работы всей системы▫устойчивость системы к сбоям
модулей▫удобство тестирования компонентов
системы
Требования к архитектуре perlgolf.ru
Защищенность▫DDOS▫атаки отдельных пользователей
Основные архитектуры с точки зрения деления на модули
Монолитная модель
A
B
F
CE
D
G
Монолитная модель
A
B
F
CE
D
G
Монолитная модель
A
B
F
CE
D
G
Непосредственное взаимодействие модулей
Монолитная модель
A
B
F
CE
D
G
Непосредственное взаимодействие модулей
Высокая производительность
Монолитная модель
A
B
F
CE
D
G
Непосредственное взаимодействие модулей
Высокая производительность Нет необходимости в создании системы связи
Монолитная модель
A
B
F
CE
D
G
Непосредственное взаимодействие модулей
Высокая производительность Нет необходимости в создании системы связи
Возможность выстраивать нетривиальные зависимости
Монолитная модель
A
B
F
CE
D
G
Непосредственное взаимодействие модулей
Высокая производительность Нет необходимости в создании системы связи
Возможность выстраивать нетривиальные зависимости
Высокая чувствительность модулей друг к другу
Модель наблюдателя
A
BD
C
Модель наблюдателя
A
BD
C
Модель наблюдателя
A
BD
C
Взаимодействие посредством событий
Модель наблюдателя
A
BD
C
Взаимодействие посредством событий
Распространителю событий нет необходимости знать о подписчиках ⟶ снижение зависимости
Модель наблюдателя
A
BD
C
Взаимодействие посредством событий
Распространителю событий нет необходимости знать о подписчиках ⟶ снижение зависимости
Не расчитана на пострение связей типа «запрос-ответ»
Событийная модель
A
E
CD
B
Ядро
Событийная модель
A
E
CD
B
Ядро
Событийная модель
A
E
CD
B
Ядро
Все взаимодействия - событийные
Событийная модель
A
E
CD
B
Ядро
Все взаимодействия - событийные
Безличностный характер общения
Событийная модель
A
E
CD
B
Ядро
Все взаимодействия - событийные
Безличностный характер общения Изменчивость окружения ⟶ написание устойчивого кода
Событийная модель
A
E
CD
B
Ядро
Все взаимодействия - событийные
Безличностный характер общения Изменчивость окружения ⟶ написание устойчивого кода Легкость исследования
Событийная модель
A
E
CD
B
Ядро
Все взаимодействия - событийные
Безличностный характер общения Изменчивость окружения ⟶ написание устойчивого кода Легкость исследования
Нет гарантии получения ответного события
Событийная модель
A
E
CD
B
Ядро
Все взаимодействия - событийные
Безличностный характер общения Изменчивость окружения ⟶ написание устойчивого кода Легкость исследования
Нет гарантии получения ответного события
Изменчивая среда ⟶ сложность расчета вычислительной нагрузки
Выбираем…
событийная модель•удобство развития и поддержки,
наблюдения•уязвимость к DDOS
Выбираем…
событийная модель•удобство развития и поддержки,
наблюдения•уязвимость к DDOS
илимонолитная + наблюдатель
•высокая производительность•сложность экспериментирования,
развития
А на самом деле…
Стартовая подсистема
События
Модуль
Модуль
Таблица обработчико
вОчередь событий
Пул потоков
Ядро
Ядро
М
М
М
МЯдр
о
Direct callSocketNamed pipe
Ядро
http://dev.perlgolf.ru
Важные модули perlgolf.ru
Ядро
AAA
DUF
Time
Golf
Персональная страница
Лог
StarterХранилищ
е
Config
Второстепенные модули perlgolf.ru
Ядро
ОценкиСтатистика
Оценки
Хистори
Справка
RSS
Уведомления
Чат
Заставка
Система нечётких оценок: цели•Проранжировать объекты оценки в
соответствии с некоторой характеристикой
Система нечётких оценок: цели•Проранжировать объекты оценки в
соответствии с некоторой характеристикой
•Как можно быстрее получить некоторый диапазон
Чёткие оценкиПреимущества Недостатки
• Детерминированность• Лёгкость хранения
• Единообразие
Сервер
Нечёткие оценки
сервер
1c2c
3c
4c
5c
0c
…nc
Нечёткие оценки
Субъект оценки
WiWi
Wi
Объекты оценки
Формирование оценки
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
- Оценка пользователя группой- Оценка пользователя группой
Формирование оценкиОценка для одного пользователя:
xfcx
caba
ww
wAwA
w
Awc вл
kiik
kiijikjk
ii
ijii
j
,,,
Функция влияния
)(
12
2sin2 acb
c
xxfвл
kii
kiiji
jk
ncwc
nbwAb
aAa
0
100
100
,
,
n – число пользовтелей
Как считать?
сервер клиент
Данные об оценках
веса
Модуль подсчета и
кэширования оценок
•Как сохранить большое количество данных на клиенте?
•Как сохранить большое количество данных на клиенте?
•Как их туда передать?
Хранение данных
Передача данных
сервер клиентHTTP
TCP соединение
Сравнение производительности
Производительность .NET
Благодарности
Спасибо за внимание!