CN104618414B - 一种分布式服务的实现方法、服务代理装置及分布式系统 - Google Patents

一种分布式服务的实现方法、服务代理装置及分布式系统 Download PDF

Info

Publication number
CN104618414B
CN104618414B CN201310542799.2A CN201310542799A CN104618414B CN 104618414 B CN104618414 B CN 104618414B CN 201310542799 A CN201310542799 A CN 201310542799A CN 104618414 B CN104618414 B CN 104618414B
Authority
CN
China
Prior art keywords
node
service node
physical services
logical service
logical
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
CN201310542799.2A
Other languages
English (en)
Other versions
CN104618414A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201310542799.2A priority Critical patent/CN104618414B/zh
Publication of CN104618414A publication Critical patent/CN104618414A/zh
Priority to HK15106087.4A priority patent/HK1205605A1/zh
Application granted granted Critical
Publication of CN104618414B publication Critical patent/CN104618414B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Abstract

本申请公开了分布式服务的实现方法、服务代理装置及分布式系统,所述方法包括:接收用户端的服务请求信息;根据所述用户端标识码,获取与所述服务请求信息对应的逻辑服务节点的信息;根据与所述逻辑服务节点对应的物理服务节点的物理地址,查询得到一物理服务节点,将所述服务请求信息,以及所述逻辑服务节点对应的物理服务节点的通用唯一识别码发送至查询得到的物理服务节点,使得查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,执行与所述服务请求信息对应的服务。本发明物理服务节点可以灵活变更同时可以保证写的串行化。

Description

一种分布式服务的实现方法、服务代理装置及分布式系统
技术领域
本申请涉及计算机技术领域,具体涉及一种分布式服务的实现方法、服务代理装置及分布式系统。
背景技术
随着计算机技术的发展,可以将很多计算机组合成为一个分布式系统,通过分布式系统为用户提供更好的服务。目前,分布式系统对外提供的服务有二类,一类是服务节点物理上有状态的,即某类服务请求会被分配到固定的物理计算机进行处理,另一类是服务节点物理上无状态,即某类服务请求会被随机分配到不同的物理机器进行处理。
然而,服务节点物理上有状态这类服务,一旦为某类服务请求服务的固定的物理计算机出现故障,进行物理上的更换或修复耗时较长,会影响某类服务请求的实现。服务节点物理上无状态这类服务,会因系统抖动等原因导致某类服务请求被多台计算机重复处理,当该某类服务请求有写数据操作时,可能会造成数据不一致或写坏数据。
发明内容
本申请所要解决的技术问题在于提供一种分布式服务的实现方法、服务代理装置及分布式系统,通过根据服务请求信息中携带的用户端标识码,获取与该服务请求信息对应的逻辑服务节点的信息,根据与逻辑服务节点对应的物理服务节点的物理地址,查询得到物理服务节点,通过逻辑服务节点实现了物理服务节点与服务请求的解耦,使服务请求与逻辑服务节点之间是有状态的,服务请求会被分发到固定的逻辑服务节点,逻辑服务节点与物理服务节点之间是无状态的,物理服务节点可以灵活快速变更,当某服务请求的物理服务节点出现故障时,可以灵活快速地变更为其他物理服务节点,不会影响某服务请求的实现;同时查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,才执行与该服务请求对应的服务,通过通用唯一识别码有效性的验证,避免某服务请求被多个物理服务节点重复处理,保证写的串行化。
为了解决上述问题,本申请公开了一种分布式服务的实现方法,包括:接收用户端的服务请求信息,其中,所述服务请求信息中携带有用户端标识码;根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息;其中,所述逻辑服务节点的信息包括与所述逻辑服务节点对应的物理服务节点的物理地址以及与所述逻辑服务节点对应的物理服务节点的通用唯一识别码;根据所述物理地址查询得到一物理服务节点,将所述服务请求信息以及所述通用唯一识别码发送至查询得到的物理服务节点;在确定所述查询得到的物理服务节点自身的通用唯一识别码与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,执行与所述服务请求信息对应的服务。
进一步地,接收用户端的服务请求信息之前,所述方法还包括:根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点;其中,总的物理服务节点的个数大于总的逻辑服务节点的个数;根据每个逻辑服务节点及其对应的物理服务节点,建立节点信息列表,其中,所述节点信息列表中包括每个逻辑服务节点的信息;将所述节点信息列表中每个逻辑服务节点的信息,分别发送至与每个逻辑服务节点对应的物理服务节点。
进一步地,建立节点信息列表之后,所述方法还包括:获取所述节点信息列表;根据所述节点信息列表中包括的每个逻辑服务节点的信息,建立与每个逻辑服务节点对应的槽;其中,每个槽的名称与其对应的逻辑服务节点的名称相同,总的槽的个数与总的逻辑服务节点的个数相同;将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中。
进一步地,将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中之后,所述方法还包括:当所述节点信息列表变更后,更新槽和/或槽中存储的逻辑服务节点的信息。
进一步地,当逻辑服务节点的名称为顺序号,槽的名称为顺序号时,根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息,包括:利用预设的哈希函数对所述用户端标识码进行哈希运算,得到哈希值;将所述哈希值对总的槽的个数的取模运算结果,作为槽的顺序号,所述槽的顺序号对应的槽中存储的逻辑服务节点的信息为与所述服务请求信息对应的逻辑服务节点的信息;从所述槽的顺序号对应的槽中,读取得到与所述服务请求信息对应的逻辑服务节点的信息。
进一步地,根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点,包括:根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点;或,根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点,包括:根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动,使得选取并启动的物理服务节点向本地发送节点名称获取信息;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;接收所述节点名称获取信息,并根据所述节点名称获取信息,将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
进一步地,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点之后还包括:监测与每个逻辑服务节点对应的物理服务节点的状态;根据与某个逻辑服务节点对应的物理服务节点的状态,确定是否更换与所述某个逻辑服务节点对应的物理服务节点;如果确定更换与所述某个逻辑服务节点对应的物理服务节点,则从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与所述某个逻辑服务节点对应的物理服务节点。
进一步地,从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与所述某个逻辑服务节点对应的物理服务节点之后,还包括:对所述节点信息列表中所述某个逻辑服务节点的信息进行更新。
进一步地,对所述节点信息列表中所述某个逻辑服务节点的信息进行更新之后,还包括:将更新后的所述某个逻辑服务节点的信息发送至与所述某个逻辑服务节点对应的物理服务节点中。
为了解决上述问题,本申请还公开了一种服务代理装置,包括:接收单元,用于接收用户端的服务请求信息,其中,所述服务请求信息中携带有用户端标识码;第一获取单元,用于根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息;其中,所述逻辑服务节点的信息包括与所述逻辑服务节点对应的物理服务节点的物理地址以及与所述逻辑服务节点对应的物理服务节点的通用唯一识别码;处理单元,用于根据所述物理地址查询得到一物理服务节点,将所述服务请求信息以及所述通用唯一识别码发送至查询得到的物理服务节点,以使所述查询得到的物理服务节点在确定其自身的通用唯一识别码与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,执行与所述服务请求信息对应的服务。
进一步地,还包括:第三获取单元,用于获取节点信息列表,所述节点信息列表根据每个逻辑服务节点及其对应的物理服务节点建立,所述节点信息列表中包括每个逻辑服务节点的信息;第二建立单元,用于根据所述节点信息列表中包括的每个逻辑服务节点的信息,建立与每个逻辑服务节点对应的槽;其中,每个槽的名称与其对应的逻辑服务节点的名称相同,总的槽的个数与总的逻辑服务节点的个数相同;存储单元,用于将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中。
进一步地,还包括:第一更新单元,用于当所述节点信息列表变更后,更新槽和/或槽中存储的逻辑服务节点的信息。
进一步地,当逻辑服务节点的名称为顺序号,槽的名称为顺序号时,所述第一获取单元包括:哈希运算子单元,用于利用预设的哈希函数对所述用户端标识码进行哈希运算,得到哈希值;顺序号获取子单元,用于将所述哈希值对总的槽的个数的取模运算结果,作为槽的顺序号,所述槽的顺序号对应的槽中存储的逻辑服务节点的信息为与所述服务请求信息对应的逻辑服务节点的信息;读取子单元,用于从所述槽的顺序号对应的槽中,读取得到与所述服务请求信息对应的逻辑服务节点的信息。
为了解决上述问题,本申请还公开了一种分布式系统,包括:服务代理装置和物理服务节点集群,其中,所述服务代理装置包括:如前所述的服务代理装置;所述物理服务节点集群中包括多个物理服务节点,每个物理服务节点中部署有与所述服务请求信息对应的服务;所述多个物理服务节点中包括:查询得到的物理服务节点,用于接收所述处理单元发送的与所述逻辑服务节点对应的物理服务节点的通用唯一识别码,确定其自身的通用唯一识别码与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者是否一致,当确定二者一致后,执行与所述服务请求信息对应的服务。
进一步地,还包括:集群管理服务器;所述集群管理服务器包括:第二获取单元,用于根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点;其中,总的物理服务节点的个数大于总的逻辑服务节点的个数;第一建立单元,用于根据每个逻辑服务节点及其对应的物理服务节点,建立节点信息列表,其中,所述节点信息列表中包括每个逻辑服务节点的信息;第一发送单元,用于将所述节点信息列表中每个逻辑服务节点的信息,分别发送至与每个逻辑服务节点对应的物理服务节点。
进一步地,所述第二获取单元包括:第一启动子单元,用于根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;第一分配子单元,用于将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点;或,所述第二获取单元包括:第二启动子单元,用于根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动,使得选取并启动的物理服务节点向本地发送节点名称获取信息;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;第二分配子单元,用于接收所述节点名称获取信息,并根据所述节点名称获取信息,将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
进一步地,所述集群管理服务器还包括:监测单元,用于监测与每个逻辑服务节点对应的物理服务节点的状态;确定单元,用于根据与某个逻辑服务节点对应的物理服务节点的状态,确定是否更换与所述某个逻辑服务节点对应的物理服务节点;替换单元,用于如果所述确定单元确定更换与所述某个逻辑服务节点对应的物理服务节点,则从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与所述某个逻辑服务节点对应的物理服务节点。
进一步地,所述集群管理服务器还包括:第二更新单元,用于在所述替换单元从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点之后,对所述节点信息列表中所述某个逻辑服务节点的信息进行更新。
进一步地,所述集群管理服务器还包括:第二发送单元,用于将更新后的所述某个逻辑服务节点的信息发送至与所述某个逻辑服务节点对应的物理服务节点中。
与现有技术相比,本申请可以获得包括以下技术效果:
通过根据服务请求信息中携带的用户端标识码,获取与该服务请求信息对应的逻辑服务节点的信息,根据与逻辑服务节点对应的物理服务节点的物理地址,查询得到物理服务节点,通过逻辑服务节点实现了物理服务节点与服务请求的解耦,使服务请求与逻辑服务节点之间是有状态的,服务请求会被分发到固定的逻辑服务节点,逻辑服务节点与物理服务节点之间是无状态的,物理服务节点可以灵活快速变更,当某服务请求的物理服务节点出现故障时,可以灵活快速地变更为其他物理服务节点,不会影响某服务请求的实现;同时查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,才执行与该服务请求对应的服务,通过通用唯一识别码有效性的验证,避免某服务请求被多个物理服务节点重复处理,保证写的串行化,解决了某服务请求有写数据操作时,造成数据不一致或是写坏数据的问题。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的一种分布式服务的实现方法流程图;
图2是本申请实施例的另一种分布式服务的实现方法流程图;
图3是本申请实施例的第一种服务代理装置以及分布式系统结构示意图;
图4是本申请实施例的第二种服务代理装置以及分布式系统结构示意图;
图5是本申请实施例的第三种服务代理装置以及分布式系统结构示意图;
图6是本申请实施例的第四种服务代理装置以及分布式系统结构示意图;
图7是本申请实施例的第五种分布式系统结构示意图;
图8是本申请实施例的第六种分布式系统结构示意图;
图9是本申请实施例的第七种分布式系统结构示意图。
具体实施方式
以下将配合图式及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
实施例描述
下面以一实施例对本申请的实现作进一步说明。如图1所示,为本申请实施例的一种分布式服务的实现方法流程图,该方法包括:
S101:接收用户端的服务请求信息,其中,服务请求信息中携带有用户端标识码。
S102:根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息。
所述逻辑服务节点的信息包括与所述逻辑服务节点对应的物理服务节点的物理地址以及与所述逻辑服务节点对应的物理服务节点的通用唯一识别码;
S103:根据所述物理地址查询得到一物理服务节点,将所述服务请求信息以及所述通用唯一识别码发送至查询得到的物理服务节点;
S104:在确定所述查询得到的物理服务节点自身的通用唯一识别码与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,执行与所述服务请求信息对应的服务。
优选地,接收用户端的服务请求信息之前,该方法还包括:
根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点;其中,总的物理服务节点的个数大于总的逻辑服务节点的个数;
根据每个逻辑服务节点及其对应的物理服务节点,建立节点信息列表,其中,节点信息列表中包括每个逻辑服务节点的信息;
将节点信息列表中每个逻辑服务节点的信息,分别发送至与每个逻辑服务节点对应的物理服务节点。
优选地,建立节点信息列表之后还包括:
获取节点信息列表;
根据节点信息列表中包括的每个逻辑服务节点的信息,建立与每个逻辑服务节点对应的槽;其中,每个槽的名称与其对应的逻辑服务节点的名称相同,总的槽的个数与总的逻辑服务节点的个数相同;
将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中。
优选地,将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中之后,该方法还包括:
当节点信息列表变更后,更新槽和/或槽中存储的逻辑服务节点的信息。
优选地,当逻辑服务节点的名称为顺序号,槽的名称为顺序号时,根据用户端标识码,获取与该服务请求信息对应的逻辑服务节点的信息,包括:
利用预设的哈希函数对用户端标识码进行哈希运算,得到哈希值;
将哈希值对总的槽的个数的取模运算结果,作为槽的顺序号,该槽的顺序号对应的槽中存储的逻辑服务节点的信息为与该服务请求信息对应的逻辑服务节点的信息;
从该槽的顺序号对应的槽中,读取得到与该服务请求信息对应的逻辑服务节点的信息。
优选地,根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点,包括:
根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点;
或,根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点,包括:
根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动,使得选取并启动的物理服务节点向本地发送节点名称获取信息;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
接收节点名称获取信息,并根据节点名称获取信息,将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
优选地,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点之后还包括:
监测与每个逻辑服务节点对应的物理服务节点的状态;
根据与某个逻辑服务节点对应的物理服务节点的状态,确定是否更换与某个逻辑服务节点对应的物理服务节点;
如果确定更换与某个逻辑服务节点对应的物理服务节点,则从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点。
优选地,从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点之后,还包括:
对节点信息列表中某个逻辑服务节点的信息进行更新。
优选地,对节点信息列表中某个逻辑服务节点的信息进行更新之后,还包括:
将更新后的某个逻辑服务节点的信息发送至与某个逻辑服务节点对应的物理服务节点中。
本实施例所述的分布式服务的实现方法,通过根据服务请求信息中携带的用户端标识码,获取与该服务请求信息对应的逻辑服务节点的信息,根据与逻辑服务节点对应的物理服务节点的物理地址,查询得到物理服务节点,通过逻辑服务节点实现了物理服务节点与服务请求的解耦,使服务请求与逻辑服务节点之间是有状态的,服务请求会被分发到固定的逻辑服务节点,逻辑服务节点与物理服务节点之间是无状态的,物理服务节点可以灵活快速变更,当某服务请求的物理服务节点出现故障时,可以灵活快速地变更为其他物理服务节点,不会影响某服务请求的实现;同时查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,才执行与该服务请求对应的服务,通过通用唯一识别码有效性的验证,避免某服务请求被多个物理服务节点重复处理,保证写的串行化,解决了某服务请求有写数据操作时,造成数据不一致或是写坏数据的问题。
下面以另一实施例对本申请的实现作进一步说明。如图2所示,为本申请实施例的一种分布式服务的实现方法流程图,该方法包括:
S201:根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点。
其中,总的物理服务节点的个数大于总的逻辑服务节点的个数。物理服务节点可以是计算机等物理设备。
具体地,可以根据实际要执行的服务和实际的物理服务节点的个数,来设置总的逻辑服务节点的个数,对此不做具体限定。
其中,逻辑服务节点的名称可以是顺序号,如总共设置了10个逻辑服务节点,每个逻辑服务节点的名称依次为0、1、2、3...9。逻辑服务节点的名称可以是预设的编号,如101、102、103...110。逻辑服务节点的名称还可以是字母,如A、B、C...J等,对此不做具体限定。
具体地,根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点包括2种方法。
第1种方法:
根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
第2种方法:
根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动,使得选取并启动的物理服务节点向本地发送节点名称获取信息;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
接收节点名称获取信息,并根据节点名称获取信息,将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
即在获取与每个逻辑服务节点对应的物理服务节点时,可以是本地对被启动的物理服务节点进行自动分配名称(第1种方法),也可以是被启动的物理服务节点主动向本地申请注册名称(第2种方法)。
本实施例提供了一种具体的被启动的物理服务节点主动向本地申请注册名称的抢占算法,假设有N个逻辑服务节点(N为自然数),名称为顺序号,具体如下:
S1:物理服务节点被启动时,从本地获取已注册有名称的物理服务节点的个数,判断已注册有名称的物理服务节点的个数是否小于N个,如果小于N个,则执行S2;否则,结束。
具体地,也可以将已注册有名称的物理服务节点的个数设置为已有对应物理服务节点的逻辑服务节点的个数,或可以设置为其他条件,来实现同样的目的,对此不做限定。
S2:物理服务节点生成一个随机数i,其中,i为自然数,i大于等于0,小于等于N-1。
S3:物理服务节点向本地发送携带有i的节点名称获取信息。
其中,携带的i是物理服务节点向本地申请的名称。
S4:物理服务节点接收本地返回的注册应答信息,根据注册应答信息,判断本次注册的结果,如果本次注册的结果是成功,则结束;如果本次注册的结果是失败,则执行S5。
具体地,本地接收到物理服务节点发送的携带有i的节点名称获取信息后,判断i这个名称是否已经分配给了其他的物理服务节点,如果没有分配给其他的物理服务节点,则将i这个名称分配给当前申请的物理服务节点,并通知当前申请的物理服务节点其申请名称成功。如果本次注册的结果是失败,失败的原因可能是i这个名称已经分配给了其他的物理服务节点,或本地出现系统异常等。
S5:物理服务节点判断申请注册的次数是否小于预设的申请次数阈值M,如果小于M,则执行S6;否则,结束。
其中,预设的申请次数阈值M是个经验数值,M小于等于N,根据经验在物理服务节点申请M次后,应该能申请到名称。
S6:物理服务节点判断随机数i是否小于N-1,如果小于N-1,则执行S7;否则,执行S8。
S7:物理服务节点将随机数i加一,然后执行S3。
S8:物理服务节点将随机数i设为0,然后执行S3。
具体地,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点之后还包括:
监测与每个逻辑服务节点对应的物理服务节点的状态;
根据与某个逻辑服务节点对应的物理服务节点的状态,确定是否更换与某个逻辑服务节点对应的物理服务节点;
如果确定更换与某个逻辑服务节点对应的物理服务节点,则从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点。
S202:根据每个逻辑服务节点及其对应的物理服务节点,建立节点信息列表,并将节点信息列表中每个逻辑服务节点的信息,分别发送至与每个逻辑服务节点对应的物理服务节点。
其中,节点信息列表中包括每个逻辑服务节点的信息。每个逻辑服务节点的信息包括该个逻辑服务节点的名称、与该个逻辑服务节点对应的物理服务节点的物理地址,以及与该个逻辑服务节点对应的物理服务节点的通用唯一识别码。
具体地,节点信息列表中包括的每个逻辑服务节点的信息以目录的形式保存,并且通过锁机制保证同一目录下逻辑服务节点名称的唯一性。
具体地,建立节点信息列表之后,为了便于获取节点信息列表中每个逻辑服务节点的信息,可以通过以下方法对节点信息列表中每个逻辑服务节点的信息进行存储:
根据节点信息列表中包括的每个逻辑服务节点的信息,建立与每个逻辑服务节点对应的槽;其中,每个槽的名称与其对应的逻辑服务节点的名称相同,总的槽的个数与总的逻辑服务节点的个数相同;
将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中。
具体地,将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中之后,还包括:
当节点信息列表变更后,更新槽和/或槽中存储的逻辑服务节点的信息。
具体地,节点信息列表变更包括逻辑服务节点的个数变更(如增加新的逻辑服务节点等),和/或某个逻辑服务节点的信息变更等。如果是逻辑服务节点的个数变更,则更新槽(如增加新的槽等);和/或如果是某个逻辑服务节点的信息变更,则更新某个逻辑服务节点对应的槽中存储的逻辑服务节点的信息。
具体地当步骤S201中执行了“从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点”之后,步骤S202还包括:
对节点信息列表中某个逻辑服务节点的信息进行更新。
具体地,对节点信息列表中某个逻辑服务节点的信息进行更新之后,还包括:
将更新后的某个逻辑服务节点的信息发送至与某个逻辑服务节点对应的物理服务节点中。
S203:接收用户端的服务请求信息,其中,服务请求信息中携带有用户端标识码。
其中,用户端标识码是用来区分用户的标识,为了使得同一类型的用户可以通过同一逻辑服务节点为他们服务,同一类型的用户可以使用相同的用户端标识码。例如:有多个公司的员工信息,要想让一个公司的员工信息都集中在某个逻辑服务节点进行处理,则可以用公司的唯一标识作为每个员工的用户端标识码。
S204:根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息。
逻辑服务节点的信息包括与逻辑服务节点对应的物理服务节点的物理地址以及与逻辑服务节点对应的物理服务节点的通用唯一识别码。
具体地,当每个逻辑服务节点的信息通过槽的方式存储,逻辑服务节点的名称为顺序号,槽的名称为顺序号时,根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息,包括:
利用预设的哈希函数对用户端标识码进行哈希运算,得到哈希值;
将哈希值对总的槽的个数的取模运算结果,作为槽的顺序号,该槽的顺序号对应的槽中存储的逻辑服务节点的信息为与该服务请求信息对应的逻辑服务节点的信息;
从该槽的顺序号对应的槽中,读取得到与该服务请求信息对应的逻辑服务节点的信息。
需要说明的是,并不限于通过槽的形式存储每个逻辑服务节点的信息,还可以通过其他形式进行存储,如可以根据用户端标识码,建立用户端标识码与逻辑服务节点的信息之间的对应关系表,将每类用户端标识码与每个逻辑服务节点的信息以列表的形式进行保存,当执行S204,可以根据用户端标识码,查询用户端标识码与逻辑服务节点的信息之间的对应关系表,获取与该服务请求信息对应的逻辑服务节点的信息。还可以通过其他任何可行的实现方式,对此不做具体限定。
S205:根据所述物理地址查询得到一物理服务节点,将所述服务请求信息以及所述通用唯一识别码发送至查询得到的物理服务节点。
S206:查询得到的物理服务节点在确定所述查询得到的物理服务节点自身的通用唯一识别码与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,执行与所述服务请求信息对应的服务。
具体地,查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,执行与该服务请求信息对应的服务。查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者不一致后,向本地返回请求失败的通知,使得本地可以重新发送服务请求信息;当然,本地是否重新发送服务请求信息这个由本地客户端根据一定规则或者自身的业务性质来决定。
本实施例所述的分布式服务的实现方法,通过根据服务请求信息中携带的用户端标识码,获取与该服务请求信息对应的逻辑服务节点的信息,根据与逻辑服务节点对应的物理服务节点的物理地址,查询得到物理服务节点,通过逻辑服务节点实现了物理服务节点与服务请求的解耦,使服务请求与逻辑服务节点之间是有状态的,服务请求会被分发到固定的逻辑服务节点,逻辑服务节点与物理服务节点之间是无状态的,物理服务节点可以灵活快速变更,当某服务请求的物理服务节点出现故障时,可以灵活快速地变更为其他物理服务节点,不会影响某服务请求的实现;同时查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,才执行与该服务请求对应的服务,通过通用唯一识别码有效性的验证,避免某服务请求被多个物理服务节点重复处理,保证写的串行化,解决了某服务请求有写数据操作时,造成数据不一致或是写坏数据的问题。
下面以又一实施例对本申请的实现作进一步说明。如图3所示,为本申请实施例的一种服务代理装置以及分布式系统结构示意图,该分布式系统包括:服务代理装置301和物理服务节点集群501;
服务代理装置301包括:
接收单元301a,用于接收用户端的服务请求信息,其中,服务请求信息中携带有用户端标识码;
第一获取单元301b,用于根据用户端标识码,获取与服务请求信息对应的逻辑服务节点的信息;其中,逻辑服务节点的信息包括逻辑服务节点的名称、与逻辑服务节点对应的物理服务节点的物理地址,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码;
处理单元301c,用于根据与逻辑服务节点对应的物理服务节点的物理地址,查询得到一物理服务节点501a,将服务请求信息,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码发送至查询得到的物理服务节点501a;
其中,物理服务节点集群501中包括多个物理服务节点501a,每个物理服务节点501a中部署有与服务请求信息对应的服务;
多个物理服务节点501a中包括:
查询得到的物理服务节点501a,用于接收处理单元301c发送的与逻辑服务节点对应的物理服务节点的通用唯一识别码,确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者是否一致,当确定二者一致后,执行与服务请求信息对应的服务。
优选地,参见图4,为本申请实施例的一种服务代理装置以及分布式系统结构示意图,该分布式系统包括:服务代理装置301、集群管理服务器401和物理服务节点集群501;服务代理装置301和物理服务节点集群501的结构和功能与图3所示实施例相同,不再赘述。
集群管理服务器401还包括:
第二获取单元401a,用于根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点501a中获取与每个逻辑服务节点对应的物理服务节点501a;其中,总的物理服务节点501a的个数大于总的逻辑服务节点的个数;
第一建立单元401b,用于根据每个逻辑服务节点及其对应的物理服务节点501a,建立节点信息列表,其中,节点信息列表中包括每个逻辑服务节点的信息;
第一发送单元401c,用于将节点信息列表中每个逻辑服务节点的信息,分别发送至与每个逻辑服务节点对应的物理服务节点501a。
优选地,参见图5,基于图4所示的实施例,服务代理装置301还包括:
第三获取单元301d,用于获取节点信息列表;
第二建立单元301e,用于根据节点信息列表中包括的每个逻辑服务节点的信息,建立与每个逻辑服务节点对应的槽;其中,每个槽的名称与其对应的逻辑服务节点的名称相同,总的槽的个数与总的逻辑服务节点的个数相同;
存储单元301f,用于将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中。
优选地,参见图6,基于图5所示的实施例,服务代理装置301还包括:
第一更新单元301g,用于当节点信息列表变更后,更新槽和/或槽中存储的逻辑服务节点的信息。
优选地,当逻辑服务节点的名称为顺序号,槽的名称为顺序号时,第一获取单元301b包括:
哈希运算子单元,用于利用预设的哈希函数对用户端标识码进行哈希运算,得到哈希值;
顺序号获取子单元,用于将哈希值对总的槽的个数的取模运算结果,作为槽的顺序号,该槽的顺序号对应的槽中存储的逻辑服务节点的信息为与服务请求信息对应的逻辑服务节点的信息;
读取子单元,用于从该槽的顺序号对应的槽中,读取得到与服务请求信息对应的逻辑服务节点的信息。
优选地,第二获取单元302a包括:
第一启动子单元,用于根据预设的总的逻辑服务节点的个数,从总的物理服务节点501a中选取物理服务节点501a进行启动;其中,选取并启动的物理服务节点501a的个数与预设的总的逻辑服务节点的个数相同;
第一分配子单元,用于将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点501a中的每个物理服务节点501a,得到与每个逻辑服务节点对应的物理服务节点501a;
或,第二获取单元302a包括:
第二启动子单元,用于根据预设的总的逻辑服务节点的个数,从总的物理服务节点501a中选取物理服务节点501a进行启动,使得选取并启动的物理服务节点501a向本地发送节点名称获取信息;其中,选取并启动的物理服务节点501a的个数与预设的总的逻辑服务节点的个数相同;
第二分配子单元,用于接收节点名称获取信息,并根据节点名称获取信息,将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点501a中的每个物理服务节点501a,得到与每个逻辑服务节点对应的物理服务节点501a。
优选地,参见图7,基于图6所示的实施例,集群管理服务器401还包括:
监测单元401d,用于监测与每个逻辑服务节点对应的物理服务节点501a的状态;
确定单元401e,用于根据与某个逻辑服务节点对应的物理服务节点501a的状态,确定是否更换与该某个逻辑服务节点对应的物理服务节点501a;
替换单元401f,用于如果确定单元401e确定更换与该某个逻辑服务节点对应的物理服务节点501a,则从剩余的没有对应逻辑服务节点的物理服务节点501a中选取一物理服务节点501a,用选取的物理服务节点501a替换与该某个逻辑服务节点对应的物理服务节点501a。
优选地,参见图8,基于图7所示的实施例,集群管理服务器401还包括:
第二更新单元401g,用于在替换单元401f从剩余的没有对应逻辑服务节点的物理服务节点501a中选取一物理服务节点501a,用选取的物理服务节点501a替换与某个逻辑服务节点对应的物理服务节点501a之后,对节点信息列表中该某个逻辑服务节点的信息进行更新。
优选地,参见图9,基于图8所示的实施例,集群管理服务器401还包括:
第二发送单元401h,用于将更新后的该某个逻辑服务节点的信息发送至与该某个逻辑服务节点对应的物理服务节点501a中。
本实施例所述的分布式系统,通过根据服务请求信息中携带的用户端标识码,获取与该服务请求信息对应的逻辑服务节点的信息,根据与逻辑服务节点对应的物理服务节点的物理地址,查询得到物理服务节点,通过逻辑服务节点实现了物理服务节点与服务请求的解耦,使服务请求与逻辑服务节点之间是有状态的,服务请求会被分发到固定的逻辑服务节点,逻辑服务节点与物理服务节点之间是无状态的,物理服务节点可以灵活快速变更,当某服务请求的物理服务节点出现故障时,可以灵活快速地变更为其他物理服务节点,不会影响某服务请求的实现;同时查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,才执行与该服务请求对应的服务,通过通用唯一识别码有效性的验证,避免某服务请求被多个物理服务节点重复处理,保证写的串行化,解决了某服务请求有写数据操作时,造成数据不一致或是写坏数据的问题。
所述系统与前述的方法流程描述对应,不足之处参考上述方法流程的叙述,不再一一赘述。
需要说明的是,本实施例的分布式服务的实现方法、服务代理装置及分布式系统可以应用在各种大型的分布式应用中,下面是其在邮箱产品和即时通讯软件中的应用实例,当然,本申请并不限于此。
在邮箱产品中的应用实例
本实施例的分布式服务的实现方法、服务代理装置及分布式系统可以用在邮箱产品中的智能推荐、邮件搜索、联系人搜索等功能模块,下面以智能推荐为例说明其具体应用和实现流程。
智能推荐是根据用户的历史收发邮件、联系人通讯录等信息建立用户检索库,在用户进行邮件搜索时根据用户的输入进行联想,推送给用户最可能感兴趣的词条,帮助用户更友好的进行检索。智能推荐是基于用户自己的历史数据进行推荐,需要为每个用户构建对应的用户检索库,在邮箱系统中为提高智能推荐的响应速度,将每个用户对应的用户检索库构建为一个检索库文件,存储于分布式文件系统中。该检索库文件构建的最重要特征是增量式构建,用户每收到一封新邮件就会对该封新邮件进行解析,将其加入用户检索库中,并会修改原来的检索库文件。
这样增量式的构建就需要保证写的串行化,否则一旦网络抖动,导致对用户检索库文件的写操作被分配到多台服务器同时进行写入,就会写坏数据或造成数据不一致,响应正常的推荐功能。
利用本实施例的方法和系统,在构建用户的检索库文件时,根据用户的用户端标识码获得其对应的逻辑服务节点的信息,根据逻辑服务节点的信息,得到物理服务节点,若出现物理服务节点变更时,通过通用唯一识别码uuid的验证机制,保证不会出现写的并行,可以避免网络抖动,导致的对用户检索库文件的写操作被分配到多台服务器同时进行写入,写坏数据或造成数据不一致,响应正常的推荐功能的问题的发生。
下面以智能推荐中构建用户的检索库为例,说明一下具体应用,具体实现过程如下:
1、服务代理装置接收用户收到新的邮件的提示信息;其中,用户收到新的邮件的提示信息中携带有用户端标识码。
2、服务代理装置根据用户端标识码获取与该提示信息对应的逻辑服务节点,并进一步获取逻辑服务节点的信息;其中,逻辑服务节点的信息包括与逻辑服务节点对应的物理服务节点的物理地址以及与逻辑服务节点对应的物理服务节点的通用唯一识别码。
3、服务代理装置根据物理地址查询得到一物理服务节点,将该提示信息以及通用唯一识别码发送至查询得到的物理服务节点;
4、查询得到的物理服务节点在确定查询得到的物理服务节点自身的通用唯一识别码与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,解析该新的邮件,根据解析结果,将该新的邮件保存到该用户检索库中相应的位置。
下面以智能推荐中利用用户的检索库为用户推荐词条为例,说明一下具体应用,具体实现过程如下:
1、服务代理装置接收用户通过邮箱产品输入的检索信息,其中,用户输入的检索信息中携带有用户端标识码。
2、服务代理装置根据用户端标识码获取与该检索信息对应的逻辑服务节点,并进一步获取逻辑服务节点的信息;其中,逻辑服务节点的信息包括与逻辑服务节点对应的物理服务节点的物理地址以及与逻辑服务节点对应的物理服务节点的通用唯一识别码。
3、服务代理装置根据物理地址查询得到一物理服务节点,将该检索信息以及通用唯一识别码发送至查询得到的物理服务节点。
4、查询得到的物理服务节点在确定查询得到的物理服务节点自身的通用唯一识别码与逻辑服务节点对应的物理服务节点的通用唯一识别码二者不一致,说明可能因为硬件假死、网络中断、网络抖动等导致物理服务节点发生了变化,此时物理服务节点返回失败信息给本地邮箱产品,本地邮箱产品根据策略自动重新发送检索信息给服务代理装置,其中,用户输入的检索信息中携带有用户端标识码。
5、服务代理装置根据用户端标识码获取与该检索信息对应的逻辑服务节点,并进一步获取逻辑服务节点的信息;其中,逻辑服务节点的信息包括与逻辑服务节点对应的物理服务节点的物理地址以及与逻辑服务节点对应的物理服务节点的通用唯一识别码。
6、服务代理装置根据物理地址查询得到一物理服务节点,将该检索信息以及通用唯一识别码发送至查询得到的物理服务节点。
7、查询得到的物理服务节点在确定查询得到的物理服务节点自身的通用唯一识别码与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,物理服务节点从该用户检索库中获取与该检索信息相应的数据,将获取的与该检索信息相应的数据推送给该用户使用的邮箱产品。
在即时通讯软件中的应用实例
即时通讯软件的用户规模是很大的,一般即时通讯软件整体的服务架构是将用户进行静态分组,根据用户ID将用户分为固定的组群,然后将这些组群分布到固定的服务器,每台服务器服务的用户基本是固定的,每个用户处于哪台服务器也基本是不变的。通过这种物理上的划分,将用户分散于服务器集群中。通过这样的划分可以针对用户规模的增长不断增加服务机器,而且每个用户由固定服务器处理,不会出现并行写的问题。
然而因为用户规模大、服务能力要求高,而单台机器的处理能力是有限的,所以必须会做用户服务请求的分发。而且,通过上面的描述可以看出,本实施例中的方法和系统适合即时通讯软件的需求。第一,不需要静态分组,用户动态的进行分发,可以让服务压力更加均匀的分散于服务器集群。第二,对于只读请求,物理服务器可以更加灵活的变更,不是固定的分配。第三,即时通讯软件对用户个人的一些信息在写入时也是要求写串行的。
下面以在即时通讯软件中搜索好友为例,说明一下具体应用,具体实现过程如下:
1、服务代理装置接收用户通过即时通讯软件输入的好友搜索信息,其中,用户输入的好友搜索中携带有用户端标识码。
2、服务代理装置根据用户端标识码获取与该好友搜索信息对应的逻辑服务节点,并进一步获取逻辑服务节点的信息;其中,逻辑服务节点的信息包括与逻辑服务节点对应的物理服务节点的物理地址以及与逻辑服务节点对应的物理服务节点的通用唯一识别码。
3、服务代理装置根据物理地址查询得到一物理服务节点,将该好友搜索信息以及通用唯一识别码发送至查询得到的物理服务节点。
4、查询得到的物理服务节点在确定查询得到的物理服务节点自身的通用唯一识别码与逻辑服务节点对应的物理服务节点的通用唯一识别码二者不一致,说明可能因为硬件假死、网络中断、网络抖动等导致物理服务节点发生了变化,此时物理服务节点返回失败信息给即时通讯软件,即时通讯软件向用户提示好友搜索失败。
5、服务代理装置接收用户通过即时通讯软件再次输入的好友搜索信息,其中,用户输入的好友搜索中携带有用户端标识码。
6、服务代理装置根据用户端标识码获取与该好友搜索信息对应的逻辑服务节点,并进一步获取逻辑服务节点的信息;其中,逻辑服务节点的信息包括与逻辑服务节点对应的物理服务节点的物理地址以及与逻辑服务节点对应的物理服务节点的通用唯一识别码。
7、服务代理装置根据物理地址查询得到一物理服务节点,将该好友搜索信息以及通用唯一识别码发送至查询得到的物理服务节点。
8、查询得到的物理服务节点在确定查询得到的物理服务节点自身的通用唯一识别码与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,物理服务节点获取与该好友搜索信息相应的数据,将获取的与该好友搜索信息相应的数据推送给该即时通讯软件从而展示给用户。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (19)

1.一种分布式服务的实现方法,其特征在于,包括:
接收用户端的服务请求信息,其中,所述服务请求信息中携带有用户端标识码;
根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息;其中,所述逻辑服务节点的信息包括与所述逻辑服务节点对应的物理服务节点的物理地址以及与所述逻辑服务节点对应的物理服务节点的通用唯一识别码;
根据所述物理地址查询得到一物理服务节点,将所述服务请求信息以及所述通用唯一识别码发送至查询得到的物理服务节点;
在确定所述查询得到的物理服务节点自身的通用唯一识别码与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,执行与所述服务请求信息对应的服务。
2.如权利要求1所述的方法,其特征在于,接收用户端的服务请求信息之前,所述方法还包括:
根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点;其中,总的物理服务节点的个数大于总的逻辑服务节点的个数;
根据每个逻辑服务节点及其对应的物理服务节点,建立节点信息列表,其中,所述节点信息列表中包括每个逻辑服务节点的信息;
将所述节点信息列表中每个逻辑服务节点的信息,分别发送至与每个逻辑服务节点对应的物理服务节点。
3.如权利要求2所述的方法,其特征在于,建立节点信息列表之后,所述方法还包括:
获取所述节点信息列表;
根据所述节点信息列表中包括的每个逻辑服务节点的信息,建立与每个逻辑服务节点对应的槽;其中,每个槽的名称与其对应的逻辑服务节点的名称相同,总的槽的个数与总的逻辑服务节点的个数相同;
将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中。
4.如权利要求3所述的方法,其特征在于,将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中之后,所述方法还包括:
当所述节点信息列表变更后,更新槽和/或槽中存储的逻辑服务节点的信息。
5.如权利要求3所述的方法,其特征在于,当逻辑服务节点的名称为顺序号,槽的名称为顺序号时,根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息,包括:
利用预设的哈希函数对所述用户端标识码进行哈希运算,得到哈希值;
将所述哈希值对总的槽的个数的取模运算结果,作为槽的顺序号,所述槽的顺序号对应的槽中存储的逻辑服务节点的信息为与所述服务请求信息对应的逻辑服务节点的信息;
从所述槽的顺序号对应的槽中,读取得到与所述服务请求信息对应的逻辑服务节点的信息。
6.如权利要求2所述的方法,其特征在于,根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点,包括:
根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点;
或,根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点,包括:
根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动,使得选取并启动的物理服务节点向本地发送节点名称获取信息;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
接收所述节点名称获取信息,并根据所述节点名称获取信息,将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
7.如权利要求2-6任一权利要求所述的方法,其特征在于,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点之后还包括:
监测与每个逻辑服务节点对应的物理服务节点的状态;
根据与某个逻辑服务节点对应的物理服务节点的状态,确定是否更换与所述某个逻辑服务节点对应的物理服务节点;
如果确定更换与所述某个逻辑服务节点对应的物理服务节点,则从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与所述某个逻辑服务节点对应的物理服务节点。
8.如权利要求7所述的方法,其特征在于,从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与所述某个逻辑服务节点对应的物理服务节点之后,还包括:
对所述节点信息列表中所述某个逻辑服务节点的信息进行更新。
9.如权利要求8所述的方法,其特征在于,对所述节点信息列表中所述某个逻辑服务节点的信息进行更新之后,还包括:
将更新后的所述某个逻辑服务节点的信息发送至与所述某个逻辑服务节点对应的物理服务节点中。
10.一种服务代理装置,其特征在于,包括:
接收单元,用于接收用户端的服务请求信息,其中,所述服务请求信息中携带有用户端标识码;
第一获取单元,用于根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息;其中,所述逻辑服务节点的信息包括与所述逻辑服务节点对应的物理服务节点的物理地址以及与所述逻辑服务节点对应的物理服务节点的通用唯一识别码;
处理单元,用于根据所述物理地址查询得到一物理服务节点,将所述服务请求信息以及所述通用唯一识别码发送至查询得到的物理服务节点,以使所述查询得到的物理服务节点在确定其自身的通用唯一识别码与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,执行与所述服务请求信息对应的服务。
11.如权利要求10所述的服务代理装置,其特征在于,还包括:
第三获取单元,用于获取节点信息列表,所述节点信息列表根据每个逻辑服务节点及其对应的物理服务节点建立,所述节点信息列表中包括每个逻辑服务节点的信息;
第二建立单元,用于根据所述节点信息列表中包括的每个逻辑服务节点的信息,建立与每个逻辑服务节点对应的槽;其中,每个槽的名称与其对应的逻辑服务节点的名称相同,总的槽的个数与总的逻辑服务节点的个数相同;
存储单元,用于将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中。
12.如权利要求11所述的服务代理装置,其特征在于,还包括:
第一更新单元,用于当所述节点信息列表变更后,更新槽和/或槽中存储的逻辑服务节点的信息。
13.如权利要求11所述的服务代理装置,其特征在于,当逻辑服务节点的名称为顺序号,槽的名称为顺序号时,所述第一获取单元包括:
哈希运算子单元,用于利用预设的哈希函数对所述用户端标识码进行哈希运算,得到哈希值;
顺序号获取子单元,用于将所述哈希值对总的槽的个数的取模运算结果,作为槽的顺序号,所述槽的顺序号对应的槽中存储的逻辑服务节点的信息为与所述服务请求信息对应的逻辑服务节点的信息;
读取子单元,用于从所述槽的顺序号对应的槽中,读取得到与所述服务请求信息对应的逻辑服务节点的信息。
14.一种分布式系统,其特征在于,包括:服务代理装置和物理服务节点集群,其中,
所述服务代理装置包括:如权利要求10-13中任一项所述的服务代理装置;
所述物理服务节点集群中包括多个物理服务节点,每个物理服务节点中部署有与所述服务请求信息对应的服务;
所述多个物理服务节点中包括:
查询得到的物理服务节点,用于接收所述处理单元发送的与所述逻辑服务节点对应的物理服务节点的通用唯一识别码,确定其自身的通用唯一识别码与所述逻辑服务节点对应的物理服务节点的通用唯一识别码二者是否一致,当确定二者一致后,执行与所述服务请求信息对应的服务。
15.如权利要求14所述的系统,其特征在于,还包括:集群管理服务器;
所述集群管理服务器包括:
第二获取单元,用于根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点;其中,总的物理服务节点的个数大于总的逻辑服务节点的个数;
第一建立单元,用于根据每个逻辑服务节点及其对应的物理服务节点,建立节点信息列表,其中,所述节点信息列表中包括每个逻辑服务节点的信息;
第一发送单元,用于将所述节点信息列表中每个逻辑服务节点的信息,分别发送至与每个逻辑服务节点对应的物理服务节点。
16.如权利要求15所述的系统,其特征在于,所述第二获取单元包括:
第一启动子单元,用于根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
第一分配子单元,用于将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点;
或,所述第二获取单元包括:
第二启动子单元,用于根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动,使得选取并启动的物理服务节点向本地发送节点名称获取信息;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
第二分配子单元,用于接收所述节点名称获取信息,并根据所述节点名称获取信息,将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
17.如权利要求15所述的系统,其特征在于,所述集群管理服务器还包括:
监测单元,用于监测与每个逻辑服务节点对应的物理服务节点的状态;
确定单元,用于根据与某个逻辑服务节点对应的物理服务节点的状态,确定是否更换与所述某个逻辑服务节点对应的物理服务节点;
替换单元,用于如果所述确定单元确定更换与所述某个逻辑服务节点对应的物理服务节点,则从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与所述某个逻辑服务节点对应的物理服务节点。
18.如权利要求17所述的系统,其特征在于,所述集群管理服务器还包括:
第二更新单元,用于在所述替换单元从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点之后,对所述节点信息列表中所述某个逻辑服务节点的信息进行更新。
19.如权利要求18所述的系统,其特征在于,所述集群管理服务器还包括:
第二发送单元,用于将更新后的所述某个逻辑服务节点的信息发送至与所述某个逻辑服务节点对应的物理服务节点中。
CN201310542799.2A 2013-11-05 2013-11-05 一种分布式服务的实现方法、服务代理装置及分布式系统 Active CN104618414B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310542799.2A CN104618414B (zh) 2013-11-05 2013-11-05 一种分布式服务的实现方法、服务代理装置及分布式系统
HK15106087.4A HK1205605A1 (zh) 2013-11-05 2015-06-26 種分布式服務的實現方法、服務代理裝置及分布式系統

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310542799.2A CN104618414B (zh) 2013-11-05 2013-11-05 一种分布式服务的实现方法、服务代理装置及分布式系统

Publications (2)

Publication Number Publication Date
CN104618414A CN104618414A (zh) 2015-05-13
CN104618414B true CN104618414B (zh) 2018-05-04

Family

ID=53152689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310542799.2A Active CN104618414B (zh) 2013-11-05 2013-11-05 一种分布式服务的实现方法、服务代理装置及分布式系统

Country Status (2)

Country Link
CN (1) CN104618414B (zh)
HK (1) HK1205605A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108737514A (zh) * 2018-05-04 2018-11-02 南京国电南自轨道交通工程有限公司 一种基于分布式数据库技术的分布式电力实时监控方法
CN109040263B (zh) * 2018-08-10 2022-02-25 北京奇虎科技有限公司 基于分布式系统的业务处理方法及装置
CN110430255A (zh) * 2019-07-31 2019-11-08 阿里巴巴集团控股有限公司 分布式集群中服务请求的处理方法、系统以及电子设备
CN117608861A (zh) * 2024-01-18 2024-02-27 上海芯联芯智能科技有限公司 一种中央处理器cpu装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1882935A (zh) * 2003-12-23 2006-12-20 思科技术公司 向移动节点提供位置特定的服务
CN1906581A (zh) * 2004-09-29 2007-01-31 索尼株式会社 信息处理设备、处理控制方法、以及计算机程序
CN101009859A (zh) * 2006-01-24 2007-08-01 中兴通讯股份有限公司 一种查询服务控制面网元的方法
CN101079901A (zh) * 2006-05-24 2007-11-28 国际商业机器公司 验证客户端请求已被路由传送到适当的服务器的方法和装置
CN102143220A (zh) * 2010-02-02 2011-08-03 国际商业机器公司 通过关联服务器信息来发现物理服务器位置的方法和系统
CN103092697A (zh) * 2010-12-17 2013-05-08 微软公司 用于主存有状态和无状态中间软件组件的多承租人高密度容器服务

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1882935A (zh) * 2003-12-23 2006-12-20 思科技术公司 向移动节点提供位置特定的服务
CN1906581A (zh) * 2004-09-29 2007-01-31 索尼株式会社 信息处理设备、处理控制方法、以及计算机程序
CN101009859A (zh) * 2006-01-24 2007-08-01 中兴通讯股份有限公司 一种查询服务控制面网元的方法
CN101079901A (zh) * 2006-05-24 2007-11-28 国际商业机器公司 验证客户端请求已被路由传送到适当的服务器的方法和装置
CN102143220A (zh) * 2010-02-02 2011-08-03 国际商业机器公司 通过关联服务器信息来发现物理服务器位置的方法和系统
CN103092697A (zh) * 2010-12-17 2013-05-08 微软公司 用于主存有状态和无状态中间软件组件的多承租人高密度容器服务

Also Published As

Publication number Publication date
CN104618414A (zh) 2015-05-13
HK1205605A1 (zh) 2015-12-18

Similar Documents

Publication Publication Date Title
US9298732B2 (en) Searching cloud-based distributed storage resources using a set of expendable probes
CN107395659A (zh) 一种业务受理及共识的方法及装置
US9311135B2 (en) Method for generating universal objects identifiers in distributed multi-purpose storage systems
US11681757B2 (en) Similar email spam detection
EP3311544A1 (en) Managing dynamic ip address assignments
CN108289034B (zh) 一种故障发现方法和装置
US9906477B2 (en) Distributing retained messages information in a clustered publish/subscribe system
CN102769529A (zh) Dnssec签名服务器
Awad et al. Chaotic searchable encryption for mobile cloud storage
CN104618414B (zh) 一种分布式服务的实现方法、服务代理装置及分布式系统
US8706856B2 (en) Service directory
US20120166518A1 (en) Providing state service for online application users
US8176097B2 (en) Maintaining data coherency within related multi-perspective user interfaces via session-less queries
CN113094334B (zh) 基于分布式存储的数字服务方法、装置、设备及储存介质
CN114041134A (zh) 用于基于区块链的安全存储的系统和方法
US10440523B2 (en) Communication control device, communication device, and computer program product for managing a group of devices
US11010493B2 (en) Multiple message retrieval for secure electronic communication
US10511493B1 (en) Apparatus and method for managing digital identities
US11494392B2 (en) Tracking entity activity using computer generation of values for blockchain network entries
CN111428114B (zh) Elasticsearch搜索引擎的索引创建方法及装置
WO2014069034A1 (en) Communication control device, communication device, and computer program product
Li et al. Toward both privacy and efficiency of homomorphic MACs for polynomial functions and its applications
CN107547607B (zh) 一种集群迁移方法及装置
CN107197057A (zh) Dns账本处理方法及装置
Zhou et al. Integrity preserving multi-keyword searchable encryption for cloud computing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1205605

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant