转自:http://www.cnblogs.com/logo-fox/archive/2013/12/09/3465440.html
FreeSWITCH总体结构:
FreeSWITCH 由一个稳定的核心及外围模块组成,下图来自 FreeSWITCH Wiki:
FreeSWITCH的特点:
FreeSWITCH 使用线程模型来处理并发请求,每个连接都在单独的线程中进行处理。这不仅能提供最大强度的并发,更重要的是,即使某路电话发生问题,也只影响到它所在的线程,而不会影响到其它电话。FreeSWITCH 的核心非常短小精悍,这也是保持稳定的关键。所有其它功能都在外围的模块中。模块是可以动态加载(以及卸载)的,在实际应用中可以只加载用到的模块。外围模块通过核心提供的 Public API 与核心进行通信,而核心则通过回调机制执行外围模块中的代码。
FreeSWITCH的加载顺序:(配置文件在、/usr/local/freeswitch/conf/)
1、顶层:freeswitch.xml
2、vars.xml | 一些常用变量
3、dialplan/default.xml | 缺省的拨号计划
4、
directory/default/*.xml | SIP用户,每用户一个文件
5、sip_profiles/internal.xml | 一个SIP profile,或称作一个SIP-UA,监听在本地IP及端口5060,一般供内网用户使用
6、sip_profiles/externa.xml | 另一个SIP-UA,用作外部连接,端口5080
7、autoload_configs/modules.conf.xml | 配置当FreeSWITCH启动时自动装载哪些模块
FreeSWITCH的架构图: