Какое решение подходит для службы авторизации высокой доступности? - PullRequest
3 голосов
/ 17 апреля 2009

Я работаю в магазине программного обеспечения, в котором есть собственный продукт для прогнозирующего набора номера, и нам нужно реализовать решение, чтобы подчиняться спискам «НЕ ЗВОНИТЕ».

По сути, у меня есть база данных с клиентами / потенциальными клиентами, которым мне нужно позвонить, и другая база данных с номерами телефонов, по которым я не могу позвонить. Поскольку система является прогнозирующим номеронабирателем, основываясь на производительности операции, среднем времени и прочем, она будет набирать больше или меньше вызовов на каждого зарегистрированного пользователя системы. Обычно это «магическое» число составляет около 3-4 звонков на одного зарегистрированного агента.

Хранилище телефонных номеров для предиктивного набора номера - это база данных PostgreSQL. Прогнозирующий номеронабиратель выбирает набор номеров из базы данных и отправляет команду на АТС для набора номера, а затем бизнес-логика переходит к передаче действительных вызовов клеркам центра обработки вызовов и т. Д. проблема перед звонком).

Мне нужно реализовать функцию списка не звонить. Этот список запрета звонков будет предоставляться нашей компании государственным органом в формате CSV на ежедневной основе. Каждый раз, когда я получаю новый CSV-файл, мне приходится очищать старый список «не звонить» и помещать новый на место.

Моей первой мыслью было реализовать пакетную обработку, сопоставив СПИСОК НЕ ВЫЗОВА с моей текущей базой данных клиентов. Но я думаю, что, в зависимости от размера обеих баз данных, перекрестные ссылки будут очень интенсивно работать, а иногда не могут быть завершены в одночасье. У меня раньше были такие проблемы с пакетной обработкой, и это не очень приятно видеть.

Моя вторая идея возникла, когда я подумал о том, как крупные учреждения обрабатывают высокопроизводительные и высокопроизводительные системы авторизации, такие как кредитная карта или аутентификация / авторизация пользователя. Я подумал, что создание службы аутентификации для номеров списка «НЕ звонить» и изменение алгоритма моей прогностической программы набора номера для проверки каждого номера по отношению к этой службе авторизации перед набором будет аккуратным.

Поскольку я здесь только высказываюсь, я понятия не имею, какая идея лучшая, или я совершенно ошиблась и должна искать другое направление. Итак, мой вопрос: что бы вы посоветовали? Сохранить файл НЕ ВЫЗВАТЬ CSV в памяти? использовать LDAP? использовать MySQL? PostgreSQL? Есть ли пакетная обработка? Или я точно облажался?

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

1 Ответ

2 голосов
/ 18 апреля 2009

Ваша задача найти множество записей в огромном пространстве возможных записей напоминает мне о черных / черных списках DNS .

rbldnsd - это маленький и быстрый DNS демон, который специально сделан для обслуживать зоны DNSBL. Этот демон был вдохновленный Др. Бернштейном Программа найдена в пакете djbdns. Больше rbldnsd, от Google

Он поддерживает зоны, основанные на именах, поэтому вы можете преобразовать список номеров в URI в стиле ENUM - например, + 1-555-4242 становится 2.4.2.4.5.5.5.1.e164.arpa. Затем он заносится в файл данных rbldnsd, компилируется в память и доступен как любой другой блок-лист. Запись по умолчанию означает can-call, или, если запись существует, ей будет присвоена запись DoNotCall.

Тем не менее, у вас все еще есть проблема пакетного преобразования, хотя это будет несколько более простой сценарий, вполне возможно сделать с Perl или AWK. Вы также можете разделить входящие файлы CSV на несколько файлов для параллельной обработки и окончательного слияния.

...