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.

Разработка high load системы на .NET Core

759 views

Published on

- Почему мы выбрали .NET Core качестве основной платформы для нашего продукта
- команда мечты от разработчиков Java, которая начала писать на .NET Core;
- мониторинг системы, поиск запросов и другие диагностические задачи.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Разработка high load системы на .NET Core

  1. 1. Разработка high load системы на .NET Core: что нам пришлось пережить Андрей Губский
  2. 2. О себе  В коммерческой разработке с 2008 года;  Microsoft MVP с 2017 года;  Занимаюсь ИТ консалтингом, разработкой и проектированием информационных систем и решений;  PhD;  Автор проекта //devdigest
  3. 3. О продукте
  4. 4. Чем я занимаюсь сейчас? vi stories – система контекстной рекомендации видео. Сверхзадача: • подбор видео наиболее точно соответствующего контенту страницы Требования к системе: • минимальное время для анализа страницы, • минимальное время для подбора видео.
  5. 5. Что сегодня будет?
  6. 6. Что такое высоконагруженная система?
  7. 7. Проблема №0 Как из джавистов сделать дотнетчиков так, чтобы они этого не заметили
  8. 8. Привычные инструменты • Visual Studio • Visual Studio for mac • Visual Studio Code • Rider • Mono Develop
  9. 9. Привычные абстрактные фабрики
  10. 10. Проблема №1 Выбор стека и определение приоритетов разработки
  11. 11. Что было и что стало MSMQ
  12. 12. Проблема №2 Консистентность информации внутри системы, и почему иммутабельность – это хорошо
  13. 13. Иммутабельность – это хорошо • Нет неожиданных побочных эффектов по ходу выполнения кода – никто не изменит то, что не должно быть изменено. Не нужно держать в голове куски системы, в которых объект мог быть изменен; • Иммутабельные коллекции потокобезопасны; • Концепция иммутабельности является одной из концепций ФП и позволяет более четко описывать логику процессов и проще тестировать код.
  14. 14. System.Collections.Immutable • ImmutableArray • ImmutableArray<T> • ImmutableDictionary • ImmutableDictionary<TKey,TValue> • ImmutableHashSet • ImmutableHashSet<T> • ImmutableList • ImmutableList<T> • ImmutableQueue • ImmutableQueue<T> • ImmutableSortedDictionary • ImmutableSortedDictionary<TKey,TValue> • ImmutableSortedSet • ImmutableSortedSet<T> • ImmutableStack • ImmutableStack<T>
  15. 15. Проблема №3 Работа с пиковыми нагрузками
  16. 16. Service 1 Service 2 Service 3 Probe 1A Probe 2C Probe 3AProbe 1B Probe 2B Probe 2A Spectator Высоконагруженная система построенная на базе микросервисной архитектуры Уведомление об изменении состояния системы Запрос Spectator к датчику о состоянии отслеживаемой метрики системы Проверка датчиком метрики системы Как работает X.Spectator Probe – отвечает за проверку состояния одного из показателей системы; Spectator– опрашивает один, или несколькими датчиками. Изменяет свое состояние в зависимости от текущих показаний датчиков; State calculator – на основе журнала метрик вычисляет текущее состояние. State journal – набор показателей каждого из датчиков с указанием времени опроса.
  17. 17. X.Spectator GitHub: https://github.com/ernado-x/X.Spectator Хабр: https://habr.com/en/post/459092 Проект с открытым исходным кодом.
  18. 18. Проблема №4 Отладка и логирование
  19. 19. Correlation ID позволяет проследить весь жизненный цикл запроса
  20. 20. Проблема №5 Технический долг
  21. 21. Вопросы?
  22. 22. Telegram: @dncuug Платформа: bit.ly/dev_digest Наш чат: var chat = new Chat(); Наши ресурсы
  23. 23. Спасибо за внимание!

×