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

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

Jul 08, 2015

Download

Technology

Ontico
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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 млн месячных пользователей)