«Рамблер Касса» как пример высокопроизводительного...

42
«Рамблер Касса» как пример высокопроизводительного проекта на .Net Дмитрий Паньшин

Upload: ontico

Post on 08-Jul-2015

983 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

«Рамблер Касса» как пример высокопроизводительного

проекта на .NetДмитрий Паньшин

Page 2: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 3: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

И другие…

Page 4: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 5: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 6: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

.net

Page 7: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Highscalability.com

Page 8: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Highscalability.com

Page 9: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

.net?

Page 10: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 11: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Нефункциональные требования• Uptime – 99.9

• 15 млн page view/day:

– Кнопка «пустая»: 85% за 50мс

– Кнопка отобразившийся: 85% 70мс

– Страница расписания фильма: 85% 150мс

– Страница расписания кинотеатра: 85% 150мс

– Страница плана зала: 85% 200мс

Page 12: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Логическая архитектура

Page 13: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

IIS• Отказоустойчивость:

– NLB – ок, но распределение по серверам может быть только на уровне TCP/IP

– ARR – NLB HTTP Layer , может балансировать, по HTTP заголовкам

• Недостатки– App Server и кеш сервер в одном флаконе.

Page 14: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 15: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 16: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 17: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

MS SQL Server• Масштабирование и отказоустойчивость:

– Failover cluster

– Mirroring

– Replication

– Sharding

Page 18: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

MS SQL Cluster

Page 19: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

MS SQL Mirroring

Page 20: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Результат

Page 21: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Cache• Memcache vs HttpContext.Current.Cache

• Nginx vs ASP.NET Output Cache

Page 22: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

AppFabric Caching – Регионы, теги

– Локальный кеш

– Особенности

• Для работы нужен Windows Server Standard

• Отказоустойчивый Кластер – нужен Enterprise

• Использовать конфигурацию хранящуюся в SQL

• Нет версионирования «из коробки»

Page 23: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Queue• MSMQ

– Асинхронная

– Без подтверждения доставки

• DB MQ– Персистентная, работает по принципу заказа, есть состояния.

– Реляционная

– 800 ops

Page 24: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

MSMQ

Page 25: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Background workers• Проблема: нет нормального App server’a

– WCF + Task Scheduler?

– Windows Service + Timer?

• Разработали свой Task Server.

Page 26: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

THE END?

Page 27: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 28: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 29: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

NAS• Нужно хранилище для

– статического контента

– конфигураций IIS

– Бекапов

• Решение

– MS Distributed File System• Replication

Page 30: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Logging + Statistics• Задача разработать:

– асинхронный способ записи служебной информации.

– Механизм для сбора и анализа статистики.

Page 31: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Результат

Page 32: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Monitoring• WhatsUp Gold

– Недорогое решение

– Для стандартных задач подходит хорошо

– Неудобное в администрировании

– Мониторинг Бизнес-показателей сложно реализуем

• Web Services + Remstats

– Используется для мониторинга Бизнес-показателей

• SCOM

Page 33: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Результат

Page 34: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

И все-таки почему .net?

Page 35: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

www.afisha.ru

Page 36: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Eda.ru

Page 37: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

mir.travel

Page 38: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 39: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)
Page 40: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Результат

Page 41: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Результат• ~2000 rps на app server (IIS)

• Масштабируется линейно до 10 000 rps

• Uptime 99.9%

Page 42: «Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий Паньшин)

Результат• 400 кинозалов в 17 городах России

• Суммарная аудитория Internet площадок > 25 млн человек

• В конце 2011 подключили Qiwi (120 тыстерминалов, 80 млн месячных пользователей)