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

Звонки на стероидах

Звонки на стероидах

Сергей Стародубцев (http://deeprefactoring.ru/speakers/sergey-starodubtcev)

Видео: https://youtu.be/qQrNkWS4z_o

О проблемах и методах их решений при создании highload продукта.

========================
"Глубокий Рефакторинг" - открытый клуб разработчиков и профессионалов IT-индустрии Воронежа, организующий доклады на профильные темы - http://deeprefactoring.ru/

Открытый чат: https://t.me/deeprefactoring
Новостной канал: https://t.me/deeprefactoring_news
Видео всех докладов - https://www.youtube.com/c/deeprefactoring
Слайды выступлений: https://speakerdeck.com/deeprefactoring

Группа FB - https://www.facebook.com/groups/deeprefactoring
Группа ВК - https://vk.com/deeprefactoring
===========================

Deep Refactoring

September 20, 2019
Tweet

More Decks by Deep Refactoring

Other Decks in Programming

Transcript

  1. Звонки на стероидах
    проблемы и методы их решения при разработке
    систем автоинформирования
    Стародубцев Сергей
    ООО “Рантел”
    Руководитель отдела разработки ПО
    [email protected]
    +7 (908) 143-59-26

    View full-size slide

  2. О чем буду рассказывать… Вместо вступления
    1. Постановка задачи.
    2. Скажем астериску “нет” или эволюция ядра платформы.
    3. Асинхрону “быть”!
    4. В поисках идеальной редиски.
    5. От галеры до postgreSQL.
    6. Проблемы на этапе обзвона.
    7. Принципы умного обзвона.

    View full-size slide

  3. Постановка задачи
    Разработка системы массового обзвона со следующими параметрами:
    ● Не менее 3000 одновременных вызовов
    ● Автоматически запускать и останавливать обзвон по расписанию
    ● Учет часовых зон
    ● Миксовать уведомления с тегами, синтезом и распознаванием речи
    ● Отказоустойчивость и масштабируемость
    ● Массовая подстановка номеров (АОНов)
    ● Черные и белые списки
    ● Входящая маршрутизация
    ● Продолжать обзвон не смотря ни на что. Show must go on!

    View full-size slide

  4. Эволюция ядра платформы
    150 одновременных
    вызовов
    1500 одновременных
    вызовов
    > 8000
    одновременных
    вызовов

    View full-size slide

  5. Асинхрону быть!
    Потребность в неблокирующих сетевых соединениях с базой данных, кешем,
    конкурентные вычисления, параллельные звонки, обработка событий.
    Модуль Recipient обеспечивает прием входящих вызовов.
    Модуль Talker выполняет исходящий обзвон.
    Модуль UI выполняет роль пользовательского интерфейса.
    Asyncio
    Aiohttp
    Asyncpg
    PJSip
    Aioredis
    Sqlalchemy

    View full-size slide

  6. В поисках идеальной редиски
    Параметр Redis Cluster Redis Sentinel
    Число нод 6+ 2+
    Переключение ролей Slave->Master + +
    Репликации + +
    Шардинг + -
    Наличие асинхронной библиотеки нестабильная +
    В Режим Sentinel нет кластера, а только Master-Slave репликация
    нескольких нод Redis. Sentinel мониторит статусы нод и выполняет
    автоматическое переключение ролей в случае недоступности Master
    ноды.

    View full-size slide

  7. От галеры до postgreSQL
    На базе асинхронной библиотеки asyncpg реализован
    коннектор к postgreSQL, который анализирует
    конфигурацию нод, их доступность и выбирает способ
    подключения: соединение или пул соединений. Что
    обеспечило ускорение по сравнению с psycopg2 более
    чем в 3 раза.
    MariaDB Galera Cluster — это MariaDB кластер с мастер-мастер репликацией
    использующий для синхронизации galera-библиотеку
    К чему пришли?

    View full-size slide

  8. Проблемы на этапе обзвона
    1. Бан от операторов
    2. Отказ операторских железок по CPS
    3. Ограничения операторского софта и лицензий на число линий
    4. Геолокация абонентов и часовые зоны

    View full-size slide

  9. Принципы умного обзвона (bad practice)

    View full-size slide

  10. Принципы умного обзвона. Сглаживание

    View full-size slide

  11. Принципы умного обзвона. Сглаживание

    View full-size slide

  12. Принципы умного обзвона. Управление лояльностью

    View full-size slide

  13. Спасибо за внимание!
    Стародубцев Сергей
    ООО “Рантел”
    Руководитель отдела разработки ПО
    [email protected]
    +7 (908) 143-59-26

    View full-size slide