CN108055157B - 一种服务节点的获取方法及装置 - Google Patents

一种服务节点的获取方法及装置 Download PDF

Info

Publication number
CN108055157B
CN108055157B CN201711373526.4A CN201711373526A CN108055157B CN 108055157 B CN108055157 B CN 108055157B CN 201711373526 A CN201711373526 A CN 201711373526A CN 108055157 B CN108055157 B CN 108055157B
Authority
CN
China
Prior art keywords
server
service node
information
management server
node information
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.)
Active
Application number
CN201711373526.4A
Other languages
English (en)
Other versions
CN108055157A (zh
Inventor
杨魁一
朱亚兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201711373526.4A priority Critical patent/CN108055157B/zh
Publication of CN108055157A publication Critical patent/CN108055157A/zh
Application granted granted Critical
Publication of CN108055157B publication Critical patent/CN108055157B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种服务节点的获取方法及装置,本发明中管理服务器接收到代理服务器发送的服务节点获取请求后,会根据实时更新的服务器注册列表,获取与所述服务节点获取请求对应的服务节点信息,进而将服务节点信息发送到代理服务器。管理服务器内的服务器注册列表随时更新,这样当出现服务节点扩容或者出现宕机等故障时,管理服务器中会有最新的服务器注册列表,服务节点信息是基于更新后的服务器注册列表生成,进而代理服务器每次都能得到最新的服务节点信息,不需要人工手动更新,减少了人工工作量,并且降低了人工更新错误的风险。

Description

一种服务节点的获取方法及装置
技术领域
本发明涉及通信领域,更具体的说,涉及一种服务节点的获取方法及装置。
背景技术
目前互联网应用往往采用分布式架构来实现服务高并发、高可用的目的,在构建和部署分布式架构的过程中,处理用户请求的Nginx服务器中内置有配置文件,配置文件中有为Nginx服务器提供服务的服务节点。
当为Nginx服务器提供服务的服务节点扩容或者出现宕机等故障时,Nginx服务器中的配置文件就需要更新,现有技术中更新配置文件采用人工手动更新的方式。
但是人工手动更新配置文件,会增加人工的工作量,并且存在人工更新错误的风险。
发明内容
有鉴于此,本发明提供一种服务节点的获取方法及装置,以解决人工手动更新配置文件,会增加人工的工作量,并且存在人工更新错误的风险的问题。
为解决上述技术问题,本发明采用了如下技术方案:
一种服务节点的获取方法,应用于管理服务器,包括:
根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表;其中,所述服务器注册列表中包括连接到所述管理服务器的至少一个服务器的服务器信息;
每隔指定时间,接收代理服务器发送的服务节点获取请求;
根据实时更新的服务器注册列表,获取与所述代理服务器发送的服务节点获取请求对应的服务节点信息;
将与所述代理服务器发送的服务节点获取请求对应的服务节点信息发送到所述代理服务器。
优选地,所述根据实时更新的服务器注册列表,获取与所述代理服务器发送的服务节点获取请求对应的服务节点信息,包括:
从所述实时更新的服务器注册列表中查找与所述代理服务器发送的所述服务节点获取请求对应的服务节点信息。
优选地,根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表之前,还包括:
接收至少一个待连接到所述管理服务器的服务器发送的注册请求;其中,所述注册请求中包括服务器的属性信息;
确定出至少一个服务器;其中,确定出的服务器的属性信息与所述管理服务器中存储的所述服务器的属性信息相同;
将确定出的服务器连接到所述管理服务器;
根据连接到所述管理服务器的每个服务器的服务器信息,生成服务器注册列表。
优选地,根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表,包括:
根据新连接到所述管理服务器的至少一个服务器的连接状态,以及连接到所述管理服务器的每个服务器发送的心跳信息,实时更新服务器注册列表。
一种服务节点的获取方法,应用于代理服务器,包括:
每隔第一预设时间,发送服务节点获取请求到管理服务器;
判断第二预设时间内是否接收到所述管理服务器发送的与所述服务节点获取请求对应的服务节点信息;
当所述第二预设时间内接收到来自所述管理服务器的服务节点信息,将所述服务节点信息进行格式转换,得到所述代理服务器可识别的服务节点信息。
优选地,将所述服务节点信息进行格式转换,得到所述代理服务器可识别的服务节点信息后,还包括:
当所述可识别的服务节点信息与所述代理服务器的内存中存储的历史服务节点信息不一致时,将所述可识别的服务节点信息作为新的历史服务节点信息;
每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息。
优选地,每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息服务节点信息后,还包括:
接收客户端发送的用户请求;
根据所述标准信息,采用负载均衡算法,计算出与所述用户请求对应的服务节点;
从所述用户请求对应的服务节点中获取与所述用户请求对应的服务信息;
将所述服务信息发送到所述客户端。
一种服务节点的获取装置,应用于管理服务器,包括:
更新模块,用于根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表;其中,所述服务器注册列表中包括连接到所述管理服务器的至少一个服务器的服务器信息;
接收模块,用于每隔指定时间,接收代理服务器发送的服务节点获取请求;
信息获取模块,用于根据实时更新的服务器注册列表,获取与所述代理服务器发送的服务节点获取请求对应的服务节点信息;
发送模块,用于将与所述代理服务器发送的服务节点获取请求对应的服务节点信息发送到所述代理服务器。
优选地,所述信息获取模块包括:
获取子模块,用于从所述实时更新的服务器注册列表中查找与所述代理服务器发送的所述服务节点获取请求对应的服务节点信息。
优选地,还包括:
请求接收模块,用于更新模块根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表之前,接收至少一个待连接到所述管理服务器的服务器发送的注册请求;其中,所述注册请求中包括服务器的属性信息;
确定模块,用于确定出至少一个服务器;其中,确定出的服务器的属性信息与所述管理服务器中存储的所述服务器的属性信息相同;
连接模块,用于将确定出的服务器连接到所述管理服务器;
列表生成模块,用于根据连接到所述管理服务器的每个服务器的服务器信息,生成服务器注册列表。
优选地,所述更新模块包括:
更新子模块,用于根据新连接到所述管理服务器的至少一个服务器的连接状态,以及连接到所述管理服务器的每个服务器发送的心跳信息,实时更新服务器注册列表。
一种服务节点的获取装置,应用于代理服务器,包括:
请求发送单元,用于每隔第一预设时间,发送服务节点获取请求到管理服务器;
判断单元,用于判断第二预设时间内是否接收到所述管理服务器发送的与所述服务节点获取请求对应的服务节点信息;
格式转换单元,用于当所述判断单元判断出第二预设时间内接收到来自所述管理服务器的服务节点信息,将所述服务节点信息进行格式转换,得到所述代理服务器可识别的服务节点信息。
优选地,还包括:
列表更新单元,用于所述格式转换单元将所述服务节点信息进行格式转换,得到所述代理服务器可识别的服务节点信息列表后,当所述可识别的服务节点信息与所述代理服务器的内存中存储的历史服务节点信息不一致时,将所述可识别的服务节点信息作为新的历史服务节点信息;
替换单元,用于每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息。
优选地,还包括:
用户请求接收单元,用于所述替换单元每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息后,接收客户端发送的用户请求;
节点计算单元,用于根据所述标准信息,采用负载均衡算法,计算出与所述用户请求对应的服务节点;
信息获取单元,用于从所述用户请求对应的服务节点中获取与所述用户请求对应的服务信息;
信息发送单元,用于将所述服务信息发送到所述客户端。
相较于现有技术,本发明具有以下有益效果:
本发明提供一种服务节点的获取方法及装置,本发明中管理服务器接收到代理服务器发送的服务节点获取请求后,会根据实时更新的服务器注册列表,获取与所述服务节点获取请求对应的服务节点信息,进而将服务节点信息发送到代理服务器。管理服务器内的服务器注册列表随时更新,这样当出现服务节点扩容或者出现宕机等故障时,管理服务器中会有最新的服务器注册列表,服务节点信息是基于更新后的服务器注册列表生成,进而代理服务器每次都能得到最新的服务节点信息,不需要人工手动更新,减少了人工工作量,并且降低了人工更新错误的风险。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明提供的一种应用于管理服务器的服务节点的获取方法的方法流程图;
图2为本发明提供的另一种应用于管理服务器的服务节点的获取方法的方法流程图;
图3为本发明提供的一种应用于Nginx服务器的服务节点的获取方法的方法流程图;
图4为本发明提供的一种应用于管理服务器的服务节点的获取装置的结构示意图;
图5为本发明提供的一种应用于Nginx服务器的服务节点的获取装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种服务节点的获取方法,应用于管理服务器,其中,管理服务器可以是注册中心服务器,主要起管理服务节点的作用。选择了Zookeeper来做注册中心的底层技术,Zookeeper的优点是允许集群中出现少数的不可用节点,避免单点的出现。通过对Zookeeper的二次封装,实现超文本传输协议http接口和计算机编程语言java接口两种方式的服务注册和服务发现方式。该Zookeeper组件实现的主要功能是:服务注册、服务列表返回。
其中,通过java接口的方式实现服务注册具体采用java代码注册方式实现,该方法适用于java服务器的注册,所涉及到的进行java服务器注册的代码为:
Figure BDA0001514188490000061
Figure BDA0001514188490000071
另外,通过http接口的方式实现服务注册适用于Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器Nginx服务器的注册,所涉及到的进行Nginx服务器注册的代码为:
Figure BDA0001514188490000072
参照图1,应用于管理服务器的服务节点的获取方法包括:
S11、根据连接到管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表;
其中,所述服务器注册列表中包括连接到所述管理服务器的至少一个服务器的服务器信息。
服务器信息包括服务器的网络之间互连的协议IP地址、版本号、服务器状态和测试用例testcase等信息。服务器可以是Nginx服务器或者java服务器。其中,连接到管理服务器的服务器的状态可以是正常状态、扩容或者是宕机等状态。
可选的,在本实施例的基础上,步骤S11包括:
根据新连接到管理服务器的至少一个服务器的连接状态,以及连接到管理服务器的每个服务器发送的心跳信息,实时更新服务器注册列表。
具体的,连接到管理服务器的服务器的数量变化是指可能出现有新的服务器申请在管理服务器中注册的情况。此时需要管理服务器将新注册的服务器的服务节点信息更新到服务器注册列表。
此外,每隔固定时间,服务器会向管理服务器发送一次心跳信息,如每隔30s向管理服务器发送一次心跳信息,当管理服务器长时间没有收到服务器发送的心跳信息,说明服务器出现宕机等情况而不能正常与管理服务器进行通信,此时说明,该服务器已不可用,此时管理服务器需要将故障服务器进行摘除。
本步骤中,能够在宕机或扩容等情况下,均能够更新服务器注册列表。保证在宕机或扩容等情况下,均能够为代理服务器提供最新、最全的服务器注册列表。
S12、每隔指定时间,接收代理服务器发送的服务节点获取请求;
其中,代理服务器可以为Nginx服务器。
其中,指定时间是技术人员根据具体应用场景进行设定的,指定时间可以为半小时。服务节点获取请求是为了获取为Nginx服务器提供指定服务的服务节点。
S13、根据实时更新的服务器注册列表,获取与所述代理服务器发送的服务节点获取请求对应的服务节点信息;
可选的,在本实施例的基础上,步骤S13包括:
从所述实时更新的服务器注册列表中查找与所述代理服务器发送的所述服务节点获取请求对应的服务节点信息。
本步骤中,可以通过查表的方式来确定服务节点信息,方便快捷。
具体的,当代理服务器为Nginx服务器时,服务节点获取请求是为了获取为Nginx服务器提供指定服务的服务节点。指定服务可以是登录、注册等服务,知道Nginx服务器需要获取什么服务之后,只需要从所述实时更新的服务器注册列表中查找与所述Nginx服务器发送的所述服务节点获取请求对应的服务器节点信息即可,就能够得到服务节点获取请求对应的服务节点信息。
S14、将与所述代理服务器发送的服务节点获取请求对应的服务节点信息发送到所述代理服务器。
具体的,将服务节点信息发送到Nginx服务器后,Nginx服务器就能够知道哪个服务器为Nginx服务器提供服务。
本实施例中,管理服务器接收到代理服务器发送的服务节点获取请求后,会根据实时更新的服务器注册列表,获取与所述服务节点获取请求对应的服务节点信息,进而将服务节点信息发送到代理服务器。管理服务器内的服务器注册列表随时更新,这样当出现服务节点扩容或者出现宕机等故障时,管理服务器中会有最新的服务器注册列表,服务节点信息是基于更新后的服务器注册列表生成,进而代理服务器每次都能得到最新的服务节点信息,不需要人工手动更新,减少了人工工作量,并且降低了人工更新错误的风险。
可选的,在上述任一实施例的基础上,参照图2,步骤S11之前还包括:
S21、接收至少一个待连接到所述管理服务器的服务器发送的注册请求;
其中,所述注册请求中包括服务器的属性信息。
其中,服务器发送注册请求的目的是为了连接到管理服务器。属性信息包括服务器的版本号和testcase信息。
S22、确定出至少一个服务器;
其中,确定出的服务器的属性信息与所述管理服务器中存储的所述服务器的属性信息相同。
具体的,管理服务器中的数据库中保存有大量的服务器的属性信息,将待连接到管理服务器的服务器的属性信息与数据库中相同的服务器的属性信息进行比较,若相同,则说明待连接的服务器为合法的服务器,若不同,则说明待连接的服务器为不合法的服务器。
需要说明的是,将属性信息进行比对,是为了防止恶意的服务器连接到管理服务器,避免管理服务器中的信息被窃取。
S23、将确定出的服务器连接到所述管理服务器;
S24、根据连接到所述管理服务器的每个服务器的服务器信息,生成服务器注册列表。
具体的,服务器信息包括服务器的IP地址、版本号和testcase等信息。
将连接到管理服务器的每个服务器的服务器信息进行汇总,得到服务器注册列表。其中,服务器注册列表可以以表格的形式进行展示。
本实施例中,能够生成服务器注册列表,进而能够了解有多少台服务器连接到管理服务器。
需要说明的是,本实施例中的步骤S25至步骤S28,请参照上述实施例中的相应说明,在此不再赘述。
可选的,本发明的另一实施例中提供了一种服务节点的获取方法,应用于代理服务器,其中,代理服务器可以为Nginx服务器。
需要说明的是,本实施例中的Nginx服务器并没有连接到管理服务器,只是能够与管理服务器进行通信。Nginx服务器和连接到管理服务器的服务器是M:N的关系,即一台Nginx服务器的服务节点信息中会有多个连接到管理服务器的服务器,一台连接到管理服务器的服务器存在于多个Nginx服务器的服务节点信息中。
此外,Nginx服务器中,安装有一个自主研发的、与管理服务器通信的组件SmartNginx Client,为用于从管理服务器获取服务节点信息的组件。组件实现了三个主要功能:获取服务节点信息、服务节点信息定期备份和采用负载均衡算法选择服务节点。
参照图3,服务节点的获取方法包括:
S31、每隔第一预设时间,发送服务节点获取请求到管理服务器;
其中,服务节点获取请求是为了获取服务节点信息。发送的服务节点获取请求为http请求。
需要说明的是,代理服务器启动后,就执行步骤S31。
在具体实现中,优选的,启动定时器,以保证定时发送服务节点获取请求,并获取服务节点获取请求对应的服务节点信息时所执行的代码为:
local check
check=function(premature,ctx)
if premature then
return
end
pcall(process_multi,ctx)
local ok,err=new_timer(ctx.delay,check,ctx)
if not ok then
if err~="process exiting"then
errlog("failed to create timer:",err)
end
return
end
end
S32、判断第二预设时间内是否接收到管理服务器发送的与服务节点获取请求对应的服务节点信息;当第二预设时间内接收到来自管理服务器的服务节点信息,执行步骤S33,当第二预设时间内未接收到来自管理服务器的服务节点信息,执行步骤S34。
S33、将服务节点信息进行格式转换,得到代理服务器可识别的服务节点信息。
具体的,当代理服务器为Nginx服务器时,接收到的服务节点信息,Nginx服务器不能识别,此时需要将服务节点信息进行格式转换,转换成服务节点信息可以识别的服务节点信息。其中,服务节点信息为Upstream列表。Upstream为Nginx服务器的内存中的一个数据结构。除了可以转换成Upstream列表,还可以转换成Nginx服务器可识别的其他格式。
当转换成Upstream列表后,就可以启动Worker,进而就可以接收用户请求。当Worker成功启动时,说明启动成功,可以正常处理用户请求,当Worker未成功启动时,说明未启动成功,不能正常处理用户请求。
S34、读取预设位置中的历史服务节点信息。
具体的,当判断出第二预设时间内未接收到管理服务器发送的与服务节点获取请求对应的服务节点信息,可能说明Nginx服务器与管理服务器之间的通信存在问题、请求超时或者请求的数据不存在等问题,此时可以从预设位置中获取得到历史服务节点信息,以防止Nginx服务器由于网络等因素导致Nginx服务器启动失败。其中,预设位置可以是本地磁盘。
在具体实现中,优选的,读取预设位置中的历史服务节点信息时所执行的代码为:
localstoreresult=mainctx.cache:get(ctx.service)
errlog("read fromcache:",storeresult)
if not storeresult then
localbgresult=readFromFile(ctx)
localsucc_cachebg,err_cachebg,forcible_cachebg=mainctx.cache:set(ctx.service,bgresult)
saveToTable(bgresult,ctx,'bgfile')
errlog("service:",ctx.service,",set bg cache:",bgresult)
end
可选的,在本实施例的基础上,步骤S33后,还包括:
1)当所述可识别的服务节点信息与所述代理服务器的内存中存储的历史服务节点信息不一致时,将所述可识别的服务节点信息作为新的历史服务节点信息;
具体的,当代理服务器为Nginx服务器时,Nginx服务器的内存中也存储有历史服务节点信息,当Nginx服务器接收到管理服务器发送的服务节点信息且转换为可识别的服务节点信息后,会将可识别的服务节点信息与历史服务节点信息进行比较,当不一致时,更新历史服务节点信息,以使述Nginx服务器的内存中存储的历史服务节点信息为最新的历史服务节点信息。需要说明的是,将历史服务节点信息存储在内存中属于临时存储。
2)每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息。
具体的,内存中存储的数据属于临时存储,不能永久性保存,当Nginx服务器重新启动时,内存中保存的数据会被删除,因此,需要将内存中存储的历史服务节点信息定期存储到预设位置,预设位置可以是本地磁盘。存储到预设位置中的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息,用来确定服务节点。
其中,第一预设时间、第二预设时间和第三预设时间是技术人员根据具体使用场景进行设定的。
本例子中,可以随时确定最新的的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息,进而保证为用户服务时,确定的服务节点都是可用的。
本实施例中,代理服务器的历史服务节点信息是定期进行更新的,以保证历史服务节点信息列表中的服务节点都是可用的。
可选的,在图3对应的实施例的基础上,,每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息服务节点信息之后,还包括:
1)接收客户端发送的用户请求;
其中,用户请求可以是请求服务端口的请求,如可以请求登录端口、注册端口等。客户端可以是用户使用的手机、平板、笔记本或电脑等移动终端。
此外,用户请求中包括用户信息,用户信息包括用户身份标识号id、用户网络之间互连的协议ip、用户使用的设备等信息,当Nginx服务器接收到用户请求后,会对用户信息进行数据校验,以避免伪造的设备发送用户请求。
2)根据所述标准信息,采用负载均衡算法,计算出与所述用户请求对应的服务节点;
其中,标准信息为存储在预设位置中的历史服务节点信息。
具体的,组件SmartNginx Client能够实现轮询、随机和网络之间互连的协议/统一资源定位符ip/url哈希算法。
现举例分别介绍轮询、随机和ip/url哈希算法。其中,轮询、随机和ip/url哈希算法均为负载均衡算法。
轮询:比如A、B、C三个节点,用户请求1、请求2、请求3到达时,会由A处理请求1,B处理请求2,C处理请求3,顺序进行。
随机:比如A、B、C三个节点,用户请求1、请求2、请求3到达时,A、B、C三个节点的处理三个请求时是随机的,不存在对应关系。
ip/url哈希算法:根据用户的ip地址,或者请求的url,根据哈希算法计算出对应的处理节点,比如A、B、C三个节点,请求1、请求2、请求3,若请求1经过计算,应该由B节点处理,则B节点处理请求。
需要说明的是,根据本方法中的负载均衡算法计算得到服务节点后,若发现计算得到的服务节点出现了异常情况(如宕机、网络故障等)时,会将该服务节点删除,再使用负载均衡算法中的随机算法计算得到服务节点。需要说明的是,本步骤使用随机算法是为了防止某一服务节点压力过大。
在具体实现中,优选的,当采用负载均衡算法计算得到服务节点后,若发现计算得到的服务节点出现了异常情况时,将该服务节点删除,再使用负载均衡算法中的随机算法计算得到服务节点时所执行的代码为:
Figure BDA0001514188490000141
3)从所述用户请求对应的服务节点中获取与所述用户请求对应的服务信息;
4)将服务信息发送到客户端。
从服务节点中获取与用户请求对应的服务信息,并将服务信息发送到客户端后,用户就能够得到想要的信息。
本步骤中,能够在接收到用户请求后,查找到与用户请求相对应的服务信息,进而能够保证用户正常的访问权限。另外,提供了采用负载均衡算法计算得到的服务节点出现了异常情况时的处理机制,能够提高访问成功率。
可选的,本发明的另一实施例中提供了一种服务节点的获取装置,参照图4,应用于管理服务器,包括:
更新模块101,用于根据连接到管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表;其中,所述服务器注册列表中包括连接到所述管理服务器的至少一个服务器的服务器信息;
接收模块102,用于每隔指定时间,接收代理服务器发送的服务节点获取请求;
信息获取模块103,用于根据实时更新的服务器注册列表,获取与所述代理服务器发送的服务节点获取请求对应的服务节点信息;
发送模块104,用于将与所述代理服务器发送的服务节点获取请求对应的服务节点信息发送到所述代理服务器。
可选的,在本实施例的基础上,信息获取模块103包括:
获取子模块,用于从所述实时更新的服务器注册列表中查找与所述代理服务器发送的所述服务节点获取请求对应的服务节点信息。
可选的,在本实施例的基础上,更新模块101包括:
更新子模块,用于根据新连接到管理服务器的至少一个服务器的连接状态,以及连接到管理服务器的每个服务器发送的心跳信息,实时更新服务器注册列表。
本实施例中,管理服务器接收到代理服务器发送的服务节点获取请求后,会根据实时更新的服务器注册列表,获取与所述服务节点获取请求对应的服务节点信息,进而将服务节点信息发送到代理服务器。管理服务器内的服务器注册列表随时更新,这样当出现服务节点扩容或者出现宕机等故障时,管理服务器中会有最新的服务器注册列表,服务节点信息是基于更新后的服务器注册列表生成,进而代理服务器每次都能得到最新的服务节点信息,不需要人工手动更新,减少了人工工作量,并且降低了人工更新错误的风险。
需要说明的是,本实施例中的各个模块和子模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
可选的,在上述任一应用于管理服务器的获取装置的实施例的基础上,还包括:
请求接收模块,用于更新模块101根据连接到管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表之前,接收至少一个待连接到所述管理服务器的服务器发送的注册请求;其中,所述注册请求中包括服务器的属性信息;
确定模块,用于确定出至少一个服务器;其中,确定出的服务器的属性信息与所述管理服务器中存储的所述服务器的属性信息相同;
连接模块,用于将确定出的服务器连接到所述管理服务器;
列表生成模块,用于根据连接到所述管理服务器的每个服务器的服务器信息,生成服务器注册列表。
本实施例中,能够生成服务器注册列表,进而能够了解有多少台服务器连接到管理服务器。
需要说明的是,本实施例中的各个模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
可选的,本发明的另一实施例中提供了一种服务节点的获取装置,参照图5,应用于代理服务器,包括:
请求发送单元201,用于每隔第一预设时间,发送服务节点获取请求到管理服务器;
判断单元202,用于判断第二预设时间内是否接收到管理服务器发送的与服务节点获取请求对应的服务节点信息;
格式转换单元203,用于当判断单元判断出第二预设时间内接收到来自管理服务器的服务节点信息,将服务节点信息进行格式转换,得到代理服务器可识别的服务节点信息。
可选的,在本实施例的基础上,还包括:
列表更新单元,用于格式转换单元将服务节点信息进行格式转换,得到代理服务器可识别的服务节点信息列表后,当所述可识别的服务节点信息与所述代理服务器的内存中存储的历史服务节点信息不一致时,将所述可识别的服务节点信息作为新的历史服务节点信息;
替换单元,用于每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息。
本实施例中,代理服务器的历史服务节点信息是定期进行更新的,以保证历史服务节点信息列表中的服务节点都是可用的。
需要说明的是,本实施例中的各个单元的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
可选的,在替换单元每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息的实施例的基础上,还包括:
用户请求接收单元,用于所述替换单元每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息后,接收客户端发送的用户请求;
节点计算单元,用于根据所述标准信息,采用负载均衡算法,计算出与所述用户请求对应的服务节点;
信息获取单元,用于从所述用户请求对应的服务节点中获取与所述用户请求对应的服务信息;
信息发送单元,用于将服务信息发送到客户端。
本步骤中,能够在接收到用户请求后,查找到与用户请求相对应的服务信息,进而能够保证用户正常的访问权限。另外,提供了当采用负载均衡算法计算得到的服务节点出现了异常情况时的处理机制,能够提高访问成功率。
需要说明的是,本实施例中的各个单元的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (14)

1.一种服务节点的获取方法,其特征在于,应用于管理服务器,包括:
根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表;其中,所述服务器注册列表中包括连接到所述管理服务器的至少一个服务器的服务器信息;
每隔指定时间,接收代理服务器发送的服务节点获取请求;所述代理服务器为Nginx服务器,所述Nginx服务器能够与所述管理服务器进行通信、且未连接到所述管理服务器;所述Nginx服务器的服务节点信息中包括多个连接到所述管理服务器的服务器,一台连接到所述管理服务器的服务器存在于多个所述Nginx服务器的服务节点信息中;
根据实时更新的服务器注册列表,获取与所述代理服务器发送的服务节点获取请求对应的服务节点信息;
将与所述代理服务器发送的服务节点获取请求对应的服务节点信息发送到所述代理服务器。
2.根据权利要求1所述的获取方法,其特征在于,所述根据实时更新的服务器注册列表,获取与所述代理服务器发送的服务节点获取请求对应的服务节点信息,包括:
从所述实时更新的服务器注册列表中查找与所述代理服务器发送的所述服务节点获取请求对应的服务节点信息。
3.根据权利要求1所述的获取方法,其特征在于,根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表之前,还包括:
接收至少一个待连接到所述管理服务器的服务器发送的注册请求;其中,所述注册请求中包括服务器的属性信息;
确定出至少一个服务器;其中,确定出的服务器的属性信息与所述管理服务器中存储的所述服务器的属性信息相同;
将确定出的服务器连接到所述管理服务器;
根据连接到所述管理服务器的每个服务器的服务器信息,生成服务器注册列表。
4.根据权利要求1所述的获取方法,其特征在于,根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表,包括:
根据新连接到所述管理服务器的至少一个服务器的连接状态,以及连接到所述管理服务器的每个服务器发送的心跳信息,实时更新服务器注册列表。
5.一种服务节点的获取方法,其特征在于,应用于代理服务器,所述代理服务器为Nginx服务器,所述Nginx服务器能够与管理服务器进行通信、且未连接到所述管理服务器;所述Nginx服务器的服务节点信息中包括多个连接到所述管理服务器的服务器,一台连接到所述管理服务器的服务器存在于多个所述Nginx服务器的服务节点信息中;获取方法包括:
每隔第一预设时间,发送服务节点获取请求到管理服务器;
判断第二预设时间内是否接收到所述管理服务器发送的与所述服务节点获取请求对应的服务节点信息;
当所述第二预设时间内接收到来自所述管理服务器的服务节点信息,将所述服务节点信息进行格式转换,得到所述代理服务器可识别的服务节点信息。
6.根据权利要求5所述的获取方法,其特征在于,将所述服务节点信息进行格式转换,得到所述代理服务器可识别的服务节点信息后,还包括:
当所述可识别的服务节点信息与所述代理服务器的内存中存储的历史服务节点信息不一致时,将所述可识别的服务节点信息作为新的历史服务节点信息;
每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息。
7.根据权利要求6所述的获取方法,其特征在于,每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息服务节点信息后,还包括:
接收客户端发送的用户请求;
根据所述标准信息,采用负载均衡算法,计算出与所述用户请求对应的服务节点;
从所述用户请求对应的服务节点中获取与所述用户请求对应的服务信息;
将所述服务信息发送到所述客户端。
8.一种服务节点的获取装置,其特征在于,应用于管理服务器,包括:
更新模块,用于根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表;其中,所述服务器注册列表中包括连接到所述管理服务器的至少一个服务器的服务器信息;
接收模块,用于每隔指定时间,接收代理服务器发送的服务节点获取请求;所述代理服务器为Nginx服务器,所述Nginx服务器能够与所述管理服务器进行通信、且未连接到所述管理服务器;所述Nginx服务器的服务节点信息中包括多个连接到所述管理服务器的服务器,一台连接到所述管理服务器的服务器存在于多个所述Nginx服务器的服务节点信息中;
信息获取模块,用于根据实时更新的服务器注册列表,获取与所述代理服务器发送的服务节点获取请求对应的服务节点信息;
发送模块,用于将与所述代理服务器发送的服务节点获取请求对应的服务节点信息发送到所述代理服务器。
9.根据权利要求8所述的获取装置,其特征在于,所述信息获取模块包括:
获取子模块,用于从所述实时更新的服务器注册列表中查找与所述代理服务器发送的所述服务节点获取请求对应的服务节点信息。
10.根据权利要求8所述的获取装置,其特征在于,还包括:
请求接收模块,用于更新模块根据连接到所述管理服务器的至少一个服务器的连接状态,实时更新服务器注册列表之前,接收至少一个待连接到所述管理服务器的服务器发送的注册请求;其中,所述注册请求中包括服务器的属性信息;
确定模块,用于确定出至少一个服务器;其中,确定出的服务器的属性信息与所述管理服务器中存储的所述服务器的属性信息相同;
连接模块,用于将确定出的服务器连接到所述管理服务器;
列表生成模块,用于根据连接到所述管理服务器的每个服务器的服务器信息,生成服务器注册列表。
11.根据权利要求8所述的获取装置,其特征在于,所述更新模块包括:
更新子模块,用于根据新连接到所述管理服务器的至少一个服务器的连接状态,以及连接到所述管理服务器的每个服务器发送的心跳信息,实时更新服务器注册列表。
12.一种服务节点的获取装置,其特征在于,应用于代理服务器,所述代理服务器为Nginx服务器,所述Nginx服务器能够与管理服务器进行通信、且未连接到所述管理服务器;所述Nginx服务器的服务节点信息中包括多个连接到所述管理服务器的服务器,一台连接到所述管理服务器的服务器存在于多个所述Nginx服务器的服务节点信息中;所述获取装置包括:
请求发送单元,用于每隔第一预设时间,发送服务节点获取请求到管理服务器;
判断单元,用于判断第二预设时间内是否接收到所述管理服务器发送的与所述服务节点获取请求对应的服务节点信息;
格式转换单元,用于当所述判断单元判断出第二预设时间内接收到来自所述管理服务器的服务节点信息,将所述服务节点信息进行格式转换,得到所述代理服务器可识别的服务节点信息。
13.根据权利要求12所述的获取装置,其特征在于,还包括:
列表更新单元,用于所述格式转换单元将所述服务节点信息进行格式转换,得到所述代理服务器可识别的服务节点信息列表后,当所述可识别的服务节点信息与所述代理服务器的内存中存储的历史服务节点信息不一致时,将所述可识别的服务节点信息作为新的历史服务节点信息;
替换单元,用于每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息。
14.根据权利要求13所述的获取装置,其特征在于,还包括:
用户请求接收单元,用于所述替换单元每隔第三预设时间,将所述代理服务器的内存中存储的历史服务节点信息作为确定接收的用户请求对应的服务节点的标准信息后,接收客户端发送的用户请求;
节点计算单元,用于根据所述标准信息,采用负载均衡算法,计算出与所述用户请求对应的服务节点;
信息获取单元,用于从所述用户请求对应的服务节点中获取与所述用户请求对应的服务信息;
信息发送单元,用于将所述服务信息发送到所述客户端。
CN201711373526.4A 2017-12-19 2017-12-19 一种服务节点的获取方法及装置 Active CN108055157B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711373526.4A CN108055157B (zh) 2017-12-19 2017-12-19 一种服务节点的获取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711373526.4A CN108055157B (zh) 2017-12-19 2017-12-19 一种服务节点的获取方法及装置

Publications (2)

Publication Number Publication Date
CN108055157A CN108055157A (zh) 2018-05-18
CN108055157B true CN108055157B (zh) 2021-02-23

Family

ID=62133858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711373526.4A Active CN108055157B (zh) 2017-12-19 2017-12-19 一种服务节点的获取方法及装置

Country Status (1)

Country Link
CN (1) CN108055157B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920157B (zh) * 2018-06-13 2021-02-23 平安科技(深圳)有限公司 Nginx软件的安装方法、装置、计算机设备及存储介质
CN109120717B (zh) * 2018-09-26 2023-07-25 中国平安人寿保险股份有限公司 反向代理方法、装置及存储介质、分布式系统
CN109669846B (zh) * 2018-12-14 2022-04-01 北京金山云网络技术有限公司 管理信息查询方法、装置以及计算机可读介质
CN111629013A (zh) * 2019-02-27 2020-09-04 北京奇虎科技有限公司 一种业务节点管理的方法、装置和节点网络
CN110347509B (zh) * 2019-07-08 2021-12-10 北京字节跳动网络技术有限公司 业务框架接入系统、服务请求处理方法、设备及介质
CN111984289A (zh) * 2020-07-31 2020-11-24 广州市百果园信息技术有限公司 一种服务更新方法、装置、设备及存储介质
CN113094074B (zh) * 2021-05-07 2024-03-19 聚好看科技股份有限公司 一种服务集群的更新方法及装置
CN114327817A (zh) * 2021-12-22 2022-04-12 马上消费金融股份有限公司 一种任务分片方法、装置和电子设备
CN114285745A (zh) * 2021-12-22 2022-04-05 上海摩联信息技术有限公司 一种节点更新方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571959A (zh) * 2012-01-11 2012-07-11 北京奇虎科技有限公司 一种数据下载系统及方法
CN104702702A (zh) * 2012-01-11 2015-06-10 北京奇虎科技有限公司 一种数据下载系统及方法
CN105515759A (zh) * 2015-11-27 2016-04-20 国网信息通信产业集团有限公司 一种微服务注册方法及系统
CN105607951A (zh) * 2015-12-17 2016-05-25 北京奇虎科技有限公司 处理数据请求及获取服务器信息的方法及装置
CN105827687A (zh) * 2015-11-17 2016-08-03 广东亿迅科技有限公司 集群管理方法及其管理系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4616035B2 (ja) * 2005-02-25 2011-01-19 富士通株式会社 サーバ負荷分散プログラム,装置および方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571959A (zh) * 2012-01-11 2012-07-11 北京奇虎科技有限公司 一种数据下载系统及方法
CN104702702A (zh) * 2012-01-11 2015-06-10 北京奇虎科技有限公司 一种数据下载系统及方法
CN105827687A (zh) * 2015-11-17 2016-08-03 广东亿迅科技有限公司 集群管理方法及其管理系统
CN105515759A (zh) * 2015-11-27 2016-04-20 国网信息通信产业集团有限公司 一种微服务注册方法及系统
CN105607951A (zh) * 2015-12-17 2016-05-25 北京奇虎科技有限公司 处理数据请求及获取服务器信息的方法及装置

Also Published As

Publication number Publication date
CN108055157A (zh) 2018-05-18

Similar Documents

Publication Publication Date Title
CN108055157B (zh) 一种服务节点的获取方法及装置
CN107332876B (zh) 区块链状态的同步方法及装置
CN107483260B (zh) 故障处理方法及装置、电子设备
US8719386B2 (en) System and method for providing configuration synchronicity
CN103581276A (zh) 集群管理装置、系统、业务客户端及相应方法
CN103560922A (zh) 一种容灾方法及系统
CN106657259B (zh) 一种用于服务器集群的路由服务器及路由服务方法
CN109995839B (zh) 一种负载均衡方法、系统及负载均衡器
CN110445697B (zh) 视频大数据云平台设备接入服务方法
EP1762069B1 (en) Method of selecting one server out of a server set
CN111343286A (zh) 一种网络接入系统及网络接入方法
CN107592199B (zh) 一种数据同步的方法和系统
CN113364852A (zh) 文件的传输方法、装置和服务器
US7519855B2 (en) Method and system for distributing data processing units in a communication network
CN110138753B (zh) 分布式消息服务系统、方法、设备及计算机可读存储介质
CN109936609B (zh) 终端链式升级方法、装置及升级管理服务器
CN116781564B (zh) 一种容器云平台的网络检测方法、系统、介质和电子设备
CN111931030A (zh) 基于异构系统的请求适配方法、装置、设备及存储介质
CN112217878A (zh) 高并发请求分发方法及系统
CN116886286A (zh) 大数据认证服务自适应方法、装置和设备
CN113612811B (zh) 一种在多通道中客户端挂载的方法、系统、设备及介质
CN108400897B (zh) 网络安全配置方法及装置
KR100706955B1 (ko) 망 구성 요소에 대해 독립적인 에이전트를 이용한 망 관리방법 및 시스템
CN113949631B (zh) 客户端容灾的处理方法、系统及电子设备
CN111200512B (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