Какова лучшая архитектура для интеграции CDR в приложение на основе Asterisk?

Я занимаюсь разработкой платформы VOIP, которая позволила бы пользователям совершать сотни звонков одновременно, используя мой сервис.

Asterisk сохраняет все записи о вызовах в таблице CDR. Я хотел бы знать, где лучше всего хранить эту таблицу для наилучшей архитектуры моей системы.

Должен ли я сохранить его на Asterisk Box и запустить cron для синхронизации с сервером базы данных ИЛИ я должен напрямую вызвать сервер БД с помощью Asterisk Box и записать все данные напрямую в базу данных через Asterisk удаленно.

Все чувствуют, что обе архитектуры имеют свои плюсы и минусы. Я хотел бы, чтобы помощь экспертов предложила мне наилучший путь для долгосрочной масштабируемости и устойчивости.

3 ответа

Решение

Лучшей архитектурой будет использование распределенных узлов (Сервер), то есть УАТС, веб-сервер и сервер БД в разных узлах. УАТС будет заполнять вашу таблицу CDR (это должно быть на сервере БД) после каждого вызова, вы можете получить эти записи с вашего веб-сервера для целей отчетности и выставления счетов.

Использование таблицы Cron для синхронизации БД не рекомендуется, так как она потребляет системные ресурсы и пропускную способность (поскольку этот cron будет запускаться каждый раз, когда потребляется системный ресурс, а синхронизация с Db приведет к использованию пропускной способности). Таким образом, используя выше определенную архитектуру, вы можете сохранить системные ресурсы, которые будут использоваться при запуске cron

Во-вторых, если вы разместите CDR в том же узле, что и УАТС, это сэкономит системный ресурс из-за cron, но для составления отчетов и выставления счетов вам нужно получать данные с этого узла, чтобы вы не могли сохранить пропускную способность, у этой схемы есть существенный недостаток, о котором вы сейчас говорите 100 звонков одновременно, а что если у вас было 1000 или больше?

В этом случае вам обязательно нужно использовать кластеризацию УАТС, в этом случае вам потребуется централизованный сервер БД, который будет синхронизироваться вашими кластерами УАТС.

Так что во всех аспектах моя предложенная архитектура будет идеально соответствовать вашим потребностям. Как указано в вопросе, что вам нужно только 100 с одновременных вызовов, вы можете использовать один узел для БД и веб-сервера, в то время как PBX в другом узле

Использование отдельного сервера базы данных для хранения ваших CDR является правильным вариантом для всего, кроме хобби Asterisk. Asterisk облегчает выбор целевой базы данных для ваших CDR и имеет множество различных вариантов базы данных: MySQL, Postgresql. MSSQL и т. Д. В реализации Asterisk CDR используется только одна таблица, поэтому на самом деле это очень простая интеграция между ней и вашим сервером базы данных.

ОЧЕНЬ нужно знать, что если ваш сервер базы данных или соединение между ним и вашим сервером Asterisk имеют проблемы, это повлияет на обработку вызовов. Если есть проблема, Asterisk будет блокироваться, пока он пытается подключиться к базе данных для записи CDR. Пока он делает это, он не будет обрабатывать любые другие вызовы. Возможно, это желаемое поведение, поскольку CDR имеют решающее значение для выставления счетов, и невозможность их регистрации означает, что любые вызовы потенциально могут оказаться бесплатными. В качестве резервной копии вы также можете настроить запись CDR в файл.csv на сервере Asterisk, используя подход с поясом и фигурными скобками.

Я думаю, что если вы можете подключиться напрямую из Asterisk к базе данных, чем вы должны использовать его. Я видел это на некоторых установках Asterisk (включая один довольно большой колл-центр), и он работал хорошо.

Другой вариант, который я использую, когда нет прямого соединения между Asterisk и базой данных, но есть HTTPS-соединение с другим сервисом, или когда структура таблицы биллинга не совместима с таблицами Asterisk, она использует файлы CSV CDR. Такой файл отправляется каждые несколько минут в систему CRM. Я использую cron и маленький скрипт на Python. Таким образом, я могу легко адаптироваться к формату CSV, используемому биллинговой системой CRM.

Другие вопросы по тегам