2010-10-26 10 views
6

Estoy desarrollando una plataforma VOIP que permitiría a los usuarios hacer cientos de llamadas al mismo tiempo utilizando mi servicio.¿Cuál es la mejor arquitectura para la integración de CDR en una aplicación basada en Asterisk?

Asterisk almacena todos los registros de detalles de llamadas en la tabla CDR. Me gustaría saber cuál es el mejor lugar para mantener esta tabla para la mejor arquitectura posible de mi sistema.

Debería mantenerlo en el Asterisk Box y ejecutar un cron para sincronizarlo con el servidor de base de datos O debería llamar directamente al servidor de bases de datos con el Asterisk Box y registrar todos los datos directamente en la base de datos remotamente mediante Asterisk.

Todos sienten que ambas arquitecturas tienen sus propios pros y contras. Me gustaría la ayuda de expertos para sugerirme cuál sería el mejor camino posible para la escalabilidad y la sostenibilidad a largo plazo.

+1

Sincronizar es probablemente un paso innecesario cuando puedes llamar a un servicio que hará todo esto de forma automática para ti. Además, si utiliza algo dedicado para este propósito (es decir, un servidor db), puede prolly apoyar a la copia de seguridad de la caja, las políticas de replicación, etc .... – brumScouse

+0

Tengo un problema con la arquitectura Non Sync, ahora el servidor web y DB son lo mismo, así que no estoy seguro de cuánto se ralentizaría el sitio web debido a esto. –

Respuesta

11

La mejor arquitectura sería utilizar nodos distribuidos (Servidor), es decir, PBX, servidor web & servidor de bases de datos en diferentes nodos. PBX completará su tabla de CDR (debe estar en un servidor de base de datos) después de cada llamada, puede obtener estos registros de su servidor web para su informe & propósito de facturación.

Usando Cron sincronizar No se recomienda la tabla DB, ya que se comen los recursos del sistema & de ancho de banda también (ya que esto cron se ejecutará cada vez que come el sistema de recursos & sincronización con Db hará que el uso de ancho de banda) Así, utilizando por encima de arquitectura definida puede guardar los recursos del sistema que se utilizarán para ejecutar cron

En segundo lugar, si coloca CDR en el mismo nodo que PBX, guardará el recurso del sistema debido a cron, pero para reportar & debe obtener datos de este nodo no se puede guardar el ancho de banda, este esquema tiene una desventaja importante, ya que actualmente se habla de 100 llamadas al mismo tiempo, ¿y si tuvieras 1000 o más?

En este caso, debe utilizar definitivamente el clúster de PBX; en ese caso, necesitará un servidor de base de datos centralizado que se sincronizará con los clústeres de su PBX.

Por lo tanto, en todos los aspectos mi arquitectura sugerida satisfaría perfectamente sus necesidades. Como se afirma en la pregunta que necesita sólo 100s de llamadas simultáneas que puede utilizar un solo nodo para DB & servidor Web mientras PBx en otro nodo

1

creo que si se puede conectar directamente a partir del asterisco a la base de datos de lo que debería usarlo Lo he visto en algunas instalaciones de Asterisk (incluido un centro de llamadas bastante grande) y funcionó bien.

La otra opción que uso donde no hay conexión directa de Asterisk a la base de datos, pero hay conexión HTTPS a otro servicio o donde la estructura de la tabla de facturación no es compatible con las tablas de Asterisk para usar archivos CSV CDR. Dicho archivo se envía cada pocos minutos al sistema CRM. Uso cron y pequeño script de Python. De esta manera, puedo adaptarme fácilmente al formato CSV utilizado por el sistema de facturación CRM.

2

Usar un servidor de base de datos separado para almacenar sus CDR es la opción correcta para cualquier cosa que no sea la implementación de Asterisk. Asterisk hace que sea fácil seleccionar una base de datos de destino para sus CDR y tiene una miríada de opciones de bases de datos diferentes: MySQL, Postgresql. MSSQL, etc. La implementación de CDR de Asterisk solo usa una sola tabla, por lo que en realidad es una integración muy simple entre ella y su servidor de base de datos.

Una cosa a tener muy en cuenta es que si su servidor de base de datos o la conexión entre él y su servidor Asterisk tiene problemas, tendrá un impacto en el procesamiento de su llamada.Si hay un problema, Asterisk bloqueará mientras intenta conectarse a la base de datos para escribir los CDR. Mientras lo hace, no procesará ninguna otra llamada. Podría decirse que este es el comportamiento deseado ya que los CDR son críticos para la facturación y no poder registrarlos significa que cualquier llamada podría terminar siendo gratuita. Como copia de seguridad, también puede configurar el registro CDR en un archivo .csv en el servidor Asterisk como un enfoque de cinturón y llaves.

Cuestiones relacionadas