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
  2. О чем буду рассказывать… Вместо вступления 1. Постановка задачи. 2.

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

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

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

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

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

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