2010-10-26 4 views
6

Iam Entwicklung einer VoIP-Plattform, die es Benutzern ermöglichen würde, Hunderte von Anrufen gleichzeitig mit meinem Service zu machen.Was ist die beste Architektur für CDR-Integration in eine Asterisk-basierte Anwendung

Der Asterisk speichert alle Anrufdetails in der CDR-Tabelle. Ich würde gerne wissen, wo der beste Platz ist, um diesen Tisch für die bestmögliche Architektur meines Systems zu halten.

sollte ich es auf der Asterisk Box behalten und einen cron ausführen um es mit dem Datenbankserver zu synchronisieren ODER sollte ich den DB Server direkt von der Asterisk Box anrufen und alle Daten direkt über Asterisk auf der Datenbank protokollieren.

Alle haben das Gefühl, dass beide Architekturen ihre eigenen Vor- und Nachteile haben. Ich möchte die Hilfe von Experten, um mir vorzuschlagen, welcher bestmögliche Weg für langfristige Skalierbarkeit und Nachhaltigkeit wäre.

+1

Sync'ing ist wahrscheinlich ein unnötiger Schritt, wenn Sie in einen Dienst anrufen können, der all das aus der Fledermaus für Sie erledigen wird. Plus, wenn Sie etwas dediziert für diesen Zweck verwenden (dh ein DB-Server) können Sie prolly levearge Out-of-the-Box-Backup, Replikationsrichtlinien etc .... – brumScouse

+0

Ich habe ein Problem mit der Non-Sync-Architektur, jetzt der Webserver und DB sind das gleiche, also ich bin mir nicht sicher, wie viel die tatsächliche Website aufgrund dieser verlangsamen würde. –

Antwort

11

Die beste Architektur wäre die Verwendung verteilter Knoten (Server), d. H. PBX, Webserver & DB-Server in verschiedenen Knoten. PBX füllt Ihre CDR-Tabelle (dies muss sich in einem DB-Server befinden) nach jedem Aufruf aus. Sie können diese Datensätze von Ihrem Webserver für Ihre Berichterstattung abrufen.

Cron Mit DB-Tabelle Sync wird nicht empfohlen, da es die Systemressourcen & Bandbreite zu werden auffressen (da diese cron jedes Mal läuft die Systemressource & Synchronisierung mit Db Bandbreitennutzung verursacht auffressen) oben So verwenden definierte Architektur können Sie Systemressourcen speichern, die in laufenden cron verwendet werden

Zweitens, wenn Sie CDR in den gleichen Knoten wie PBX platzieren wird es Systemressourcen aufgrund Cron speichern, aber für die Berichterstattung & Abrechnung müssen Sie Daten von diesem Knoten so zu holen Sie können Bandbreite nicht speichern, dieses Schema hat einen großen Nachteil, da Sie derzeit über 100 Anrufe gleichzeitig sprechen, was ist, wenn Sie 1000 oder mehr hatten?

In diesem Fall müssen Sie unbedingt PBX-Clustering verwenden. In diesem Fall benötigen Sie einen zentralen DB-Server, der von Ihren PBX-Clustern synchronisiert wird.

Also in allen Aspekten würde meine vorgeschlagene Architektur perfekt Ihren Bedürfnissen entsprechen. Wie in der Frage, dass Sie nur 100er gleichzeitige Anrufe benötigen Sie einen einzigen Knoten für DB & Webserver während PBx in anderen Knoten

1

Ich denke, dass wenn Sie direkt von Asterisk zu Datenbank als Sie verbinden können sollte es benutzen. Ich habe es auf einigen Asterisk-Installationen (einschließlich eines ziemlich großen Callcenters) gesehen und es hat gut funktioniert. Die andere Option, die ich benutze, wo es keine direkte Verbindung von Asterisk zur Datenbank gibt, aber es gibt eine HTTPS-Verbindung zu einem anderen Dienst, oder wo Abrechnungstabelle Struktur ist nicht kompatibel zu Asterisk Tabellen CSV CDR-Dateien verwenden. Diese Datei wird alle paar Minuten an das CRM-System gesendet. Ich benutze Cron und kleines Python-Skript. Auf diese Weise kann ich mich einfach an das CSV-Format des CRM-Abrechnungssystems anpassen.

2

Die Verwendung eines separaten Datenbankservers zum Speichern Ihrer CDRs ist die richtige Option für alles andere als eine Hobby-Asterisk-Implementierung. Asterisk erleichtert die Auswahl einer Zieldatenbank für Ihre CDRs und hat eine Vielzahl von verschiedenen Datenbankoptionen: MySQL, Postgresql. MSSQL usw. Die Asterisk-CDR-Implementierung verwendet nur eine einzige Tabelle, daher ist es eine sehr einfache Integration zwischen ihr und Ihrem Datenbankserver.

Eine Sache zu SEHR bewusst sein, dass, wenn Ihr Datenbankserver oder die Verbindung zwischen ihm und Ihrem Asterisk-Server Probleme hat, wird es Auswirkungen auf Ihre Anrufverarbeitung.Wenn es ein Problem gibt, wird Asterisk blockieren, während es versucht, eine Verbindung zur Datenbank herzustellen, um die CDRs zu schreiben. Währenddessen werden keine anderen Anrufe bearbeitet. Dies ist wahrscheinlich das erwünschte Verhalten, da CDRs für die Abrechnung kritisch sind und nicht in der Lage sind, sie zu protokollieren, was bedeutet, dass irgendwelche Anrufe möglicherweise kostenlos sind. Als Backup können Sie auch CDR-Logging in eine .csv-Datei auf dem Asterisk-Server als Gürtel- und Zahnspange-Ansatz einrichten.

Verwandte Themen