Nginx‑RTMP动态更新DNS缓存的方法和装置制造方法及图纸

技术编号:16822542 阅读:42 留言:0更新日期:2017-12-16 17:21
本发明专利技术提供了一种Nginx‑RTMP动态更新DNS缓存的方法和装置,该方法包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取当前时间戳与绝对时间戳的时间间隔,并将时间间隔与预先设置的超时时间间隔进行对比;S3,若时间间隔大于超时时间间隔,则根据预先记录的后端服务对应的URL,对DNS缓存进行更新,并将当前时间戳存储为绝对时间戳。本发明专利技术通过在Nginx‑RTMP中添加DNS缓存,判断时间戳是否过期,来决定是否进行DNS更新,实现了对后端服务调度更改IP的情况能较快地做出响应,及时地自动地切换后端服务的IP。

Method and device for Nginx RTMP dynamic update the DNS cache

The present invention provides a method and a device for Nginx RTMP dynamic update the DNS cache, the method includes: S1, DNS in the cache tag set in advance for the open state, to obtain the current timestamp and absolute time record set in advance before an update the DNS cache when S2 gets the current time stamp; stamp and the absolute timestamp interval and time interval compared with the timeout interval preset; S3, if the time interval is greater than the timeout interval, according to the corresponding backend service pre recorded URL, DNS cache is updated and the current timestamp stored as absolute timestamp. The present invention by adding DNS Nginx cache in RTMP, to determine whether the timestamp expired, to decide whether to update the DNS, the realization of the IP backend service scheduling changes can quickly respond in a timely manner, automatically switched back end service IP.

【技术实现步骤摘要】
Nginx-RTMP动态更新DNS缓存的方法和装置
本专利技术涉及计算机
,具体涉及一种Nginx-RTMP动态更新DNS缓存的方法和装置。
技术介绍
随着网络通信技术的发展和宽带网速的提升,网络直播技术也不断发展,并得到了越来越多的关注。现有技术中通常利用Nginx-RTMP平台搭建直播环境。Nginx(enginex)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器;Nginx作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP代理服务器对外进行服务。RTMP是RealTimeMessagingProtocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括AdobeMediaServer/UltrantMediaServer/red5等。在直播过程中,直播流CDN拉流转发到前端展示的过程中,获取后端服务器IP很重要。现有技术中,Nginx-RTMP平台获取后端服务器IP的方法通常包括以下步骤:重新加载配置文件;解析配置文件中的URL;调用系统api获取对应的后端服务器IP;在下次加载文件前都使用该获取的后端服务器IP。因此,现有技术至少存在以下技术缺陷:需要人工手动重新加载配置文件才能获取后端服务器IP;而如果后端服务器对域名对应的IP进行了更新,而如果CDN结果更新不及时,会导致流量切换不及时,严重情况下可能导致直播服务无法使用。
技术实现思路
针对现有技术中存在的上述缺陷,本专利技术提供一种Nginx-RTMP动态更新DNS缓存的方法和装置。本专利技术的一方面提供一种Nginx-RTMP动态更新DNS缓存的方法,包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;S3,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。其中,所述步骤S1前还包括:在配置文件中设置所述DNS缓存标记以及所述超时时间间隔;对所述配置文件进行解析,获取所述DNS缓存标记以及所述超时时间间隔,并将所述DNS缓存标记和所述超时时间间隔添加至target结构中;获取所述配置文件中所述后端服务对应的URL,并将所述URL存储至所述target结构中;对所述URL进行解析,获取与所述URL对应的IP;将进行解析时的时间戳记录为所述绝对时间戳并将所述绝对时间戳存储至所述target结构中。其中,所述S3中根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新的步骤进一步包括:获取所述后端服务对应的URL的类型;若所述URL的类型为DomainSocket类型,则对所述URL进行解析,获取所述DomainSocket的路径,设置与所述DomainSocket类型对应的协议族,获取地址个数。其中,所述获取所述后端服务对应的URL的类型的步骤后还包括:若所述URL的类型为IPPort类型,则对IPPort字符串进行解析,确认IP字符串合法后,将所述IP字符串填入target结构中,并设置与所述IPPort类型对应的协议族;否则,获取IP列表;根据所述IP列表中IP的类型,设置相应的协议族,并将所述IP列表存储至所述target结构;其中,所述IP的类型包括IPv4或IPv6。其中,所述获取所述后端服务对应的URL的类型的步骤前还包括:若target结构中存在前一次更新的DNS缓存,则对所述前一次更新的DNS缓存进行清理操作,并释放资源;创建资源池并进行初始化操作。其中,所述确认IP字符串合法后,将所述IP字符串填入target结构中的步骤后还包括:若所述IPPort字符串中没有Port,则在所述target结构中填入defaultPort(80)。其中,所述获取IP列表的步骤进一步包括:通过调用系统函数getaddrinfo获取所述IP列表。本专利技术的另一方面提供一种Nginx-RTMP动态更新DNS缓存的装置,包括:获取模块,用于在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;对比模块,用于获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;更新模块,用于,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。本专利技术的又一方面提供一种Nginx-RTMP动态更新DNS缓存的设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本专利技术上述方面提供的Nginx-RTMP动态更新DNS缓存的方法,例如包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;S3,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。本专利技术的又一方面提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本专利技术上述方面提供的Nginx-RTMP动态更新DNS缓存的方法,例如包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;S3,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。本专利技术提供的Nginx-RTMP动态更新DNS缓存的方法和装置,通过在Nginx-RTMP中添加DNS缓存,解析并记录时间戳,判断时间戳是否过期,来决定是否进行DNS更新,实现了无需人为干预重载配置文件,对后端服务调度更改IP的情况能较快地做出响应,及时地自动地切换后端服务的IP。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的Nginx-RTMP动态更新DNS缓存的方法的流程示意图;图2为本专利技术实施例提供的N本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/62/201710758639.html" title="Nginx‑RTMP动态更新DNS缓存的方法和装置原文来自X技术">Nginx‑RTMP动态更新DNS缓存的方法和装置</a>

【技术保护点】
一种Nginx‑RTMP动态更新DNS缓存的方法,其特征在于,包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;S3,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。

【技术特征摘要】
1.一种Nginx-RTMP动态更新DNS缓存的方法,其特征在于,包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;S3,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。2.根据权利要求1所述的方法,其特征在于,所述步骤S1前还包括:在配置文件中设置所述DNS缓存标记以及所述超时时间间隔;对所述配置文件进行解析,获取所述DNS缓存标记以及所述超时时间间隔,并将所述DNS缓存标记和所述超时时间间隔添加至target结构中;获取所述配置文件中所述后端服务对应的URL,并将所述URL存储至所述target结构中;对所述URL进行解析,获取与所述URL对应的IP;将进行解析时的时间戳记录为所述绝对时间戳并将所述绝对时间戳存储至所述target结构中。3.根据权利要求1所述的方法,其特征在于,所述S3中根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新的步骤进一步包括:获取所述后端服务对应的URL的类型;若所述URL的类型为DomainSocket类型,则对所述URL进行解析,获取所述DomainSocket的路径,设置与所述DomainSocket类型对应的协议族,获取地址个数。4.根据权利要求3所述的方法,其特征在于,所述获取所述后端服务对应的URL的类型的步骤后还包括:若所述URL的类型为IPPort类型,则对IPPort字符串进行解析,确认IP字符串合法后,将所述IP字符串填入target结构中,并设置与所述IPPort类型对应的协议族;否则,获取IP列表;根据所述IP列表...

【专利技术属性】
技术研发人员:何绍富张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1