2010-10-26 48 views
6

Iam正在開發一個VOIP平臺,該平臺允許用戶使用我的服務同時撥打100個電話。什麼是CDR集成到基於Asterisk的應用程序的最佳體系結構

星號存儲CDR表中的所有呼叫詳細記錄。我想知道哪裏是最好的地方,以保持我的系統最好的架構這張桌子。

我是否應該將它保留在星號框上並運行cron以將其與數據庫服務器同步,或者我應該直接通過星號框調用數據庫服務器,並通過Asterisk遠程直接在數據庫上記錄所有數據。

大家都覺得這兩個架構都有各自的優缺點。我希望專家的幫助能夠爲我提供哪些可能的最佳長期可擴展性和可持續性途徑。

+1

Sync'ing可能是一個不必要的步驟,當你可以調用一個服務,它將爲你做所有這些事情。此外,如果使用專用於此目的的某些東西(例如數據庫服務器),則可以使用開箱即用的備份,複製策略等。 – brumScouse 2010-10-26 18:52:58

+0

我有一個與非同步體系結構有關的問題,現在Web服務器和數據庫都是同樣,所以Iam不確定實際網站會因此而減慢多少。 – 2010-10-26 18:55:24

回答

11

最好的體系結構將使用分佈式節點(服務器),即PBX,Web服務器&數據庫服務器在不同的節點。每次通話後,PBX都會填充您的CDR表(這必須位於數據庫服務器中),您可以從您的網絡服務器獲取這些記錄,以便爲您的報表&開票。

使用cron 所以上述用來同步,不建議數據庫表,因爲它會吃掉系統資源&帶寬過(因爲這cron將會運行每次吃了Db的同步系統資源&會造成帶寬使用)定義的架構可以節省將在運行的cron

其次可以使用系統資源,如果你把CDR在同一節點PBX將系統資源節省由於cron的,但報告&計費你有來從該節點的數據,以便你不能保存帶寬,這個模式有一個主要的缺點,因爲目前你正在同時談論100個電話,如果你有1000或更多?

在這種情況下,您必須明確使用PBX羣集,在這種情況下,您將需要一個集中的數據庫服務器,它將由您的PBX羣集同步。

因此,在所有方面我建議的架構將完全滿足您的需求。 因爲它是在你只需要併發呼叫100S則可以在PBX在其他節點使用DB & Web服務器的單個節點

1

我認爲這個問題說,如果你可以直接從Asterisk的比你連接到數據庫應該使用它。我曾在一些Asterisk安裝(包括一個非常大的呼叫中心)上看到它,它運行良好。

我使用的其他選項沒有從Asterisk直接連接到數據庫,但存在到其他服務的HTTPS連接,或者帳單表結構與Asterisk不兼容的地方使用CSV CDR文件。這種文件每隔幾分鐘發送到CRM系統。我使用cron和小Python腳本。這樣我就可以很容易地適應CRM計費系統使用的CSV格式。

2

使用一個單獨的數據庫服務器來存儲您的CDR是任何事情,除了愛好星號實現的正確選項。 Asterisk使您可以輕鬆地爲您的CDR選擇目標數據庫,並擁有大量不同的數據庫選項:MySQL,Postgresql。 MSSQL等Asterisk CDR實現只使用一個表,所以它實際上是它和你的數據庫服務器之間的一個非常簡單的集成。

有一點需要非常清楚的是,如果您的數據庫服務器或其與Asterisk服務器之間的連接存在問題,它將影響您的呼叫處理。如果出現問題Asterisk會一直嘗試連接數據庫來寫入CDR,但會阻塞它。雖然這樣做,它不會處理任何其他電話。可以說這是理想的行爲,因爲CDR對於計費至關重要,而不能記錄它們意味着任何呼叫都可能最終免費。作爲備份,您還可以將CDR記錄設置爲Asterisk服務器上的.csv文件,作爲腰帶和大括號方式。

相關問題