2010-10-26 51 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文件,作为腰带和大括号方式。

相关问题