Upgrade to Pro — share decks privately, control downloads, hide ads and more …

«Безопасное взаимодействие в распределенных системах» — Алексей Солодкий, Badoo

Badoo Tech
April 09, 2018
8.3k

«Безопасное взаимодействие в распределенных системах» — Алексей Солодкий, Badoo

Выступление на Badoo PHP Meetup 7.04.2018.

В эпоху микросервисов все острее становится проблема распределенного взаимодействия между различными частями инфраструктуры. Алексей расскажет как обеспечить безопасное синхронное общение между монолитом на PHP и кучей различных сервисов. Рассмотрим основные проблемы и решения.

Badoo Tech

April 09, 2018
Tweet

More Decks by Badoo Tech

Transcript

  1. About 3k серверов 600 серверов баз данных 350k запросов в

    секунду 50 типов самописных сервисов 2
  2. • сервера падают; • сервис может затупить. Темы 3 Как

    выживать в мире, где… • правильно мониторить сервисы; • грамотно умирать. А также как…
  3. • проблемы с железом; • сеть; • код; • неудачный

    деплой; • русские хакеры. Что может вывести из строя ваш сервис? 5
  4. • Async: • eventual consistency; • можно потерять часть данных;

    • быстрее на запись; • более простые схемы. • Sync: • данные всегда согласованы; • медленная запись; • кворумы, split-brain и прочие сложности. sync vs async репликация 12
  5. • резервируйте; • проводите учения! • учитывайте падения при расчёте

    нагрузки; • выбирайте синхронность репликации, исходя из задач; • не кладите все яйца в одну корзину. Выводы
 раздела 13
  6. 16

  7. 18

  8. • PHP + storage: • https://github.com/ackintosh/ganesha • https://github.com/ejsmont-artur/php- circuit-breaker •

    В виде отдельного демона: • Envoy • Linkerd Реализации 24
  9. • не полагайтесь на сеть; • все запросы по сети

    должны иметь таймаут; • используете Circuit Breaker https://docs.microsoft.com/en-us/azure/ architecture/patterns/circuit-breaker Выводы
 раздела 25
  10. • Интеграционные метрики • RPS, время ответа, процентили; • количество

    ошибок логики; • количество системных ошибок. Что? • Внутренние метрики • портебление cpu, памяти; • количество хранимых ресурсов.
  11. Что? • Очереди • EPS (Скорость прихода) • Время на

    разных этапах • Размер очереди в данный момент времени
  12. • собирайте все данные, какие можете; • не забывайте об

    асинхронном взаимодействии; • встраивайте в самописные сервисы отдачу статки; • настройте автоматические триггеры. Выводы
 раздела 41
  13. • будьте готовы к полному падению сервиса; • не допускайте

    каскадного отказа; • отключайте некритичный функционал в случае падения сервиса. Выводы
 раздела 49
  14. • Балансировка нагрузки • Таймауты • Логика failover • Circuit

    breaker • Мониторинг • Логика авторизации • Сериализация, десериализация Слой интеграции 51