本文是来自FOSDEM 2020 Real Time Communications devroom的演讲,演讲者是Liviu Chircu,Rǎzvan Crainea和Peter Lemenkov,题目是“Reach for the Clouds With OpenSIPS 3.0:A major release focused on the DevOps mindset”。
本文提供一个OpenSIPS的一键安装包,OpenSIPs 可以作为FreeSwitch 的前端代理,实现多个FreeSwitch 负载均衡处理呼叫流量。
携程拥有庞大的呼叫中心,涉及上万客服人员,覆盖机票、酒店、火车票、度假等产线的售前售后业务,每天的电话业务量超百万通。近年来,通信技术、人工智能技术和智能终端等都在不断革新,我们也一直在思考如何去做更智能化、自动化的呼叫中心,为未来海量的客户需求提供稳定和优质的服务。
其中Cflags保存的是分支标志,上面的例子Kamailio的分支标志是64,一般在Kamailio.cfg的开头几行能找到这样的定义:
作者简介 韩海龙,携程通信技术中心工程师,负责VoIP,软交换相关领域技术研究与开发,及携程呼叫中心语音中继接入工作。 一、SBC简介 随着互联网及RTC通信技术的不断发展,使得VoIP技术 近几
解压软件包: tar -zxvf opensips-1.8.2_src.tar.gz
SIP攻击很常见,特别是各大云服务器,基本上开了个公网IP绑定到实例机器就会被外国IP一遍怼。防范也容易,就是把外国IP禁掉。 实现:iptables+ipset,只允许中国IP访问本机,也就实现了封禁国外IP的效果。 优点:匹配迅速,免去iptables单链匹配。
[root@localhost ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=localhost.localdomain HOSTNAME=OpenSIPS.clvn.com.cn
SQL SECURITY DEFINER : 调用阶段根据调用者的权限进行判断是否可以调用,执行阶段根据DEFINER的账户权限判断操作是否可以继续执行。
今天来说说mod_soifa,它就是FreeSWITCH中的SIP模块。 FreeSWITCH并没有自己开发新的SIP协议栈,而是使用了比较成熟的开源SIP协议栈Sofia-SIP,以避免“重复发明轮子”。Sofia-SIP是由诺基亚公司开发的SIP 协议栈,它以开源的许可证LGPL发布。参见 http://sofia-sip.sourceforge.net/ 。 在FreeSWITCH中,实现一些互联协议接口的模块称为Endpoint。FreeSWITH支持很多类型的Endpoint,如SIP、H232等。这些不同的Endpoint主要是使用不同的控制协议跟其他的Endpoint通话。所以说,Endpoint一般是跟通话相关的。 有的读者可能会问,那么实现SIP的模块为什么不支持叫mod_sip呢?这是由于 FreeSWITCH的Endpoint是一个抽象的概念,你可以用任何的技术来实现。实际上mod_sofia只是对Sofia-SIP库的一个粘合和封装。除Sofia-SIP外,还有很多开源的SIP协议栈,如pjsip、osip等。最初选型的时候,FreeSWITCH 的开发团队也对比过许多不同的SIP协议栈,最终选用了Sofia-SIP。FreeSWITCH 是一个高度模块化的结构,如果你喜欢其他协议栈,可以自己实现如mod_pjsip或mod_osip等,它们是互不影响的。这也正是FreeSWITCH架构设计的精巧之处。 mod_sofia实现了SIP中的注册服务器,重定向服务器,媒体服务器、呈现服务器、SBC等各种功能。它的定位是一个B2BUA,它不能实现SIP代理服务器的功能。实现SIP代理服务器的开源软件有OpenSIPS、Kamailio等。它们可以很好的与FreeSWITCH配合工作。 在mod_sofia中,有一个概念是SIP Profile,它相当于一个SIP UA,通过各种不同的配置参数可以配置一个UA的行为。一个系统中可以有多个Profile,每个Profile都可以监听不同的IP地址和端口对。 一个Profile中有多个Gateway,Gateway可以直译为网关,它主要用于定义一个远端的SIP服务器,使FreeSWITCH可以与其他服务器通信。FreeSWITCH可以作为一个SIP客户端(UAC)向远端的网关进行“注册”;当然也可以不注册,而是使用与远端服务器对等的方式(俗称SIP Trunk,即SIP中继)相互通信(我们将在第14章讲到FreeSWITCH与与它系统相连的各种拓扑结构)。 FreeSWITCH可以作为注册服务器,这时候,其他的SIP客户端就可以向它注册。FreeSWITCH将通过用户目录(Directory)中的配置信息对注册用户进行鉴权。这些SIP客户端所代表的用户就称为本地SIP用户、简称本地用户。 牢记FreeSWITCH是一个B2BUA。如果Alice通过FreeSWITCH给Bob打电话,Alice首先向FreeSWITCH发起呼叫,对FreeSWITCH而言,这路通话就称为来话(Inbound Call);然后FreeSWITCH再去呼叫B,这路通话称为去话(Oubtound Call)。如果来、去话都是在与本地用户之间的,又称为本地来话和本地去话。 如果来、去话的发起者和目的地不是本的用户。而是以中继方式进行的,就称为中继来话或中继去话。但是,中继的叫法只是沿用传统的PSTN网络中的概念,在SIP术语中,本来是没有中继的概念的。 FreeSWITCH默认配置了internal和external以及internal-ipv6等三个Profile。其中internal主要用于本地用户的注册,它与external的区别除了使用的端口号不同外,它们之间最大的区别就是发送到internal这个Profile上的呼叫(INVITE请求)是需要鉴权的,但发送到external上的INVITE请求却不需要鉴权。这一点,用户在使用中可以慢慢体会。只要不被它们的名字所迷惑,知道所有的Profile其实都是一样的,这两个Profile只是FreeSWITCH默认提供的两个例子而已,它们之间的不同在于使用了不同的配置参数。 该模块是FreeSWITCH中最大的一个模块,也是最主要的一个模块,它的功能和配置都很多,留待我们日后慢慢讲。点击左下角的「查看原文」也可以看到更多的信息。 ---------------------------------------- 题图:Sofia 来自wikipedia Sofia是保加利亚的首都和最大城市,跟我们的mod_sofia可没有半毛钱关系啊。 ---------------------------------------- FreeSWITCH-CN是什么? FreeSWITCH-CN是FreeSWITCH中文社区,
ERROR:rest_client:resume_async_http_req: curl_multi_perform: Please call curl_multi_perform() soon
在FreeSwitch控制台中,输入上面的命令行(on为打开,off为关闭),然后用Client(比如:免费开源软电话MicroSIP)注册,此时FreeSwitch中会输出4段SIP报文,分别对应认证过程中的4个阶段,类似下面这样:
在日常开发中,我们经常会到"有状态"服务设计与"无状态"服务设计,何谓“无状态”?
A curated list of awesome FreeSWITCH resources, modules, frameworks, libraries and software. Inspired by awesome-go.
之前写过一篇《阿里云 opensips nat内网穿透》,当时是为了解决对讲机视频对讲的问题。但是之前的方案存在一个问题,那就是虽然服务器能够正常提供服务。但是在接通之后如果设备不在同一个局域网内就会导致有音频但是没有视频信息。这个问题困扰了很久,直到现在算是能够解决这个问题。出现上面这个问题的根本原因在于设备的网络层次关系太过复杂,视频信息没有办法透传。我不是语音视频方面的专家,集中nat结构我也不在叙述了,感兴趣的访问这个链接:https://www.cnblogs.com/zhumengke/articles/11204924.html
为了能够正常访问google进行搜索,之前一直用的ssh转socks代理。后来觉得如果s2主机只用来做代理,有点浪费了。于是就想了干脆反向代理一个google搜索。网上相关的文章比较多,随便搜索一下就可以找到相关的代码。基于nginx的主要配置代码如下:
最近在调研SIP代理、SIP集群和媒体集群的能力,了解到OV500这个项目,对理解Freeswitch的能力,Kamailio作为信令代理的配置等实现的学习还是很有帮助的,这个GITHUB项目地址:OV500 , 架构模型如图:
上图左边是手机上的效果,右边是pc上的效果,这tm的是同一个模型?转换模型参考的文章:https://github.com/pytorch/android-demo-app/tree/master/ObjectDetection
编者按:在本次RTSCon2022中,我们邀请到了烟台小樱桃网络科技有限公司CTO,FreeSWITCH中文社区创始人 杜金房,为大家详细分享双机、三机,到可弹性伸缩的通信集群建设经验。包含一对一通话、呼叫中心及音视频会议、日志监控等场景,包含FreeSWITCH、Kamailio、WebRTC、MCU、SFU、Docker、K8S、ETCD、NATS、Loki等相关技术。
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=10.1.1.201 --mysql-port=3320 --mysql-user=root --mysql-password='xxx@2021' --mysql-db=ww_test --tables=10 --table_size=100000 --mysql_storage_engine=Innodb --threads=2 --time=3000 --report-interval=10 --rand-type=uniform run
初雪将至,万众期待的一年一度RTSCon再次来袭,本次RTSCon 2022由RTS社区和LiveVideoStack社区联合出品。本次大会主题围绕“实时通信与价值赋能”开展,届时我们为大家准备了业内大咖主题演讲以及圆桌会议两个模块,欢迎报名参会收看。 RTS社区是以实时音视频通信为主的技术社区,RTSCon是以实时音视频通信技术交流为主的技术交流大会。LiveVideoStack社区是一个专注音视频技术的垂直社区和平台,自2017年创立以来不断探索如何更好地推动多媒体技术生态更健康的发展。 RTS的前身
Python 的迭代器语法简单,部分思想和Java8 Stream API有类似的地方(当然,Python要比Java年长),引入lambda表达式,predicate,函数式编程,行为参数化等可以做很多事情,同时和JAVA一样,对迭代行为进行了语法封装。但是本质上还是通过调用可迭代对象的迭代器来实现。
NoSQL(Not Only SQL)意即“不仅仅是SQL”,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。与之相对应的关系型数据库代表是:mysql、oracle、sql server等。
https://blog.csdn.net/qq_42800654/article/details/104159493
又到了春暖花开的季节, 等你来, 一起用技术改变旅行者的生活~ 简历投递邮箱:tech@ctrip.com 直达用人部门 邮件标题:【应聘职位】+【姓名】 1、云平台架构师,上海 岗位职责: 1. 负
Redis 的复制功能分为同步(sync)和命令传播(command propagate)这两个操作
命令传播:主服务器的数据库状态被修改,导致主从服务器的数据库状态不一致,让主从服务器数据库重新回到一致状态。
Redis中用户可以执行slaveof命令让一个服务器去复制另一个服务器,被复制的服务器称为主服务器,另一个服务器称为从服务器。例如服务器127.0.0.1:6379从服务器127.0.0.1:12345复制内容的命令如下所示:
本文转载:http://chaoyouzhuo.blog.163.com/blog/static/126376001201173092514498/
《Redis设计与实现》读书笔记(二十五) ——Redis主从复制具体过程 (原创内容,转载请注明来源,谢谢) 一、PSYNC命令执行过程 psync是新版redis复制使用的命令
好的,今天我们要上铂金段位了,如果还没经历过青铜和白银和黄金阶段的,可以先去蹭蹭经验再回来:
好的,今天我们要上【铂金二】了,如果还没有上铂金的,赶紧先去蹭蹭经验再回来(不然不带你上分了):
应用系统访问到master Redis服务器中,进行写数据的操作,当数据写入完成后,master服务器会将写入的数据复制到Slave从服务器中,进行数据的同步,当应用系统读取数据的时候,会去从服务器中读取数据。主服务器只做写数据操作,从服务器只做读数据的操作,这样减轻了各服务器的压力,提高读写效率,将读、写份离开,也就是数据的读写分离。
上一篇介绍了Redis的主从服务器之间是如何同步数据的。试想下,在一主一从或一主多从的结构下,如果主服务器挂了,整个集群就不可用了,单点问题并没有解决。Redis使用Sentinel解决该问题,保障集群的高可用。
Redis的复制功能的作用和大多数分布式存储系统一样,就是为了支持主从设计,主从设计的好处有以下几点:
#服务器#伴随众多企业用户选择互联网行业,服务器迎来空前的增长形势。选择运营稳定的服务器是企业建立网站重要一环。而关于服务器的选择同时也有很多种。像服务器托管、服务器租用、云服务器租用、高防服务器租用、服务器带宽租用等等,都是可供选择的服务器产品。
言归正传,今天要说的可是个大家伙,毕竟从现在开始,咱不整简单功能啦,整点厉害的,哈哈哈
《Redis设计与实现》读书笔记(二十七) ——Redis哨兵(sentinel)主服务器下线判断与故障转移 (原创内容,转载请注明来源,谢谢) 一、主观下线检测 默认情况下,sentinel会每秒
在当今数字化时代,服务器是构建和支持各种应用和服务的基础设施之一。随着技术的发展和需求的增加,出现了不同类型的服务器,其中最常见的是云服务器和专用服务器。本文将详细介绍云服务器和专用服务器之间的区别,以帮助您更好地了解并选择适合您需求的服务器类型。
随着AI技术不断成熟,人工智能正凭借着"惊人的创新"给各行各业带来颠覆性的价值提升。2018年Gartner发布了一份AI研究报告预估,到2022年,人工智能这一领域的商业价值将达到3.9万亿美元。
1、从库向主库发送sync命令,也就是从库向主库发送同步请求; 2、当主库接受到sync命令后,会执行bgsave命令(保存此刻主库的一个快照),创建一个RDB文件,创建RDB文件期间主库上的执行过的命令都会被保存到缓冲区中; 3、当主库执行完bgsave时,会向从库发送RDB文件,从库接受该文件并加载该文件,将自己的数据库状态更新至主服务器执行BGSAVE命令时的数据库状态; 4、主库将缓冲区的所有写命令发给从库执行; 5、至此可以认为redis主从建立成功,之后主库的每一个写命令都会传到从库上执行。 复制原理说明: master创建RDB文件是通过一个子进程进行的,所以master依然可以处理客户端发来的请求。但这也导致了在保存RDB文件期间,“键空间”可能发生变化(譬如接收到一个客户端请求,执行”set name diaocow”命令),因此为了保证数据同步的一致性,master会在保存RDB文件期间,把接受到的这些可能变更数据库“键空间”的命令保存到缓冲区中。
技术是为了解决问题而生的,Redis 的 Sentinel 系统实现了 Redis 主从服务器的自动切换。
复制功能是Redis提供的多机功能中最基础的一个,这个功能是通过主从复制(master-slave replication)模式实现的,它允许用户为存储着目标数据库的服务器创建出多个拥有相同数据库副本的服务器,其中存储目标数据库的服务器被称为主服务器(master server),而存储数据库副本的服务器则被称为从服务器(slave server,或者称为replica)
#服务器##托管##大数据##崩#目前,很多企业建立网站也需要服务器来进行支撑。那么建立网站,是选择服务器托管好,还是服务器租用更好一些呢?接下来我们将进行一下系统的分析。
大部分程序员见到的服务器也就是云服务器,知名的那几家公司:阿里云、腾讯云…都是著名的云服务器提供厂商。在学校写个网站啥的,学生就可以优惠买买买。不过今天我们介绍的是服务器而非云服务器。在学校的时候,老师会说:“你们用的电脑也是服务器”。是的,那么现在我们来讨论,PC服务器和服务器的区别:
面试官:要不你来讲讲你最近在看的点呗?可以拉出来一起讨论下(今天我也不知道要问什么)
WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了:
正向代理和反向代理都是常见的代理服务器,它们在网络中起着不同的作用。在介绍正向代理之前,我们先来了解一下代理服务器。
领取专属 10元无门槛券
手把手带您无忧上云