一种服务器连接方法及服务器系统的制作方法
【专利摘要】本发明公开了一种服务器连接方法,用于把WEB服务器连接到后端服务器,该方法包括:Web服务器检查本地是否缓存有后端服务器集群列表;若没有缓存所述后端服务器集群列表,则所述Web服务器通过配置服务器获取所述后端服务器集群列表并进行本地缓存;若缓存有所述后端服务器集群列表,则所述Web服务器获取缓存的后端服务器集群列表并从所述缓存的后端服务器集群列表中选择指定后端服务器;所述Web服务器直接连接所述指定后端服务器。本发明基于配置服务器的连接方法省略了LVS的连接处理过程,由此减少了在处理请求过程中的网络通信时间,解决了现有技术中LVS断掉后Web服务器进行长时间等待的问题。
【专利说明】一种服务器连接方法及服务器系统
【技术领域】
[0001]本发明涉及一种服务器连接方法及服务器系统,具体涉及一种基于zookeeper的 服务器连接方法及服务器系统。
【背景技术】
[0002]目前,在企业的一些内部系统中,Web服务器到后台存储服务器的访问通常需要经 过LVS,LVS是一个开源的软件,其全称为:Linux Virtual Server,可以实现LINUX平台下 的简单负载均衡。比如,在一个云存储系统中,由Web服务器接收用户上传的文件,然后,通 过LVS选择存储节点,把数据保存在存储节点。如图1所示,Web服务器如果想要访问后台 数据库服务器集群中的一个数据库进行数据的存取,要通过LVS来和该数据库打交道,通 常的流程是Web服务器首先连接LVS,然后,LVS根据算法取一个后台数据库,接着,Web服 务器根据LVS运行的模式,通过直接或者间接的方式与数据库打交道。例如,LVS在采用IP Tunneling (隧道技术)模式的情况下,Web服务器需要与后台数据库2建立联系,则Web服 务器首先连接LVS,LVS根据特定算法,把Web服务器的服务请求发给数据库2进行处理,数 据库2将处理结果返回给LVS,LVS再把该结果返回给Web服务器。
[0003]在现有技术的处理模式中,由于处理请求的过程中多了一次LVS网络连接,这势 必会增加Web服务器与数据库之间处理应答的响应时间,如果在后台的数据库或者其他服 务器需要很长的处理时间时,LVS会把与后台数据库的连接断掉,但是又不通知前面的Web 服务器,从而导致Web服务器的处理长时间等待。
【发明内容】
[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上 述问题的服务器连接方法及服务器系统。
[0005]依据本发明的一个方面,提供了一种服务器连接方法,用于把WEB服务器连接到 后端服务器,该方法包括=Web服务器检查本地是否缓存有后端服务器集群列表;若没有缓 存所述后端服务器集群列表,则所述Web服务器通过配置服务器获取所述后端服务器集群 列表并进行本地缓存;若缓存有所述后端服务器集群列表,则所述Web服务器获取缓存的 后端服务器集群列表并从所述缓存的后端服务器集群列表中选择指定后端服务器;所述 Web服务器直接连接所述指定后端服务器。
[0006]可选地,所述方法还包括:所述Web服务器发送数据处理请求至所述指定后端服 务器,并等待所述指定后端服务器返回的处理结果。
[0007]可选地,所述后端服务器集群列表发生变化时,所述Web服务器通过所述配置服 务器更新变化后的服务器集群列表并更新本地缓存。
[0008]可选地,所述配置服务器通过调取所述后端服务器集群的应用程序编程接口获得 所述后端服务器集群列表。
[0009]可选地,所述配置服务器按照设定的时间间隔读取所述应用程序编程接口来判断所述后端服务器集群列表是否发生变化,若发生变化则根据变化情况更新其获得的后端服 务器集群列表。
[0010]可选地,所述Web服务器从所述后端服务器集群列表中选择指定服务器的方法采 用随机选择。
[0011]可选地,所述Web服务器从所述后端服务器集群列表中选择指定服务器的方法采 用负载均衡方法。
[0012]可选地,所述负载均衡方法包括:所述Web服务器按下面公式计算所述后端服务 器集群列表中的各个后端服务器的负载值:后端服务器的负载值=kl*cpu使用量+k2*处理 器性能+k3*内存余量+k4*带宽资源;其中,所述kl为cpu使用量所对应的权值,所述k2 为处理器性能所对应的权值,所述k3为内存余量所对应的权值,所述k4为带宽资源所对应 的权值;所述Web服务器选择负载值最小的后端服务器作为指定后端服务器。
[0013]根据本发明的另一方面,提供了一种服务器系统,该系统包括Web服务器和配置 服务器:所述配置服务器,用于获取后端服务器集群列表;所述Web服务器,用于检查本地 是否缓存有后端服务器集群列表;若没有缓存所述后端服务器集群列表,则从所述配置服 务器获取所述后端服务器集群列表并进行本地缓存;若缓存有所述后端服务器集群列表, 则获取缓存的后端服务器集群列表并从中选择指定后端服务器,直接连接所述指定后端服 务器。
[0014]可选的,所述Web服务器包括列表获取模块、列表缓存模块、服务器选取模块和服 务器连接模块:所述列表获取模块,用于检查所述Web服务器本地是否缓存有后端服务器 集群列表,若没有缓存所述后端服务器集群列表,则通过所述配置服务器获取所述后端服 务器集群列表;所述列表缓存模块,用于将所述列表获取模块所获取的所述后端服务器集 群列表进行本地缓存;所述服务器选取模块,用于从所述列表缓存模块所缓存的后端服务 器集群列表中选择指定后端服务器;所述服务器连接模块,用于连接所述指定后端服务器。
[0015]可选地,所述Web服务器还包括数据处理模块,所述数据处理模块用于发送数据 处理请求至所述指定后端服务器,并等待所述指定后端服务器处理结束,将处理结果返回 至所述数据处理模块。
[0016]可选地,所述配置服务器通过调取所述后端服务器集群的应用程序编程接口获得 所述后端服务器集群列表。
[0017]可选地,所述配置服务器按照设定的时间间隔读取所述应用程序编程接口来判断 所述后端服务器集群列表是否发生变化,若发生变化则根据变化情况更新其获得的后端服 务器集群列表。
[0018]根据本发明实施例的一种服务器连接方法可以看出,本公开基于配置服务器的连 接方法省略了 LVS的连接处理过程,由此减少了在处理请求过程中的网络通信时间,解决 了现有技术中LVS断掉后Web服务器进行长时间等待的问题。
[0019]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段, 而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够 更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】
【附图说明】[0020]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通 技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明 的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0021]图1示出了现有技术中服务器的连接方法;
[0022]图2示出了根据本发明实施例的原理示意图;
[0023]图3示出了根据本发明一个实施例的服务器系统处理过程;
[0024]图4示出了根据本发明另一个实施例的服务器系统。
【具体实施方式】
[0025]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例 所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。
[0026]如图2所示,当Web服务器需要与后端服务器,比如某数据库集群中的第2个数 据库进行数据通信时,首先要检查本地是否缓存有后端服务器集群列表,若未发现本地缓 存的后端服务器集群列表,则通过配置服务器从后端服务器集群中获取后端服务器集群列 表,并将该列表缓存在本地;当Web服务器从本地缓存获得后端服务器集群列表时,根据一 定策略选择后端服务器的数据库2,Web服务器直接连接选中的数据库2,向其发送数据处 理请求,并等待处理结束。基于该原理所用的配置服务器例如为zooke印er配置服务器, Zookeeper是Google的Chubby —个开源的实现,是高有效和可靠的协同工作系统,在一个 分布式的环境中,需要一个Master实例或存储一些配置信息,确保文件写入的一致性等。 Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,包含一个简单的原语 集,是Hadoop和Hbase的重要组件。分布式应用可以使用它来实现诸如:统一命名服务、配 置管理、分布式锁服务、集群管理等功能。在Zooke印er中的每个节点叫做znode,并且其有 一个唯一的路径标识,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存 储或获取数据。如果在创建znode时Flag设置为EPHEMERAL,那么当创建的这个znod的 节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper里。Zookeeper使用 Watcher察觉事件信息,当客户端接收到事件信息,比如连接超时,节点数据改变,子节点 改变,可以调用相应的行为来处理数据。ZooKeeper的基本运转流程为:①选举Leader -’② 同步数据;③选举Leader过程中算法有很多,但要达到的选举标准是一致的Leader要 具有最高的zxid ;⑤集群中大多数的机器得到响应并follow选出的Leader。
[0027]适用于本发明原理的策略选择可以采用负载均衡算法,负载均衡算法中常用到的 有随机选择算法,随机选择算法是用负载均衡方法随机的把负载分配到各个可用的服务器 上,通过随机数生成算法选取一个服务器,然后把连接发送给它;还常用到的可以是轮询 算法,轮询算法按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给 所有的服务器,轮询算法在大多数情况下都工作的不错,但是如果负载均衡的设备在处理 速度、连接速度和内存等方面不是完全均等,那么效果会更好,当然,进一步的,可以使用涉 及权重比例分配接受连接数量的加权轮询算法,也可以使用对权重值持续监控并不断更新 的动态轮询算法;还常用到的是最少连接算法,系统把新连接分配给当前连接数目最少的服务器。该算法在各个服务器运算能力基本相似的环境中非常有效。例如,目前系统有个 20个搜索引擎服务器、I个总服务器、I个备用总服务器和一个web服务器,其中,每个搜 索引擎服务器负责总索引中的一部分搜索任务,总服务器负责向这20个搜索引擎服务器 发出搜索请求并合并结果集,备用总服务器负责当总服务器宕机时自动替换总服务器。当 web服务器的CGI (Common Gateway Interface)向总服务器发出搜索请求时,假设搜索 引擎服务器中的15个服务器现在提供搜索服务,5个搜索引擎服务器正在生成索引,使用 Zookeeper可以保证总服务器自动感知有多少提供搜索引擎的服务器并向这些服务器发出 搜索请求,这20个搜索引擎服务器经常要让正在提供搜索服务的服务器停止提供服务开 始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了。
[0028]图3所示为本发明的一个实施例,其原理与图2所示一致,具体的,一种服务器连 接方法,用于把WEB服务器连接到后端服务器,该方法包括:
[0029]步骤S110,Web服务器检查本地是否缓存有后端服务器集群列表,若没有缓存,则 执行步骤S120,若有缓存,则执行步骤S130 ;
[0030]步骤S120,Web服务器通过配置服务器从后端服务器集群中获取后端服务器集群 列表并进行本地缓存,该配置服务器是基于zookeeper的配置服务器,通过调取后端服务 器集群的应用程序编程接口(API, Application Programming Interface)获得后端服务 器集群列表,配置服务器按照设定的时间间隔读取应用程序编程接口(API)来判断后端服 务器集群列表是否发生变化,若发生变化则根据变化情况更新其获得的后端服务器集群列 表,并将更新后的后端服务器集群列表缓存在本地,当然,配置服务器也可以通过管理员向 其手动输入或更新后端服务器集群列表;
[0031]步骤S130,Web服务器获取缓存的后端服务器集群列表并从所述缓存的后端服务 器集群列表中选择指定后端服务器,这种选择方法可以采用随机选择,也可以采用负载均 衡算法进行选择,负载均衡算法可以为,Web服务器按下面公式计算后端服务器集群列表中 的各个后端服务器的负载值:
[0032]后端服务器的负载值=kl*cpu使用量+k2*处理器性能+k3*内存余量+k4*带宽 资源;
[0033]其中,所述kl为cpu使用量所对应的权值,所述k2为处理器性能所对应的权值, 所述k3为内存余量所对应的权值,所述k4为带宽资源所对应的权值,这些权值都是可以 根据需要人为设定的;Web服务器选择负载值最小的后端服务器作为指定后端服务器;t匕 如后台服务器集群列表中有3个数据库,在各参数使用归一化处理后数据库I的负载值 =0.5+0.8+0.6+0.7=2.6 ;数据库 2 的负载值=0.6+0.8+0.7+0.7=2.8 ;数据库 3 的负载值 =0.8+0.7+0.3+0.7=2.5,则Web服务器选择负载值最小的数据库3作为指定后端服务器;
[0034]步骤S140,Web服务器直接连接指定后端服务器;
[0035]步骤S150,Web服务器发送数据处理请求至该指定后端服务器,并等待指定后端 服务器返回的处理结果。
[0036]通过本实施例可以发现,Web服务器与后端服务器需要进行数据处理交换时,在 没有后端服务器集群列表的情况下,可通过zookeeper配置服务器获取后端服务器集群列 表,从而使Web服务器可以直接与后端服务器连接进行请求处理,网络处理环节少了一个, 不需要经过中间环节Web服务器即可与后端服务器直接通讯,明显提高了处理效率。另外,在后端服务器处理没有结束的情况下,Web服务器可以等待后端服务器的处理,而不会出现 连接被断掉却没有感知的情况。使用zookwper配置服务器另一个好处是,当后端服务器 集群列表发生变动时,zookeeper配置服务器能够及时获得更新内容并通知Web服务器进 行本地缓存的更新。
[0037]图4所示为本发明的另一个实施例,是基于图2原理的一种服务器系统,该系统 包括配置服务器310和Web服务器320,其中,配置服务器310用于获取后端服务器集群列 表;Web服务器320用于检查本地是否缓存有后端服务器集群列表;若没有缓存后端服务 器集群列表,则从配置服务器310获取后端服务器集群列表并进行本地缓存;若缓存有后 端服务器集群列表,则获取缓存的后端服务器集群列表并从中选择指定后端服务器,直接 连接该指定后端服务器进行数据通信。配置服务器310通过调取后端服务器集群的应用程 序编程接口(API)获得后端服务器集群列表,按照设定的时间间隔读取应用程序编程接口 (API)来判断后端服务器集群列表是否发生变化,若发生变化则根据变化情况更新其获得 的后端服务器集群列表。
[0038]进一步的,Web服务器包括列表获取模块321、列表缓存模块322、服务器选取模块 323、服务器连接模块324和数据处理模块325,其中,列表获取模块321用于检查Web服务 器320本地是否缓存有后端服务器集群列表,若没有缓存后端服务器集群列表,则通过配 置服务器310获取后端服务器集群列表;列表缓存模块322用于将列表获取模块321所获 取的后端服务器集群列表进行本地缓存;服务器选取模块323用于从列表缓存模块322所 缓存的后端服务器集群列表中选择指定后端服务器;服务器连接模块324用于连接指定后 端服务器;数据处理模块325用于发送数据处理请求至指定后端服务器,并等待指定后端 服务器处理结束,将处理结果返回至数据处理模块。
[0039]需要说明的是,本发明实施例提供的算法和显示不与任何特定计算机、虚拟系统 或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描 述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。 应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所 做的描述是为了披露本发明的最佳实施方式。
[0040]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施 例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构 和技术,以便不模糊对本说明书的理解。
[0041]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在 上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施 例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保 护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面 的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此, 遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身 都作为本发明的单独实施例。
[0042]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地 改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单 元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任 何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的 任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的 权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0043]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领 域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中, 不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在 未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这 样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来 实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件 项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为 名称。
【权利要求】
1.一种服务器连接方法,用于把WEB服务器连接到后端服务器,该方法包括: Web服务器检查本地是否缓存有后端服务器集群列表; 若没有缓存所述后端服务器集群列表,则所述Web服务器通过配置服务器获取所述后端服务器集群列表并进行本地缓存; 若缓存有所述后端服务器集群列表,则所述Web服务器获取缓存的后端服务器集群列表并从所述缓存的后端服务器集群列表中选择指定后端服务器; 所述Web服务器直接连接所述指定后端服务器。
2.根据权利要求1所述的服务器连接方法,所述方法还包括: 所述Web服务器发送数据处理请求至所述指定后端服务器,并等待所述指定后端服务器返回的处理结果。
3.根据权利要求1所述的服务器连接方法,所述后端服务器集群列表发生变化时,所述Web服务器通过所述配置服务器更新变化后的服务器集群列表并更新本地缓存。
4.根据权利要求1所述的服务器连接方法,所述配置服务器通过调取所述后端服务器集群的应用程序编程接口获得所述后端服务器集群列表。
5.根据权利要求4所述的服务器连接方法,所述配置服务器按照设定的时间间隔读取所述应用程序编程接口来判断所述后端服务器集群列表是否发生变化,若发生变化则根据变化情况更新其获得的后端服务器集群列表。
6.根据权利要求1所述`的服务器连接方法,所述Web服务器从所述后端服务器集群列表中选择指定服务器的方法采用随机选择。
7.根据权利要求1所述的服务器连接方法,所述Web服务器从所述后端服务器集群列表中选择指定服务器的方法采用负载均衡方法。
8.根据权利要求6所述的服务器连接方法,所述负载均衡方法包括: 所述Web服务器按下面公式计算所述后端服务器集群列表中的各个后端服务器的负载值: 后端服务器的负载值=kl*cpu使用量+k2*处理器性能+k3*内存余量+k4*带宽资源; 其中,所述kl为cpu使用量所对应的权值,所述k2为处理器性能所对应的权值,所述k3为内存余量所对应的权值,所述k4为带宽资源所对应的权值; 所述Web服务器选择负载值最小的后端服务器作为指定后端服务器。
9.一种服务器系统,该系统包括Web服务器和配置服务器: 所述配置服务器,用于获取后端服务器集群列表; 所述Web服务器,用于检查本地是否缓存有后端服务器集群列表;若没有缓存所述后端服务器集群列表,则从所述配置服务器获取所述后端服务器集群列表并进行本地缓存;若缓存有所述后端服务器集群列表,则获取缓存的后端服务器集群列表并从中选择指定后端服务器,直接连接所述指定后端服务器。
10.根据权利要求9所述的一种服务器系统,所述Web服务器包括列表获取模块、列表缓存模块、服务器选取模块和服务器连接模块: 所述列表获取模块,用于检查所述Web服务器本地是否缓存有后端服务器集群列表,若没有缓存所述后端服务器集群列表,则通过所述配置服务器获取所述后端服务器集群列表;所述列表缓存模块,用于将所述列表获取模块所获取的所述后端服务器集群列表进行本地缓存;所述服务器选取模块,用于从所述列表缓存模块所缓存的后端服务器集群列表中选择指定后端服务器; 所述服务器连接模块,用于连接所述指定后端服务器。
【文档编号】H04L29/08GK103607424SQ201310507446
【公开日】2014年2月26日 申请日期:2013年10月24日 优先权日:2013年10月24日
【发明者】冯所范, 刘中超, 王超 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司