zoukankan      html  css  js  c++  java
  • 软交换freeswitch系统概要和源代码分析初步


    asterisk与freeswitch的比较:
    1:Asterisk是针对1百人以下的小型系统,相同的硬件配置下单系统最多并发200路,而根据国外爱好者测试freeswitch可达到2000-3000路sip通道(媒体流并发)。
    2:Asterisk用动态链表来管理每个打开的通道,这样在多线程中非常难于管理(需要频繁的锁定和解锁)。而freeswitch每个呼叫通道都会用一个线程来管理呼叫状态,大大减少了死锁发生的几率。
    3:Asterisk用DUNDi协议设计分布式系统。Fs使用外部数据库实现分布系统,做得更好,甚至可以一台服务器通过数据库注册到另一台服务器上。
    4:freeswitch支持很多操作系统如linux,windows,Max OS X, BSD ,Solaris (包括 32 and 64 位平台)。asterisk基本只支持linux/unix。


    基础知识需求
    C/c++编程, c#,socket编程 ,sip,XML(fs的配置,呼叫规则和数据都是通过xml保存的),脚本语言JavaScript,lua,pcre(perl)。数据库sqlite,mysql。
    系统编程知识:多进程线程同步(临界区,互斥量,信号灯,事件),APR,模块动态共享机制。

    系统分析初步:
       1:APR(系统集成的版本版本1.2.8,最新是1.3.8),分析其源代码的时候,需要掌握:内存池,事件机制,文件处理,进程和线程管理 。APR的主要目的是为应用提供一个可移植的、平台无关的层。它使用底层的、交叉平台的库来提供文件系统访问、网络编程、进程和线程管理以及共享内存等功 能。
    2: Freeswitch是个高度模块化的程序,对于windows版本,其模块在mod目录下,基本上为mod_***.dll的格式。mod_opal 是h323支持,mod_iax.dll是asterisk的协议IAX的支持模块。大部分模块可以在系统运行的时候动态加载和卸载。
    3:对freeswitch的控制都集中在conf目录下的那些xml文件。

    4:freeswitch运行的时候,其核心是以信号量和事件来驱动的,核心维持一些(3个)事件队列,分别有专门的线程对发生的事件进行处理。

  • 相关阅读:
    catchadminvue 安装遇到的问题
    HttpRunner 3.x (三)环境与简介 测试
    HttpRunner 3.x (五):variables变量的声明和引用 测试
    HttpRunner 3.x (四):post请求类型application/xwwwfromurlencoded 测试
    httprunenr 3.x(一)环境安装与准备 测试
    httprunner 3.x(二)测试用例结构 测试
    单例模式,工厂模式
    【更新公告】Airtest更新至1.2.4
    【更新公告】pocoui更新至1.0.85版本
    使用Airtest对iOS进行自动化的常见问题答疑
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318486.html
Copyright © 2011-2022 走看看