Какова лучшая архитектура для интеграции CDR в приложение на основе Asterisk? - PullRequest
6 голосов
/ 26 октября 2010

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

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

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

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

Ответы [ 3 ]

11 голосов
/ 27 октября 2010

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

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

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

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

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

2 голосов
/ 28 октября 2010

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

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

1 голос
/ 27 октября 2010

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

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

...