Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon, Open-Source

825 views

Published on

Будет показан пример архитектуры популярной социальной сети в Англии, переработанной на новом стеке, чтобы решить проблемы производительности, отказоустойчивости и горизонтального масштабирования. Новый стек базируется на технологиях: .NET, SignalR, Couchbase, RabbitMQ, ElasticSearch, Amazon Services (CloudFront, S3, EC2, Route 53, Balancer), Windows, Linux. Цель: показать одну из моделей архитектуры нагруженных веб-систем, практики и возможные подводные камни при разработке высоконагруженных Интернет систем.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon, Open-Source

  1. 1. Денис Колошко HHDDCCOONNFF
  2. 2. Докладчик Денис Колошко Технический директор компании Айти Бэнд (ITBand.by)  12+ лет работы в промышленной разработке ПО  Системный архитектор  Технический консультант  Активный разработчик  Тренер mobile: +375 29 774 89 05 E-mail: denis@koloshko.com Skype: d.koloshko Blog: http://it-consulting.koloshko.com LinkedIn: http://www.linkedin.com/pub/denis-koloshko/14/89a/862
  3. 3. Айти Бэнд (IT-Band.by)  Сервис по разработке  .NET, Node.js  От защищённых бизнес систем до производительных интернет систем  Консалтинг  Анализ безопасности веб-систем  Оптимизация производительности  Анализ архитектур
  4. 4. GoneTooSoon.org
  5. 5. Статистика  50 млн документов в No-Sql  14 млн фотографий и аудио файлов  800 000 пользователей  200 000 мемориалов  Couchbase – до 5-7k операций в секунду  Пик – 2 млн пользователя в месяц  До 50 тыс. фотографий у некоторых пользователей
  6. 6. Развитие архитектуры Первая архитектура 2007 Новый стек (Amazon) 2013 Смена провайдера (Amazon+Hetzner) 2014
  7. 7. Первоначальный стек PHP PostgreSQL NFS, GlusterFS Apache Nginx
  8. 8. Старый стек. Проблемы Производительность Сложность масштабирования
  9. 9. Август 2013. Атрибуты качества новой архитектуры  Высокая производительность  Высокая масштабируемость  Высокая доступность
  10. 10. Вызов  2.5 месяца на первый релиз  Высокая производительность  Горизонтальное масштабирование  Бесшовная миграция и переключение пользователей   Живая среда  Трансформация реляционной модели в документо-ориентированную модель
  11. 11. Новый стек  Couchbase 2.2.0  RabbitMQ 3.1.5  ElasticSearch 0.90.5  ASP.NET WebAPI, ASP.NET MVC5, .NET 4.5  Amazon EC2 (виртуальные сервера)  Amazon CloudFront (CDN)  Amazon S3 (файловое хранилище)  Amazon Route 53 (DNS)  Amazon Load Balancer (балансировщик)  Amazon CloudWatch (Мониторинг)  Windows Server 2012 Standard Edition  Ubuntu Server 14
  12. 12. Хостинг  Front-end Windows сервер: c1.medium, 2 cores, RAM 1.7 Gb  Сервер данных: m2.2xlarge, 4 cores, RAM 34.2GB, EBS 100Gb  Стоимость:  Всего: 1200 – 1400 USD  80% всей стоимости 5 виртуальных серверов  Подписка на зарезервированные инстансы серверов
  13. 13. Немного о дата миграции
  14. 14. SPA дизайн  KnockoutJs  Лучшим решением был бы AngularJS  Routing на клиентской стороне  SignalR для получения от сервера сообщений  Шаблонизатор Razor  Кэширование всех шаблонов в памяти ASP.NET процесса
  15. 15. Организация очереди  Любые операции выполняющиеся > 0.5 сек  С внешним миром общается только WorkHorse  Обратная связь организуется на базе SignalR (временное открытие)  WorkHorse масштабирование:  На уровне потоков  Новые инстансы на новых машинах  От 20 до 40 одновременных обработчиков на каждую очередь
  16. 16. Откуда требование в 0.5 секунды
  17. 17. WorkHorse  ASP.NET MVC, IIS  Конфиги одинаковые  Master  Выполнение запланированных задач  Периодические платежи  Генерация SiteMaps
  18. 18. Поиск. ElasticSearch  Lucene.NET -> Solr -> ElasticSearch  2 млн документов (профили пользователей, мемориалы, форум)  AutoComplete  Отдельная бизнес-модель для поиска (только необходимые поля с метаинформацией)  Boosting полей  Фильтрация, сортировка
  19. 19. Хранилище. Couchbase  Couchbase 2.0: Membase (memcached + file sync) + CouchDB  Использование как key-value хранилища и как документ-ориентированного хранилища  > 50 млн документов  Кластер 60 Gb из 2 машин (ограничение – Сouchbase версии Enterpise на 2 прод. машины)  Средняя нагрузка – 500 запросов/сек  Максимальные пики –5-7K запросов/секунду  Дата миграция – 70К запросов/секунду  Пик – 250К запросов/секунду
  20. 20. Couchbase. Немного статистики  Обычный режим  Дата миграция
  21. 21. Couchbase. Оптимизация размеров  [JsonProperty("ldf")]  [JsonIgnore]
  22. 22. Couchbase. Индексирование  50 индексов в 20 дизайн документах  Разработка индексов в дизайн тайме на Javascript  Размер индексов ~6 гигабайт
  23. 23. Подсистема для SEO
  24. 24. Переезд
  25. 25. Причины  Изначальная подписка у Амазона была на 1 год, и она заканчивается. Продление подписки нет.  Нехватка размера памяти на дата серверах  Оптимизация расходов
  26. 26. Переключение пользователей
  27. 27. Хостинг  Front-end сервера (Windows): ex40ssd, Intel Core™ i7-4770 (8 ядер), RAM 32 Gb, 2x240 SSD RAID 1  Cервер баз данных (Linux): px90ssd, Intel Xeon E5- 1650 v2 (12 ядер), RAM 64 Gb, 2x240 SSD RAID 1  Стоимость:  700-800$ в месяц  Достижение: уменьшили стоимость на 40-50% с увеличением мощности системы
  28. 28. Выученные уроки  Amazon балансировщик не поддерживает прямых TCP соединений => проблема с websocket-ами  Couchbase требует как минимум 2 сервера – любой потерянный пакет в сети => сервер помечается как dead на 10 секунд  Couchbase обновляет индексы не сразу (в течение 5 секунд или 5000 обновлённых документов)  Окончание подписки на Amazon увеличивает цену на EC2 в 3-4 раза  Необходимо разделение документов по бакетам в Couchbase, индексирование новой вьюхи – около 1 часа нестабильной работы всей системы
  29. 29. ? denis@koloshko.com

×