CN107483604A - Nginx‑RTMP动态更新DNS缓存的方法和装置 - Google Patents
Nginx‑RTMP动态更新DNS缓存的方法和装置 Download PDFInfo
- Publication number
- CN107483604A CN107483604A CN201710758639.XA CN201710758639A CN107483604A CN 107483604 A CN107483604 A CN 107483604A CN 201710758639 A CN201710758639 A CN 201710758639A CN 107483604 A CN107483604 A CN 107483604A
- Authority
- CN
- China
- Prior art keywords
- dns cache
- url
- nginx
- timestamp
- rtmp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种Nginx‑RTMP动态更新DNS缓存的方法和装置,该方法包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取当前时间戳与绝对时间戳的时间间隔,并将时间间隔与预先设置的超时时间间隔进行对比;S3,若时间间隔大于超时时间间隔,则根据预先记录的后端服务对应的URL,对DNS缓存进行更新,并将当前时间戳存储为绝对时间戳。本发明通过在Nginx‑RTMP中添加DNS缓存,判断时间戳是否过期,来决定是否进行DNS更新,实现了对后端服务调度更改IP的情况能较快地做出响应,及时地自动地切换后端服务的IP。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种Nginx-RTMP动态更新DNS缓存的方法和装置。
背景技术
随着网络通信技术的发展和宽带网速的提升,网络直播技术也不断发展,并得到了越来越多的关注。现有技术中通常利用Nginx-RTMP平台搭建直播环境。
Nginx(engine x)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器;Nginx作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP代理服务器对外进行服务。
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe MediaServer/Ultrant Media Server/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的类型为Domain Socket类型,则对所述URL进行解析,获取所述Domain Socket的路径,设置与所述Domain Socket类型对应的协议族,获取地址个数。
其中,所述获取所述后端服务对应的URL的类型的步骤后还包括:若所述URL的类型为IP Port类型,则对IP Port字符串进行解析,确认IP字符串合法后,将所述IP字符串填入target结构中,并设置与所述IP Port类型对应的协议族;否则,获取IP列表;根据所述IP列表中IP的类型,设置相应的协议族,并将所述IP列表存储至所述target结构;其中,所述IP的类型包括IPv4或IPv6。
其中,所述获取所述后端服务对应的URL的类型的步骤前还包括:若target结构中存在前一次更新的DNS缓存,则对所述前一次更新的DNS缓存进行清理操作,并释放资源;创建资源池并进行初始化操作。
其中,所述确认IP字符串合法后,将所述IP字符串填入target结构中的步骤后还包括:若所述IP Port字符串中没有Port,则在所述target结构中填入default Port(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为本发明实施例提供的Nginx-RTMP动态更新DNS缓存的装置的结构示意图;
图3为本发明实施例提供的Nginx-RTMP动态更新DNS缓存的设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的Nginx-RTMP动态更新DNS缓存的方法的流程示意图,如图1所示,包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;S3,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。
其中,DNS缓存是指当电脑把一个域名解析完后,就把这个域名和那个主机的IP地址联系起来(也就是域名和IP对应起来),然后把这个对应关系存入DNS缓存;这样,如果下次再输入网址的时候,电脑通过查找DNS缓存,就可以直接知道IP地址了,而不用再进行域名解析了,这就提高了效率;而DNS缓存的更新则是对域名和IP的对应关系进行改变,主机的IP地址变更后,将新的IP地址与域名进行关联。
其中,DNS缓存标记为预先设置的标记,该标记反映Nginx-RTMP平台是否开启了本发明实施例提供的动态更新DNS缓存的方法;例如设置dnscache=on,表示DNS缓存标记为开启状态;dnscache=off,表示DNS缓存标记为关闭状态。
其中,绝对时间戳是一个动态变量;每次对DNS缓存进行更新时,都会获取Nginx服务器当时的时间戳,然后将该时间戳记录在绝对时间戳中;在下次进行DNS缓存更新时,通过绝对时间戳能够获取上一次更新DNS缓存的时间戳。
其中,超时时间间隔是预先设定的一个时长,Nginx服务器根据该超时时间间隔判断是否需要进行DNS动态更新;例如超时时间间隔可以设置为dnsTimeout=20;由于频繁地进行DNS缓存更新或解析可能会影响服务器的性能,因此需要合理设置超时时间间隔。
其中,URL(统一资源定位符)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址;互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
在步骤S1中,当用户建立连接后,Nginx-RTMP平台向后端服务发起RTMP请求;首先通过解析Nginx服务器的配置文件获取DNS缓存标记;然后判断DNS缓存标记是否为开启状态,如果不是开启状态,则直接退出DNS缓存动态更新的逻辑;如果DNS缓存标记为开启状态,则进一步获取Nginx服务器的当前时间戳以及预设的绝对时间戳,绝对时间戳中存储了前一次进行DNS缓存动态更新的时间戳。
在步骤S2中,根据步骤S1获取的当前时间戳和绝对时间戳,获取上述两个时间戳之间的时间间隔;再解析配置文件获取超时时间间隔;将时间间隔与超时时间间隔进行对比,判断二者之间的大小关系。
在步骤S3中,根据步骤S2中的对比结果,如果时间间隔小于超时时间间隔,则不作处理,直接退出DNS缓存动态更新的逻辑,直接采用之前获取的DNS缓存进行RTMP访问;如果时间间隔大于超时时间间隔,则表明与前一次进行DNS缓存更新相距时间较长,后端服务对应的IP可能会发生改变,因此应当根据配置文件中记录的后端服务对应的URL,对DNS缓存进行更新;更新后,将当前时间戳作为绝对时间戳进行存储,以用作下一次的超时判断。
本发明实施例提供的Nginx-RTMP动态更新DNS缓存的方法,通过在Nginx-RTMP中添加DNS缓存,解析并记录时间戳,判断时间戳是否过期,来决定是否进行DNS更新,实现了无需人为干预重载配置文件,对后端服务调度更改IP的情况能较快地做出响应,及时地自动地切换后端服务的IP。
在上述任一实施例的基础上,所述步骤S1前还包括:在配置文件中设置所述DNS缓存标记以及所述超时时间间隔;对所述配置文件进行解析,获取所述DNS缓存标记以及所述超时时间间隔,并将所述DNS缓存标记和所述超时时间间隔添加至target结构中;获取所述配置文件中所述后端服务对应的URL,并将所述URL存储至所述target结构中;对所述URL进行解析,获取与所述URL对应的IP;将进行解析时的时间戳记录为所述绝对时间戳并将所述绝对时间戳存储至所述target结构中
其中,target结构用于Nginx服务器中存储对配置文件进行解析后得到的结果。
其中,解析URL的过程具体为:先解析字符串,获取host和Port;然后调用系统函数去访问DNS缓存。
具体地,当Nginx-RTMP平台启动时,可以对配置文件进行解析;具体包括:首先在配置文件中添加DNS缓存标记(dnscache=on)和超时时间间隔(Timeout=20);然后通过对配置文件的解析,将DNS缓存标记和超时时间间隔添加至target结构中进行存储;从配置文件中获取后端服务(拉流服务host)对应的URL,并将该URL记录在target结构中;对URL进行解析,能够获取后端服务对应的IP,并可以在target结构中定义一个绝对时间戳的变量,将进行解析时获取的时间戳存储至绝对时间戳,用于下次进行解析时与超时时间间隔进行对比。
通过上述Nginx-RTMP的启动步骤,能够获取到开启动态更新DNS缓存的条件以及有效时间,来等待用户请求消息到来触发DNS缓存请求策略。
在上述任一实施例的基础上,所述S3中根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新的步骤进一步包括:获取所述后端服务对应的URL的类型;若所述URL的类型为Domain Socket类型,则对所述URL进行解析,获取所述Domain Socket的路径,设置与所述Domain Socket类型对应的协议族,获取地址个数。
其中,Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程;Domain Socket与网络socket编程最明显的不同在于地址格式不同,用结构体sockaddr_un表示,网络编程的socket地址是IP地址加端口号,而Domain Socket的地址是一个socket类型的文件在文件系统中的路径。
具体地,对DNS缓存进行更新的过程中应当判断target结构中后端服务对应的URL的类型,该URL通过配置文件获取;应当说明的是,不同的URL类型应当对应不同的处理流程;如果该URL的类型为Domain Socket,则表明为本地交互,Domain Socket地址为本地的pipe文件,通过该pipe文件可以进行后端服务的访问。
具体地,如果URL的类型为Domain Socket类型,则获取Domain Socket的路径,设置协议族,获取地址个数。退出逻辑,可以进行后端服务的访问。
在上述任一实施例的基础上,所述获取所述后端服务对应的URL的类型的步骤后还包括:若所述URL的类型为IP Port类型,则对IP Port字符串进行解析,确认IP字符串合法后,将所述IP字符串填入target结构中,并设置与所述IP Port类型对应的协议族;否则,获取IP列表;根据所述IP列表中IP的类型,设置相应的协议族,并将所述IP列表存储至所述target结构;其中,所述IP的类型包括IPv4或IPv6。
具体地,如果URL的类型不是Domain Socket,则可以判断URL为普通的host+Port类型。可以对host+Port类型进行进一步判断。
如果URL为IP Port类型,则首先解析IP Port字符串,检查该字符串是否合法,不合法则退出,合法则填入target结构中,设置相应的协议族等参数。
如果URL为普通的host+Port类型,但不为IP Port类型;则获取IP列表(如果没有获取正常的结果则直接退出逻辑),如果得到IP列表则先判断IP的类型(IPv4或IPv6),然后设置相应的协议族,将IP列表存入target结构中。
在上述任一实施例的基础上,所述获取所述后端服务对应的URL的类型的步骤前还包括:若target结构中存在前一次更新的DNS缓存,则对所述前一次更新的DNS缓存进行清理操作,并释放资源;创建资源池并进行初始化操作。
具体地,在判断URL的类型前,应当对前一次更新的DNS缓存进行清理。即判断target结构中是否存在历史DNS缓存,如果有则需要清理之前的DNS缓存,并释放资源。
释放资源后,由于Nginx服务器中不提倡单独的malloc和free(malloc和free是申请内存空间与释放内存空间的函数),提倡make pool(创建资源池),以及清理pool。因此,需要创建资源池,并进行相关的初始化操作。
在上述任一实施例的基础上,所述确认IP字符串合法后,将所述IP字符串填入target结构中的步骤后还包括:若所述IP Port字符串中没有Port,则在所述target结构中填入default Port(80)。
具体地,如果字符串中没有Port(端口),那么需要设定默认端口,即在target结构中设定default Port(80)。
在上述任一实施例的基础上,所述获取IP列表的步骤进一步包括:通过调用系统函数getaddrinfo获取所述IP列表。
其中,getaddrinfo()函数能够处理名字到地址以及服务到端口这两种转换,通过该函数能够获取IP列表。
综上所述,本发明实施例提供的方法主要是在Nginx-RTMP平台中添加DNS缓存,Nginx启动服务加载配置文件时记录对应拉流服务host,解析并记录解析时间戳,用户请求来时判断时间戳是否过期,来判断是否更新解析结果(频繁的解析有性能问题所以有个超时时间),超时则通过记录的host动态更新DNS缓存,没超时则用当前的服务IP。
以下举例对上述本发明实施例提供的Nginx-RTMP动态更新DNS缓存的方法进行说明:
步骤1,Nginx-RTMP平台启动处理
解析配置文件:
配置文件添加dnscache=on(DNS缓存标记)和dnsTimeout=20(超时时间间隔);解析配置文件,将DNS缓存标记和超时时间间隔添加到target结构中;在target结构中添加DNS获取IP的绝对时间戳变量;从配置文件中获取URL后,解析该URL,并且设置DNS得到IP的时间为Nginx的当前时间戳;
通过上述Nginx-RTMP启动步骤,获取到开启动态DNS条件以及有效时间;等待用户请求消息到来触发DNS请求策略,策略逻辑实现在建立后端连接逻辑中,过程如下:
步骤2,用户建立连接后Nginx-RTMP向后端发起的RTMP请求逻辑
步骤2.1,判断是否开启DNS缓存
判断target结构中DNS缓存标记(解析配置文件得到)是否为打开状态;如果打开则到步骤2.1,如果没打开直接退出,不做DNS请求逻辑;
步骤2.2,判断DNS记录是否超时
获取当前Nginx时间戳,并减去target中存储的上次解析的时间戳,得到的值与target中dnsTimeout对比(解析配置文件获取),如果前者比后者小,直接退出流程,拿取之前获取的DNS缓存进行RTMP访问,否则进入步骤2.3;
步骤2.3,清理前一次DNS缓存
判断target中是否有之前的DNS缓存,如果有则清理掉之前的DNS缓存,并释放资源;
步骤2.4,创建资源池
由于Nginx中不提倡单独的malloc和free,提倡make pool,以及清理pool;因此,创建资源池,并进行相关的初始化;
步骤2.5,判断host类型
判断target中URL(配置文件中获取)类型;若为domain socket类型则到步骤2.6;普通host+port类型进入步骤2.7;
步骤2.6,Domain Socket解析
解析URL,获取Domain Socket路径,设置协议族,得到的地址个数;退出处理逻辑;
步骤2.7,获取常规IP列表
步骤2.7.1,判断URL类型,
若为IP+Port(IP Port)类型则到步骤2.7.2;否则到步骤2.7.3;
步骤2.7.2,解析IP+Port字符串
解析字符串,检查IP串是否合法,不合法直接退出,合法填入target中;判断字符串中是否有Port,如果没有,则填入default port(80),设置协议族等参数,退出解析逻辑;
步骤2.7.3,通过host DNS请求获取IP列表
调用系统函数getaddrinfo()获取得到IP list(如果没有获取正常的结果则直接退出逻辑);如果得到IP列表,则先判断IP类型(IPv4或IPv6),然后设置协议族,将IP列表存入target中;
步骤2.8,更新DNS获取IP绝对时间戳
设置target存入的DNS获取IP的绝对时间戳为Nginx的当前时间戳;用作下一次步骤2.1中的判断;
步骤2.9,访问对应服务
利用当前target中存储的IP进行节点服务访问。
图2为本发明实施例提供的Nginx-RTMP动态更新DNS缓存的装置的结构示意图,如图2所示,包括:获取模块201,用于在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;对比模块202,用于获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;更新模块203,用于,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。
其中,当用户建立连接后,Nginx-RTMP平台向后端服务发起RTMP请求;获取模块201首先通过解析Nginx服务器的配置文件获取DNS缓存标记;然后获取模块201判断DNS缓存标记是否为开启状态,如果不是开启状态,则直接退出DNS缓存动态更新的逻辑;如果DNS缓存标记为开启状态,则获取模块201进一步获取Nginx服务器的当前时间戳以及预设的绝对时间戳,绝对时间戳中存储了前一次进行DNS缓存动态更新的时间戳。
其中,对比模块202根据获取模块201获取的当前时间戳和绝对时间戳,获取上述两个时间戳之间的时间间隔;对比模块202再解析配置文件获取超时时间间隔;对比模块202将时间间隔与超时时间间隔进行对比,判断二者之间的大小关系。
其中,更新模块203根据对比模块202中的对比结果,如果时间间隔小于超时时间间隔,则更新模块203不作处理,直接退出DNS缓存动态更新的逻辑,直接采用之前获取的DNS缓存进行RTMP访问;如果时间间隔大于超时时间间隔,则表明与前一次进行DNS缓存更新相距时间较长,后端服务对应的IP可能会发生改变,因此更新模块203应当根据配置文件中记录的后端服务对应的URL,对DNS缓存进行更新;更新后,更新模块203将当前时间戳作为绝对时间戳进行存储,以用作下一次的超时判断。
本发明实施例提供的Nginx-RTMP动态更新DNS缓存的装置,通过在Nginx-RTMP中添加DNS缓存,解析并记录时间戳,判断时间戳是否过期,来决定是否进行DNS更新,实现了无需人为干预重载配置文件,对后端服务调度更改IP的情况能较快地做出响应,及时地自动地切换后端服务的IP。
在上述任一实施例的基础上,所述装置还包括:预处理模块,用于在配置文件中设置所述DNS缓存标记以及所述超时时间间隔;对所述配置文件进行解析,获取所述DNS缓存标记以及所述超时时间间隔,并将所述DNS缓存标记和所述超时时间间隔添加至target结构中;获取所述配置文件中所述后端服务对应的URL,并将所述URL存储至所述target结构中;对所述URL进行解析,获取与所述URL对应的IP;将进行解析时的时间戳记录为所述绝对时间戳并将所述绝对时间戳存储至所述target结构中。
在上述任一实施例的基础上,所述更新模块203进一步包括:获取单元,用于获取所述后端服务对应的URL的类型;第一解析单元,用于若所述URL的类型为Domain Socket类型,则对所述URL进行解析,获取所述Domain Socket的路径,设置与所述Domain Socket类型对应的协议族,获取地址个数。
在上述任一实施例的基础上,所述更新模块203还包括:第二解析单元,用于若所述URL的类型为IP Port类型,则对IP Port字符串进行解析,确认IP字符串合法后,将所述IP字符串填入target结构中,并设置与所述IP Port类型对应的协议族;第三解析单元,用于获取IP列表;根据所述IP列表中IP的类型,设置相应的协议族,并将所述IP列表存储至所述target结构;其中,所述IP的类型包括IPv4或IPv6。
在上述任一实施例的基础上,所述更新模块203还包括:清理单元,用于若target结构中存在前一次更新的DNS缓存,则对所述前一次更新的DNS缓存进行清理操作,并释放资源;创建单元,用于创建资源池并进行初始化操作。
在上述任一实施例的基础上,所述第二解析单元还包括:接口子单元,用于若所述IP Port字符串中没有Port,则在所述target结构中填入default Port(80)。
在上述任一实施例的基础上,所述第三解析单元进一步用于:通过调用系统函数getaddrinfo获取所述IP列表。
图3为本发明实施例提供的Nginx-RTMP动态更新DNS缓存的设备的结构示意图,如图3所示,该设备包括:至少一个处理器301;以及与所述处理器301通信连接的至少一个存储器302,其中:所述存储器302存储有可被所述处理器301执行的程序指令,所述处理器301调用所述程序指令能够执行上述各实施例所提供的Nginx-RTMP动态更新DNS缓存的方法,例如包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;S3,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。
本发明实施例还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行对应实施例所提供的Nginx-RTMP动态更新DNS缓存的方法,例如包括:S1,在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;S2,获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;S3,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。
以上所描述的Nginx-RTMP动态更新DNS缓存的设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
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的类型为Domain Socket类型,则对所述URL进行解析,获取所述DomainSocket的路径,设置与所述Domain Socket类型对应的协议族,获取地址个数。
4.根据权利要求3所述的方法,其特征在于,所述获取所述后端服务对应的URL的类型的步骤后还包括:
若所述URL的类型为IP Port类型,则对IP Port字符串进行解析,确认IP字符串合法后,将所述IP字符串填入target结构中,并设置与所述IP Port类型对应的协议族;否则,
获取IP列表;根据所述IP列表中IP的类型,设置相应的协议族,并将所述IP列表存储至所述target结构;其中,所述IP的类型包括IPv4或IPv6。
5.根据权利要求3所述的方法,其特征在于,所述获取所述后端服务对应的URL的类型的步骤前还包括:
若target结构中存在前一次更新的DNS缓存,则对所述前一次更新的DNS缓存进行清理操作,并释放资源;
创建资源池并进行初始化操作。
6.根据权利要求4所述的方法,其特征在于,所述确认IP字符串合法后,将所述IP字符串填入target结构中的步骤后还包括:
若所述IP Port字符串中没有Port,则在所述target结构中填入default Port(80)。
7.根据权利要求4所述的方法,其特征在于,所述获取IP列表的步骤进一步包括:
通过调用系统函数getaddrinfo获取所述IP列表。
8.一种Nginx-RTMP动态更新DNS缓存的装置,其特征在于,包括:
获取模块,用于在预先设置的DNS缓存标记为开启状态后,获取当前时间戳以及预先设置的前一次更新DNS缓存时记录的绝对时间戳;
对比模块,用于获取所述当前时间戳与所述绝对时间戳的时间间隔,并将所述时间间隔与预先设置的超时时间间隔进行对比;
更新模块,用于,若所述时间间隔大于所述超时时间间隔,则根据预先记录的后端服务对应的URL,对所述DNS缓存进行更新,并将所述当前时间戳记录为所述绝对时间戳。
9.一种Nginx-RTMP动态更新DNS缓存的设备,其特征在于,包括:
至少一个处理器;
以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710758639.XA CN107483604B (zh) | 2017-08-29 | 2017-08-29 | Nginx-RTMP动态更新DNS缓存的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710758639.XA CN107483604B (zh) | 2017-08-29 | 2017-08-29 | Nginx-RTMP动态更新DNS缓存的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107483604A true CN107483604A (zh) | 2017-12-15 |
CN107483604B CN107483604B (zh) | 2020-12-15 |
Family
ID=60603187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710758639.XA Active CN107483604B (zh) | 2017-08-29 | 2017-08-29 | Nginx-RTMP动态更新DNS缓存的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107483604B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111885212A (zh) * | 2020-06-03 | 2020-11-03 | 山东伏羲智库互联网研究院 | 域名存储方法及装置 |
US10951575B1 (en) | 2019-11-13 | 2021-03-16 | Sprint Communications Company L.P. | Domain name system (DNS) translations for co-located Gateway User Planes in wireless communication networks |
CN112866285A (zh) * | 2021-02-24 | 2021-05-28 | 深圳壹账通智能科技有限公司 | 网关拦截方法、装置、电子设备及存储介质 |
US11146528B2 (en) | 2019-11-13 | 2021-10-12 | Sprint Communications Company L.P. | Wireless communication service delivery over co-located gateway user planes |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117309A (zh) * | 2010-01-06 | 2011-07-06 | 卓望数码技术(深圳)有限公司 | 一种数据缓存系统和数据查询方法 |
WO2012155839A1 (en) * | 2011-05-16 | 2012-11-22 | Huawei Technologies Co., Ltd. | System, apparatus, and method for distributed home agents in a mobile ip environment |
CN103152367A (zh) * | 2011-12-06 | 2013-06-12 | 盛乐信息技术(上海)有限公司 | 一种缓存的动态维护更新方法及系统 |
CN103257973A (zh) * | 2012-02-20 | 2013-08-21 | 腾讯科技(深圳)有限公司 | 浏览器缓存更新方法和系统 |
US20140207818A1 (en) * | 2013-01-22 | 2014-07-24 | Go Daddy Operating Company, LLC | Configuring an origin server content delivery using a pulled data list |
US20140304394A1 (en) * | 2013-04-09 | 2014-10-09 | Cisco Technology, Inc. | Timeout for identifying network device presence |
CN105376075A (zh) * | 2015-10-13 | 2016-03-02 | 贵阳朗玛信息技术股份有限公司 | 基于web的聊天室语音直播系统及语音直播方法 |
CN105657443A (zh) * | 2015-12-30 | 2016-06-08 | 深圳市云宙多媒体技术有限公司 | 一种直播时移播放方法和系统 |
CN105868234A (zh) * | 2015-12-07 | 2016-08-17 | 乐视云计算有限公司 | 缓存数据的更新方法及装置 |
CN106331216A (zh) * | 2016-09-13 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 域名的解析方法和装置 |
CN106598762A (zh) * | 2016-12-29 | 2017-04-26 | 上海理想信息产业(集团)有限公司 | 一种消息同步方法及系统 |
CN106790469A (zh) * | 2016-12-09 | 2017-05-31 | 中国联合网络通信集团有限公司 | 一种缓存控制方法、装置和系统 |
CN106789422A (zh) * | 2016-12-16 | 2017-05-31 | 杭州迪普科技股份有限公司 | 一种dns服务器的监测方法及装置 |
CN106790762A (zh) * | 2017-01-11 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 域名解析方法和装置 |
-
2017
- 2017-08-29 CN CN201710758639.XA patent/CN107483604B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117309A (zh) * | 2010-01-06 | 2011-07-06 | 卓望数码技术(深圳)有限公司 | 一种数据缓存系统和数据查询方法 |
WO2012155839A1 (en) * | 2011-05-16 | 2012-11-22 | Huawei Technologies Co., Ltd. | System, apparatus, and method for distributed home agents in a mobile ip environment |
CN103152367A (zh) * | 2011-12-06 | 2013-06-12 | 盛乐信息技术(上海)有限公司 | 一种缓存的动态维护更新方法及系统 |
CN103257973A (zh) * | 2012-02-20 | 2013-08-21 | 腾讯科技(深圳)有限公司 | 浏览器缓存更新方法和系统 |
US20140207818A1 (en) * | 2013-01-22 | 2014-07-24 | Go Daddy Operating Company, LLC | Configuring an origin server content delivery using a pulled data list |
US20140304394A1 (en) * | 2013-04-09 | 2014-10-09 | Cisco Technology, Inc. | Timeout for identifying network device presence |
CN105376075A (zh) * | 2015-10-13 | 2016-03-02 | 贵阳朗玛信息技术股份有限公司 | 基于web的聊天室语音直播系统及语音直播方法 |
CN105868234A (zh) * | 2015-12-07 | 2016-08-17 | 乐视云计算有限公司 | 缓存数据的更新方法及装置 |
CN105657443A (zh) * | 2015-12-30 | 2016-06-08 | 深圳市云宙多媒体技术有限公司 | 一种直播时移播放方法和系统 |
CN106331216A (zh) * | 2016-09-13 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 域名的解析方法和装置 |
CN106790469A (zh) * | 2016-12-09 | 2017-05-31 | 中国联合网络通信集团有限公司 | 一种缓存控制方法、装置和系统 |
CN106789422A (zh) * | 2016-12-16 | 2017-05-31 | 杭州迪普科技股份有限公司 | 一种dns服务器的监测方法及装置 |
CN106598762A (zh) * | 2016-12-29 | 2017-04-26 | 上海理想信息产业(集团)有限公司 | 一种消息同步方法及系统 |
CN106790762A (zh) * | 2017-01-11 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 域名解析方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10951575B1 (en) | 2019-11-13 | 2021-03-16 | Sprint Communications Company L.P. | Domain name system (DNS) translations for co-located Gateway User Planes in wireless communication networks |
US11146528B2 (en) | 2019-11-13 | 2021-10-12 | Sprint Communications Company L.P. | Wireless communication service delivery over co-located gateway user planes |
US11729136B2 (en) | 2019-11-13 | 2023-08-15 | T-Mobile Innovations Llc | Domain name system (DNS) translations for co-located gateway user planes in wireless communication networks |
US11784965B2 (en) | 2019-11-13 | 2023-10-10 | T-Mobile Innovations Llc | Wireless communication service delivery over co-located gateway user planes |
CN111885212A (zh) * | 2020-06-03 | 2020-11-03 | 山东伏羲智库互联网研究院 | 域名存储方法及装置 |
CN112866285A (zh) * | 2021-02-24 | 2021-05-28 | 深圳壹账通智能科技有限公司 | 网关拦截方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107483604B (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107483604A (zh) | Nginx‑RTMP动态更新DNS缓存的方法和装置 | |
US10594600B2 (en) | System and method for customizing the identification of application or content type | |
CN105471869B (zh) | 一种互联网电视内容请求的连接复用方法及系统 | |
CN1237769C (zh) | 可设定策略的端到端对话中继控制方法 | |
CN113489772B (zh) | 网络请求处理方法及装置、电子设备 | |
US8966121B2 (en) | Client-side management of domain name information | |
US9912555B2 (en) | System and method of updating modules for application or content identification | |
US8620999B1 (en) | Network resource modification for higher network connection concurrence | |
US20120210243A1 (en) | Web co-navigation | |
JP2020113924A (ja) | モニタリングプログラム,プログラマブルデバイス及びモニタリング方法 | |
WO2017066359A1 (en) | Determining direction of network sessions | |
WO2021082081A1 (zh) | 动态修改Nginx配置参数的方法、系统、装置及存储介质 | |
CN104468554A (zh) | 基于ip和host的攻击检测方法和装置 | |
CN105577777A (zh) | 一种消息处理方法、装置及系统 | |
CN102165741A (zh) | 在ipv6网络中用于封锁和搜索主机的方法 | |
CN103761123B (zh) | 功能启动方法、装置及终端 | |
US20170180565A1 (en) | Methods, systems, and computer readable media for using user defined session description protocol (sdp) rules | |
CN108965912A (zh) | 一种视频数据处理的方法、客户端以及服务器 | |
US20070110050A1 (en) | Method and system of determining last hop device addresses | |
CN106559485B (zh) | 一种控制服务器关机的方法及装置 | |
CN108965370A (zh) | 插播文本消息的方法、视联网服务器和系统 | |
US20090300136A1 (en) | Scalable Transfer Feedback | |
CN109474698A (zh) | 访问请求标记方法、装置、设备及存储介质 | |
US11218412B2 (en) | Method and system for managing the download of data | |
CN109522032A (zh) | 固件升级方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |