路由方法及系统 【技术领域】
本发明涉及互联网技术, 特别是涉及一种路由方法及系统。 【背景技术】
在传统的通信过程中, 通常会提供一组作用完全相同的服务器, 对外提供无差别 访问, 即对同一个用户的标识号码, 尽量将属于这一标识号码的所有通信过程都交由同一 台服务器完成, 从而尽量避免同一标识号码的通信过程在各个服务器上随机飘荡。
然而, 在传统的通信过程中常常采用在划分号段路由表查找的方式来实现任一标 识号码的所有通信都由同一台服务器完成。在划分号段路由表查找的方式中, 假如有 3 个 服务器对外提供无差别访问, 则将所有的用户标识号码划分为三个部分, 分别对应一服务 器, 以得到一个根据标识号码的划分的路由表。 当某一用户发起数据请求时, 在路由表中查 找到标识号码对应的服务器。但是在划分号段路由表查找的方式中需要进行大量手工配 置, 配置过程非常繁琐。 【发明内容】
基于此, 有必要提供一种可简化配置过程的路由方法。
此外, 还有必要提供一种可简化配置过程的路由系统。
一种路由方法, 包括以下步骤 : 获取发起通信请求的标识号码 ; 将所述标识号码 对所有服务器的总静态配额取模得到余数 ; 按照固定顺序依次对服务器判断余数是否小于 当前服务器的静态配额, 若是, 则确定当前服务器的为可应答请求的服务器, 若否, 则将所 述余数与当前服务器的静态配额相减并选择下一服务器后返回静态配额的判断。
优选地, 所述将所述标识号码对所有服务器的总静态配额取模得到余数的步骤之 前还包括 : 根据服务器的处理能力配置所述服务器的静态配额。
优选地, 所述方法还包括 : 进行故障探测, 根据所述服务器的请求量与应答量动态 调整所述服务器的动态配额 ; 根据所述动态配额屏蔽故障服务器。
优选地, 所述进行故障探测, 根据所述服务器的请求量与应答量动态调整所述服 务器的动态配额的步骤为 : 发送通信请求至所述可应答请求的服务器, 并对请求量进行自 增运算 ; 判断所述可应答请求的服务器是否应答所述通信请求, 若是, 则对所述可应答请求 的服务器应答量进行自增运算 ; 根据请求量及应答量计算每一服务器的应答率, 并由所述 应答率调整动态配额。
优选地, 所述根据所述动态配额屏蔽故障服务器的步骤为 : 生成随机数, 将所述随 机数与最大随机数相比得到随机比例, 获取可应答服务器动态配额与静态配额 ; 根据当前 服务器的动态配额与静态配额得到配额比例, 并判断所述配额比例是否大于随机比例, 若 否, 则按照所述固定顺序选择下一服务器后返回配额比例的判断。
优选地, 所述根据所述动态配额屏蔽故障服务器的步骤为 : 判断所述当前服务器 中请求量是否达到动态配额, 若是, 则按照所述固定顺序选择下一服务器后返回判断。优选地, 所述根据所述动态配额屏蔽故障服务器的步骤之后还包括 : 根据所述故 障服务器的恢复时间调整所述故障服务器的命中概率。
一种路由系统, 至少包括 : 获取模块, 用于获取发起通信请求的标识号码 ; 取模模 块, 用于将所述标识号码对所有服务器的总静态配额取模得到余数 ; 比对模块, 用于按照固 定顺序依次对服务器判断余数是否小于当前服务器的静态配额, 若是, 则确定当前服务器 为可应答请求的服务器, 若否, 则将所述余数与当前服务器的静态配额相减并选择下一服 务器后返回静态配额的判断。
优选地, 还包括 : 配置模块, 用于根据服务器的处理能力配置所述服务器的静态配 额。
优选地, 还包括 : 探测模块, 用于进行故障探测, 根据所述服务器的请求量与应答 量动态调整所述服务器的动态配额 ; 屏蔽模块, 用于根据所述动态配额屏蔽故障服务器。
优选地, 所述探测模块包括 : 运算单元, 用于发送通信请求至所述可应答请求的服 务器, 并对请求量进行自增运算, 判断所述可应答请求的服务器是否应答所述通信请求, 若 是, 则对所述可应答请求的服务器应答量进行自增运算 ; 调整单元, 用于根据请求量及应答 量计算每一服务器的应答率, 并由所述应答率调整动态配额。 优选地, 所述屏蔽模块包括 : 处理单元, 用于生成随机数, 将所述随机数与最大随 机数相比得到随机比例, 获取可应答服务器动态配额与静态配额 ; 判断单元, 用于根据当前 服务器的动态配额与静态配额得到配额比例, 并判断所述配额比例是否大于随机比例, 若 否, 则按照所述固定顺序选择下一服务器后返回配额比例的判断。
优选地, 所述屏蔽模块还用于判断所述当前服务器中请求量是否达到动态配额, 若是, 则按照所述固定顺序选择下一服务器后返回判断。
优选地, 还包括 : 恢复模块, 用于根据所述故障服务器的恢复时间调整所述故障服 务器的命中概率。
上述路由方法及系统中, 通过对总静态配额取模得到的余数与服务器的静态配额 比较大小, 以确定可对通信请求进行应答的服务器, 不需要将海量的用户标识号码与服务 器进行手工配置, 并且保证了同一标识号码将使用相同的服务器进行通信, 有效地简化了 配置过程, 由于静态配额是与服务器的处理能力相对应的, 因此, 上述路由方法及系统在实 现负载均衡的前提下, 能够包容不同性能的服务器, 有效利用计算资源。
上述路由方法及系统进行故障探测以调整服务器的动态配额, 并根据动态配额屏 蔽发生了故障的服务器, 增强了通信过程的自动容灾能力以及稳定性。
【附图说明】
图 1 为一个实施例中路由方法的流程图 ;
图 2 为另一个实施例中路由方法的流程图 ;
图 3 为一个实施例中进行故障探测, 根据服务器的请求量与应答量动态调整服务 器的动态配额的流程图 ;
图 4 为一个实施例中根据动态配额屏蔽可应答请求的故障服务器的流程图 ;
图 5 为另一个实施例中根据动态配额屏蔽可应答请求的故障服务器的流程图 ;
图 6 为第一实施例中路由系统的结构示意图 ;图 7 为第二实施例中路由系统的结构示意图 ; 图 8 为第三实施例中路由系统的结构示意图 ; 图 9 为一个实施例中探测模块的结构示意图 ; 图 10 为一个实施例中屏蔽模块的结构示意图 ; 图 11 为一个实施例中服务器的配置表。【具体实施方式】
图 1 示出了一个实施例中的路由方法的流程, 包括以下步骤 :
在步骤 S10 中, 获取发起通信请求的标识号码。本实施例中, 在消息的传输过程 中, 为与接收方建立连接, 发送方发起通信请求, 此时, 获取发送方所属的标识号码, 以便于 确定响应这一标识号码通信请求的服务器。例如标识号码可以是即时通讯的号码, 也可以 是发起通信请求的用户的序列号等。
在步骤 S20 中, 将标识号码对所有服务器的总静态配额取模得到余数。本实施例 中, 取所有服务器的静态配额之和得到总静态配额, 静态配额是根据服务器的处理能力设 置的数据, 例如 10000。如果服务器的数量为 3, 服务器 1 的静态配额为 10000、 服务器 2 的 静态配额为 20000、 服务器 3 的静态配额为 10000, 则总静态配额 40000。 将标识号码除以总 静态配额得到余数, 此时 0 ≤余数<总静态配额。 例如, 标识号码为 10005, 则余数为 10005 ; 标识号码为 40005, 则余数为 5。
在步骤 S30 中, 按照固定顺序依次对服务器判断余数是否小于当前服务器的静态 配额, 若是, 则进入步骤 S40, 若否, 则进入步骤 S50。本实施例中, 例如, 标识号码为 40005, 余数为 5, 与服务器 1 的静态配额进行比较。
在步骤 S40 中, 确定当前服务器为可应答请求的服务器。本实施例中, 在当前服务 器余数与静态配额的比对过程中, 当余数小于静态配额时, 当前服务器为可应答请求的服 务器。 此时, 发起通信请求的标识号码所发送的通信请求将被当前服务器接收, 并通过该服 务器进行响应。
在步骤 S50 中, 将余数与当前服务器的静态配额相减, 并选择下一服务器后返回 步骤 S30。 本实施例中, 当余数大于静态配额时, 说明当前服务器不是可应答请求的服务器, 因此需要按照固定顺序对下一服务器进行静态配额与余数之间的比对大小, 直至找到余数 小于静态配额的服务器为止。
由于设置了多个服务器实现海量标识号码的信息传输, 因此按照固定顺序一一对 服务器进行余数与静态配额之间的比对, 以得到可响应通信请求的服务器。采用了对静态 配额之和取模, 得到的余数是 [0, 总静态配额 ) 内相对随机的数值, 再按照固定顺序依次比 较余数与服务器中的静态配额的大小, 不会受到服务器数量的影响, 可保证相同的标识号 码必然对应着相同的服务器, 并且是根据静态配额得到相应的服务器, 实现了负载的有效 调节。
上述路由方法中, 在将标识号码对所有服务器的总静态配额取模得到余数的步骤 之前还包括根据服务器的处理能力配置服务器的静态配额的步骤。本实施例中, 配置每一 服务器的静态配额, 该静态配额是根据服务器的处理能力进行量化后得到的, 例如, 每分钟 成功处理的请求数量, 可根据实践经验数据估计得到。由于静态配额是根据服务器的处理能力配置的服务器的负载, 从而为不同计算能力的服务器分配不同量的请求数, 而不必使 用相同性能的服务器, 包容了不同服务器的性能差异。
另一实施例中, 如图 2 所示, 上述路由方法还包括了以下步骤 :
在步骤 S60 中, 进行故障探测, 根据服务器的请求量与应答量动态调整服务器的 动态配额。本实施例中, 可定时或者随机地对服务器进行故障探测, 例如, 可每隔 30 秒对服 务器进行一次故障探测, 通过服务器的请求量与应答量来获知服务器是否处于正常通信状 态, 进而通过调整动态配额来体现服务器的通信状态, 即当服务器不能进行正常通信时, 应 答量将远小于请求量, 此时可将动态配额调整到较低的数值, 动态配额反映了每个服务器 的故障程度。
在步骤 S70 中, 根据动态配额屏蔽故障服务器。本实施例中, 当服务器发生故障死 机或其请求量已达到动态配额时, 需要对该服务器进行屏蔽处理, 不能通过该服务器应答 通信请求。 故障服务器的屏蔽可定时或者随机地进行, 例如, 每一时间间隔便对探测到的故 障服务器实施屏蔽。
在一个具体的实施例中, 如图 3 所示, 进行故障探测, 根据服务器的请求量与应答 量动态调整服务器的动态配额的步骤为 : 在步骤 S601 中, 发送通信请求至可应答请求的服务器, 并对请求量进行自增运 算。本实施例中, 在确定了标识号码所对应的可应答请求的服务器之后, 发送方发出的通 信请求将被该服务器接收, 此时接收到了通信请求的这一服务器将触发对请求量的自增运 算, 将请求量加 1。
在步骤 S603 中, 判断可应答请求的服务器是否应答通信请求, 若是, 则进入步骤 S605。 本实施例中, 处于正常通信状态的服务器将在接收了通信请求后进行应答, 因此若可 应答请求的服务器没有应答通信请求, 则说明服务器的通信不正常, 可能发生了故障, 若可 应答请求的服务器立即应答了发送方所发出的通信请求, 则说明服务器处理正常的通信状 态。
在步骤 S605 中, 对可应答请求的服务器应答量进行自增运算。本实施例中, 当可 应答请求的服务器应答了通信请求时, 触发对可应答请求的服务器应答量的自增运算, 将 应答量加 1。
在步骤 S607 中, 根据请求量及应答量计算每一服务器的应答率, 并由应答率调整 动态配额。本实施例中, 对每一服务器计算应答率 Q, 即 Q =应答量 / 请求量 ×100%。为 避免整个通信环境的发生较大波动, 根据对应答率的质量要求, 可将应答率划分成三段, 即设置第一阈值与第二阈值, 其中, 第一阈值小于第二阈值, 当应答率处于 0 至第一阈值 之间时, 将动态配额置为 1, 当应答率处于第一阈值至第二阈值之间时, 动态配额为静态配 额 ×(Q- 第一阈值 )/(1- 第一阈值 )+1, 当应答率大于第二阈值时, 将动态配额置为静态配 额。例如, 第一阈值可以是 95%, 第二阈值可以是 99.95%。
在一个具体的实施例中, 如图 4 所示, 根据动态配额屏蔽故障服务器的步骤为 :
在步骤 S701 中, 生成随机数, 将随机数与最大随机数相比得到随机比例, 获取可 应答请求的服务器动态配额与静态配额。 本实施例中, 通过随机数生成函数生成随机数, 随 机数生成函数是均匀分配于某个范围内的, 例如 0 到 21 亿, 随机数与该范围内的最大随机 数相之比即为随机比例。
在步骤 S703 中, 根据当前服务器的动态配额与静态配额得到配额比例, 并判断配 额比例是否大于随机比例, 若否, 则进入步骤 S705, 若是, 则进入步骤 S706。本实施例中, 当 服务器的性能较佳, 处于正常通信状态时, 动态配额将无限接近静态配额, 进而使得配额比 例将无限接近 100%, 即随机比例小于配额比例是恒成立的, 反之, 当服务器故障时, 动态配 额较低, 但还是由于随机数而存在着响应通信请求的可能性, 并不会简单地将发生了故障 的服务器屏蔽, 故障越严重, 则服务器响应通信请求的可能性就越低, 故障越轻, 则服务器 响应通信请求的可能性就越高。
在步骤 S705 中, 按照固定顺序选择下一服务器后返回步骤 S703。本实施例中, 当 配额比例小于随机比例时, 当前服务器发生故障且不能对发送方所发出的通信请求进行响 应, 因此按照固定顺序顺移到下一服务器进行判断, 若下一服器中配额比例大于随机比例, 则通过下一服务器进行应答。若下一服务器为固定顺序中的末位服务器, 且末位服务器的 配额比例仍然小于随机比例, 则返回固定顺序中置于首位的服务器进行判断。如果所有服 务器中配额比例均小于随机比例, 则提前进行动态配额的调整。
在步骤 S706 中, 通过当前服务器进行应答。本实施例中, 当配额比例大于随机比 例时, 说明服务器处理正常通信状态, 可对通信请求进行应答。
另一实施例中, 如图 5 所示, 根据动态配额屏蔽故障服务器的步骤还包括了如下步骤 : 在步骤 S707 中, 判断当前服务器中请求量是否达到动态配额, 若是, 则进入步骤 S708, 若否, 则进入步骤 S709。 本实施例中, 在对服务器进行屏蔽处理时, 还需要考虑该服务 器的请求量是否已经达到了动态配额, 首先对可应答请求的服务器进行判断, 如果当前服 务器的请求量已经达到了动态配额, 则不能进行通信请求的应答。
在步骤 S708 中, 按照固定顺序选择下一服务器后返回步骤 S707。本实施例中, 当 可应答请求的服务器中请求量达到了动态配额时, 按照固定顺序顺移到下一服务器进行判 断, 若下一服务器中请求量还未达到动态配额则, 通过下一服务器对通信请求进行应答。 若 下一服务器为固定顺序中的末位服务器, 且末位服务器的请求量达到动态配额, 则返回固 定顺序中置于首位的服务器进行判断。如果所有服务器中请求量均达到了相应的动态配 额, 则提前进行动态配额的调整。
在步骤 S709 中, 通过当前服务器进行应答。本实施例中, 当服务器请求量还未达 到动态配额时, 服务器可对通信请求进行应答。
在其它实施例中, 根据动态配额屏蔽故障服务器的步骤之后还包括了根据故障服 务器的恢复时间调整故障服务器的命中概率。本实施例中, 命中概率指的在通信过程中使 用某一服务器进行响应的概率, 即动态配额与总静态配额之比。为将发生了故障的服务器 屏蔽直接将其动态配额置为 1, 此时, 该服务器的命中概率非常低, 从而难于恢复到正常通 信状态, 因此, 为恢复发生了故障的服务器, 根据恢复时间得到调节系数, 恢复时间越长, 调 节系数也越大, 例如, 若恢复时间为 10 秒, 则调节系数为 0.1%, 若恢复时间为 30 秒, 则调节 系数为 1%, 若恢复时间为 5 分钟, 则调节系数为 5%。将命中概率与调节系数之和作为新 的命中概率。
在总静态配额不变的前提下, 随着命中概率的提高, 服务器接收到了越来越多的 通信请求, 且应答量也在逐渐增多, 进而使得应答率逐渐增大, 最终接近 100%, 以便于在重
新调整动态配额时可以直接恢复到静态配额, 完成整个恢复过程。
图 6 示出了一个实施例中的路由系统, 该系统包括获取模块 10、 取模模块 30 以及 比对模块 50。
获取模块 10, 用于获取发起通信请求的标识号码。 本实施例中, 在消息的传输过程 中, 为与接收方建立连接, 发送方发起通信请求, 此时, 获取模块 10 获取发送方所属的标识 号码, 以便于确定响应这一标识号码通信请求的服务器。例如标识号码可以是即时通讯的 号码, 也可以是发起通信请求的用户的序列号等。
取模模块 30, 用于将标识号码对所有服务器的总静态配额取模得到余数。本实施 例中, 取模模块 30 取所有服务器的静态配额之和得到总静态配额, 静态配额是根据服务器 的处理能力设置的数据, 例如 10000。 如果服务器的数量为 3, 服务器 1 的静态配额为 10000、 服务器 2 的静态配额为 20000、 服务器 3 的静态配额为 10000, 则总静态配额 40000。取模模 块 30 将标识号码除以总静态配额得到余数, 此时 0 ≤余数<总静态配额。例如, 标识号码 为 10005, 则余数为 10005 ; 标识号码为 40005, 则余数为 5。
比对模块 50, 用于按照固定顺序依次对服务器判断余数是否小于当前服务器的静 态配额, 若是, 则确定当前服务器为可应答请求的服务器, 若否, 则将余数与当前服务器的 静态配额相减并选择下一服务器后返回静态配额的判断。本实施例中, 由于设置了多个服 务器实现海量标识号码的信息传输, 因此比对模块 50 按照固定顺序一一对服务器进行余 数与静态配额之间的比对, 以得到可响应通信请求的服务器。 例如, 标识号码为 40005, 余数 为 5, 与服务器 1 的静态配额进行比较。 比对模块 50 采用了对静态配额之和取模, 得到的余 数是 [0, 总静态配额 ) 内相对随机的数值, 再按照固定顺序依次比较余数与服务器中的静 态配额的大小, 不会受到服务器数量的影响, 可保证相同的标识号码必然对应着相同的服 务器, 并且是根据静态配额得到相应的服务器, 实现了负载的有效调节。
在比对模块 50 对当前服务器余数与静态配额的比对过程中, 当余数小于静态配 额时, 当前服务器为可应答请求的服务器。 此时, 发起通信请求的标识号码所发送的通信请 求将被当前服务器接收, 并通过该服务器进行响应。
当余数大于静态配额时, 说明当前服务器不是可应答请求的服务器, 因此比对模 块 50 需要按照固定顺序对下一服务器进行静态配额与余数之间的比对大小, 直至找到余 数小于静态配额的服务器为止。
由于设置了多个服务器实现海量标识号码的信息传输, 因此比对模块 50 按照固 定顺序一一对服务器进行余数与静态配额之间的比对, 以得到可响应通信请求的服务器。 采用了对静态配额之和取模, 得到的余数是 [0, 总静态配额 ) 内相对随机的数值, 再按照固 定顺序依次比较余数与服务器中的静态配额的大小, 不会受到服务器数量的影响, 可保证 相同的标识号码必然对应着相同的服务器, 并且是根据静态配额得到相应的服务器, 实现 了负载的有效调节。
另一实施例中, 如图 7 所示, 上述路由系统中还包括了配置模块 70, 该配置模块 70 用于根据服务器的处理能力配置服务器的静态配额。本实施例中, 配置模块 70 配置每一服 务器的静态配额, 该静态配额是根据服务器的处理能力进行量化后得到的, 例如, 每分钟成 功处理的请求数量, 可根据实践经验数据估计得到。由于静态配额是根据服务器的处理能 力配置的服务器的负载, 从而为不同计算能力的服务器分配不同量的请求数, 而不必使用相同性能的服务器, 包容了不同服务器的性能差异。
其他实施例中, 如图 8 所示, 上述路由系统中还包括了探测模块 80 以及屏蔽模块 90。
探测模块 80, 用于进行故障探测, 根据服务器的请求量与应答量动态调整服务器 的动态配额。本实施例中, 探测模块 80 可定时或者随机地对服务器进行故障探测, 例如, 可 每隔 30 秒对服务器进行一次故障探测, 探测模块 80 通过服务器的请求量与应答量来获知 服务器是否处于正常通信状态, 进而通过调整动态配额来体现服务器的通信状态, 即当服 务器不能进行正常通信时, 应答量将远小于请求量, 此时可将动态配额调整到较低的数值, 动态配额反映了每个服务器的故障程度。
屏蔽模块 90, 用于根据动态配额屏蔽故障服务器。 本实施例中, 当服务器发生故障 死机或其请求量已达到动态配额时, 需要屏蔽模块 90 对该服务器进行屏蔽处理, 不能通过 该服务器应答通信请求。屏蔽模块 90 可定时或者随机地执行对故障服务器的屏蔽处理, 例 如, 每一时间间隔便对探测到的故障服务器实施屏蔽。
在一个具体的实施例中, 如图 9 所示, 探测模块 80 包括运算单元 801 以及调整单 元 803。
运算单元 801, 用于发送通信请求至可应答请求的服务器, 并对请求量进行自增运 算, 判断可应答请求的服务器是否应答通信请求, 若是, 则对可应答请求的服务器应答量进 行自增运算。本实施例中, 在确定了标识号码所对应的可应答请求的服务器之后, 发送方 发出的通信请求将被该服务器接收, 此时接收到了通信请求的这一服务器将触发运算单元 801 对请求量的自增运算, 将请求量加 1。
处于正常通信状态的服务器将在接收了通信请求后进行应答, 因此若可应答请求 的服务器没有应答通信请求, 则说明服务器的通信不正常, 可能发生了故障, 若可应答请求 的服务器立即应答了发送方所发出的通信请求, 则说明服务器处理正常的通信状态。当可 应答请求的服务器应答了通信请求时, 触发运算单元 801 对可应答请求的服务器应答量的 自增运算, 将应答量加 1。
调整单元 803, 用于根据请求量及应答量计算每一服务器的应答率, 并由应答率调 整动态配额。本实施例中, 调整单元 803 对每一服务器计算应答率 Q, 即 Q =应答量 / 请求 量 ×100%。为避免整个通信环境的发生较大波动, 根据对应答率的质量要求, 可将应答率 划分成三段, 即设置第一阈值与第二阈值, 其中, 第一阈值小于第二阈值, 当应答率处于 0 至第一阈值之间时, 将动态配额置为 1, 当应答率处于第一阈值至第二阈值之间时, 动态配 额为静态配额 ×(Q- 第一阈值 )/(1- 第一阈值 )+1, 当应答率大于第二阈值时, 将动态配额 置为静态配额。例如, 第一阈值可以是 95%, 第二阈值可以是 99.95%。
在一个具体的实施例中, 如图 10 所示, 屏蔽模块 90 包括处理单元 901 以及判断单 元 903。
处理单元 901, 用于生成随机数, 将随机数与最大随机数相比得到随机比例, 获取 可应答服务器动态配额与静态配额。本实施例中, 处理单元 901 通过随机数生成函数生成 随机数, 随机数生成函数是均匀分配于某个范围内的, 例如 0 到 21 亿, 随机数与该范围内的 最大随机数相之比即为随机比例。
判断单元 903, 用于根据当前服务器的动态配额与静态配额得到配额比例, 并判断配额比例是否大于随机比例, 若否, 则按照固定顺序选择下一服务器后返回配额比例的判 断。本实施例中, 判断单元 903 取可应答请求的服务器动态配额与静态配额之比作为配额 比例。当服务器的性能较佳, 处于正常通信状态时, 动态配额将无限接近静态配额, 进而使 得配额比例将无限接近 100%, 即随机比例小于配额比例是恒成立的, 反之, 当服务器故障 时, 动态配额较低, 但还是由于随机数而存在着响应通信请求的可能性, 并不会简单地将发 生了故障的服务器屏蔽, 故障越严重, 则服务器响应通信请求的可能性就越低, 故障越轻, 则服务器响应通信请求的可能性就越高。
当配额比例小于随机比例时, 当前服务器发生故障且不能对发送方所发出的通信 请求进行响应, 因此按照固定顺序顺移到下一服务器进行判断, 若下一服器中配额比例大 于随机比例, 则通过下一服务器进行应答。 若下一服务器为固定顺序中的末位服务器, 且末 位服务器的配额比例仍然小于随机比例, 则返回固定顺序中置于首位的服务器进行判断。 如果所有服务器中配额比例均小于随机比例, 则提前进行动态配额的调整。当配额比例大 于随机比例时, 说明当前服务器处理正常通信状态, 可对通信请求进行应答。
另一实施例中, 屏蔽模块 90 还用于判断当前服务器中请求量是否达到动态配额, 若是, 则按照固定顺序选择下一服务器后返回判断。 本实施例中, 在对服务器进行屏蔽处理 时, 屏蔽模块 90 还需要考虑该服务器的请求量是否已经达到了动态配额, 如果当前服务器 的请求量已经达到了动态配额, 则不能进行通信请求的应答。 当可应答请求的服务器中请求量达到了动态配额时, 屏蔽模块 90 按照固定顺序 顺移到下一服务器进行判断, 若下一服务器中请求量还未达到动态配额则, 通过下一服务 器对通信请求进行应答。若下一服务器为固定顺序中的末位服务器, 且末位服务器的请求 量达到动态配额, 则屏蔽模块 90 返回固定顺序中置于首位的服务器进行判断。如果所有服 务器中请求量均达到了相应的动态配额, 则提前进行动态配额的调整。当可应答请求的服 务器请求量还未达到动态配额时, 服务器可对通信请求进行应答。
上述路由系统中, 还包括了恢复模块, 该恢复模块用于根据故障服务器的恢复时 间调整故障服务器的命中概率。本实施例中, 命中概率指的在通信过程中使用某一服务器 进行响应的概率, 即动态配额与总静态配额之比。对发生了故障的服务器屏蔽直接将其动 态配额置为 1, 此时, 该服务器的命中概率非常低, 从而难于恢复到正常通信状态, 因此, 为 恢复发生了故障的服务器, 恢复模块根据恢复时间得到调节系数, 恢复时间越长, 调节系数 也越大, 例如, 若恢复时间为 10 秒, 则调节系数为 0.1%, 若恢复时间为 30 秒, 则调节系数 为 1%, 若恢复时间为 5 分钟, 则调节系数为 5%。将命中概率与调节系数之和作为新的命 中概率。
在总静态配额不变的前提下, 随着命中概率的提高, 服务器接收到了越来越多的 通信请求, 且应答量也在逐渐增多, 进而使得应答率逐渐增大, 最终接近 100%, 以便于在重 新调整动态配额时可以直接恢复到静态配额, 完成整个恢复过程。
下面结合一个具体的实施例来详细阐述上述路由方法及系统的应用过程。 该实施 例中, 为实现即时通信, 每一用户都标识身份的标识号码, 并通过标识号码与其他用户进行 交互。为与 A 用户建立连接并进行消息传递, B 用户发起通信请求, 此时获取模块 10 获取 B 用户的标识号码, 取模模块 30 将标识号码对所有服务器的总静态配额取模得到余数, 如 图 11 所示, 比对模块 50 按照服务器的固定顺序 S1、 S2 和 S3 依次对每一服务器进行余数与
静态配额的比较, 此时余数小于服务器 S1 的静态配额时, 则该服务器 S1 为可应答请求的服 务器, 当余数大于静态配额时, 将余数与静态配额相减后进入下一服务器 S2 继续进行余数 与静态配额的大小比较, 直到找到余数小球静态配额的服务器作为可应答请求的服务器为 止。
为保证通信的稳定性, 还通过定时或者随机的方式对服务器进行故障探测, 在比 对模块 50 所确定的可应答请求的服务器 S1 中, 服务器 S1 接收用户 B 发出的通信请求, 运 算单元 801 对请求量进行自增运算, 并判断服务器 S1 是否成功应答了通论请求, 若是, 则对 服务器 S1 的应答量进行自增运算, 若否, 则不执行应答量的自增运算。调整单元 803 计算 应答率并通过应答率对所有服务器的动态配额进行调整。 动态配额小的服务器极可以发生 了故障, 不能进行正常的通信。
在调整了所有服务器的动态配额后, 需要对发生了故障的服务器进行屏蔽。屏蔽 模块 90 中的处理单元 901 生成随机数, 将随机数与最大随机数相比得到随机比例。判断单 元 903 取动态配额与静态配额之比得到配额比例, 比较配额比例与随机比例的大小, 当配 额比例大于随机比例时, 说明服务器 S1 没有发生故障, 可进行通信, 当配额比例小于随机 比例, 则计算服务器 S2 的配额比例, 并与随机比例进行比较。 配额比例大于随机比例的服务器 S1 还需要判断其请求量是否已经达到了动态配 额, 由图 11 可知, 服务器 S1 的请求量为 9990, 动态配额为 10000, 请求量小于动态配额, 屏 蔽模块 90 不需要对服务器 S1 进行屏蔽处理。此时处于正常通信状态的服务器 S1 可将用 户 B 所发送的消息传递到用户 A 中, 实现即时通信。
上述路由方法及路由系统中, 通过对总静态配额取模得到的余数与服务器的静态 配额比较大小, 以确定可对通信请求进行应答的服务器, 不需要将海量的用户标识号码与 服务器进行手工配置, 并且保证了同一标识号码将使用相同的服务器进行通信, 有效地简 化了配置过程, 由于静态配额是与服务器的处理能力相对应的, 因此, 上述路由方法及系统 在实现负载均衡的前提下, 能够包容不同性能的服务器, 有效利用计算资源。
上述路由方法及系统进行故障探测以调整服务器的动态配额, 并根据动态配额屏 蔽发生了故障的服务器, 增强了通信过程的自动容灾能力以及稳定性。
以上所述实施例仅表达了本发明的几种实施方式, 其描述较为具体和详细, 但并 不能因此而理解为对本发明专利范围的限制。应当指出的是, 对于本领域的普通技术人员 来说, 在不脱离本发明构思的前提下, 还可以做出若干变形和改进, 这些都属于本发明的保 护范围。因此, 本发明专利的保护范围应以所附权利要求为准。