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

文档序号:8301708阅读:来源:国知局
服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点。
[0072]优选地,从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点之后,还包括:
[0073]对节点信息列表中某个逻辑服务节点的信息进行更新。
[0074]优选地,对节点信息列表中某个逻辑服务节点的信息进行更新之后,还包括:
[0075]将更新后的某个逻辑服务节点的信息发送至与某个逻辑服务节点对应的物理服务节点中。
[0076]本实施例所述的分布式服务的实现方法,通过根据服务请求信息中携带的用户端标识码,获取与该服务请求信息对应的逻辑服务节点的信息,根据与逻辑服务节点对应的物理服务节点的物理地址,查询得到物理服务节点,通过逻辑服务节点实现了物理服务节点与服务请求的解耦,使服务请求与逻辑服务节点之间是有状态的,服务请求会被分发到固定的逻辑服务节点,逻辑服务节点与物理服务节点之间是无状态的,物理服务节点可以灵活快速变更,当某服务请求的物理服务节点出现故障时,可以灵活快速地变更为其他物理服务节点,不会影响某服务请求的实现;同时查询得到的物理服务节点在确定其自身的通用唯一识别码,以及与逻辑服务节点对应的物理服务节点的通用唯一识别码二者一致后,才执行与该服务请求对应的服务,通过通用唯一识别码有效性的验证,避免某服务请求被多个物理服务节点重复处理,保证写的串行化,解决了某服务请求有写数据操作时,造成数据不一致或是写坏数据的问题。
[0077]下面以另一实施例对本申请的实现作进一步说明。如图2所示,为本申请实施例的一种分布式服务的实现方法流程图,该方法包括:
[0078]S201:根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点。
[0079]其中,总的物理服务节点的个数大于总的逻辑服务节点的个数。物理服务节点可以是计算机等物理设备。
[0080]具体地,可以根据实际要执行的服务和实际的物理服务节点的个数,来设置总的逻辑服务节点的个数,对此不做具体限定。
[0081]其中,逻辑服务节点的名称可以是顺序号,如总共设置了 10个逻辑服务节点,每个逻辑服务节点的名称依次为0、1、2、3...9。逻辑服务节点的名称可以是预设的编号,如101、102、103...110。逻辑服务节点的名称还可以是字母,如A、B、C...J等,对此不做具体限定。
[0082]具体地,根据预设的总的逻辑服务节点的个数和预设的每个逻辑服务节点的名称,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点包括2种方法。
[0083]第I种方法:
[0084]根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
[0085]将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
[0086]第2种方法:
[0087]根据预设的总的逻辑服务节点的个数,从总的物理服务节点中选取物理服务节点进行启动,使得选取并启动的物理服务节点向本地发送节点名称获取信息;其中,选取并启动的物理服务节点的个数与预设的总的逻辑服务节点的个数相同;
[0088]接收节点名称获取信息,并根据节点名称获取信息,将预设的每个逻辑服务节点的名称,一一对应分配给选取并启动的物理服务节点中的每个物理服务节点,得到与每个逻辑服务节点对应的物理服务节点。
[0089]即在获取与每个逻辑服务节点对应的物理服务节点时,可以是本地对被启动的物理服务节点进行自动分配名称(第I种方法),也可以是被启动的物理服务节点主动向本地申请注册名称(第2种方法)。
[0090]本实施例提供了一种具体的被启动的物理服务节点主动向本地申请注册名称的抢占算法,假设有N个逻辑服务节点(N为自然数),名称为顺序号,具体如下:
[0091]S1:物理服务节点被启动时,从本地获取已注册有名称的物理服务节点的个数,判断已注册有名称的物理服务节点的个数是否小于N个,如果小于N个,则执行S2 ;否则,结束。
[0092]具体地,也可以将已注册有名称的物理服务节点的个数设置为已有对应物理服务节点的逻辑服务节点的个数,或可以设置为其他条件,来实现同样的目的,对此不做限定。
[0093]S2:物理服务节点生成一个随机数i,其中,i为自然数,i大于等于0,小于等于N-1。
[0094]S3:物理服务节点向本地发送携带有i的节点名称获取信息。
[0095]其中,携带的i是物理服务节点向本地申请的名称。
[0096]S4:物理服务节点接收本地返回的注册应答信息,根据注册应答信息,判断本次注册的结果,如果本次注册的结果是成功,则结束;如果本次注册的结果是失败,则执行S5。
[0097]具体地,本地接收到物理服务节点发送的携带有i的节点名称获取信息后,判断i这个名称是否已经分配给了其他的物理服务节点,如果没有分配给其他的物理服务节点,则将i这个名称分配给当前申请的物理服务节点,并通知当前申请的物理服务节点其申请名称成功。如果本次注册的结果是失败,失败的原因可能是i这个名称已经分配给了其他的物理服务节点,或本地出现系统异常等。
[0098]S5:物理服务节点判断申请注册的次数是否小于预设的申请次数阈值M,如果小于M,则执行S6 ;否则,结束。
[0099]其中,预设的申请次数阈值M是个经验数值,M小于等于N,根据经验在物理服务节点申请M次后,应该能申请到名称。
[0100]S6:物理服务节点判断随机数i是否小于N-1,如果小于N-1,则执行S7 ;否则,执行S8。
[0101]S7:物理服务节点将随机数i加一,然后执行S3。
[0102]S8:物理服务节点将随机数i设为0,然后执行S3。
[0103]具体地,从总的物理服务节点中获取与每个逻辑服务节点对应的物理服务节点之后还包括:
[0104]监测与每个逻辑服务节点对应的物理服务节点的状态;
[0105]根据与某个逻辑服务节点对应的物理服务节点的状态,确定是否更换与某个逻辑服务节点对应的物理服务节点;
[0106]如果确定更换与某个逻辑服务节点对应的物理服务节点,则从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点。
[0107]S202:根据每个逻辑服务节点及其对应的物理服务节点,建立节点信息列表,并将节点信息列表中每个逻辑服务节点的信息,分别发送至与每个逻辑服务节点对应的物理服务节点。
[0108]其中,节点信息列表中包括每个逻辑服务节点的信息。每个逻辑服务节点的信息包括该个逻辑服务节点的名称、与该个逻辑服务节点对应的物理服务节点的物理地址,以及与该个逻辑服务节点对应的物理服务节点的通用唯一识别码。
[0109]具体地,节点信息列表中包括的每个逻辑服务节点的信息以目录的形式保存,并且通过锁机制保证同一目录下逻辑服务节点名称的唯一性。
[0110]具体地,建立节点信息列表之后,为了便于获取节点信息列表中每个逻辑服务节点的信息,可以通过以下方法对节点信息列表中每个逻辑服务节点的信息进行存储:
[0111]根据节点信息列表中包括的每个逻辑服务节点的信息,建立与每个逻辑服务节点对应的槽;其中,每个槽的名称与其对应的逻辑服务节点的名称相同,总的槽的个数与总的逻辑服务节点的个数相同;
[0112]将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中。
[0113]具体地,将每个逻辑服务节点的信息分别存储到与每个逻辑服务节点对应的槽中之后,还包括:
[0114]当节点信息列表变更后,更新槽和/或槽中存储的逻辑服务节点的信息。
[0115]具体地,节点信息列表变更包括逻辑服务节点的个数变更(如增加新的逻辑服务节点等),和/或某个逻辑服务节点的信息变更等。如果是逻辑服务节点的个数变更,则更新槽(如增加新的槽等);和/或如果是某个逻辑服务节点的信息变更,则更新某个逻辑服务节点对应的槽中存储的逻辑服务节点的信息。
[0116]具体地当步骤S201中执行了 “从剩余的没有对应逻辑服务节点的物理服务节点中选取一物理服务节点,用选取的物理服务节点替换与某个逻辑服务节点对应的物理服务节点”之后,步骤S202还包括:
[0117]对节点信息列表中某个逻辑服务节点的信息进行更新。
[0118]具体地,对节点信息列表中某个逻辑服务节点的信息进行更新之后,还包括:
[0119]将更新后的某个逻辑服务节点的信息发送至与某个逻辑服务节点对应的物理服务节点中。
[0120]S203:接收用户端的服务请求信息,其中,服务请求信息中携带有用户端标识码。
[0121]其中,用户端标识码是用来区分用户的标识,为了使得同一类型的用户可以通过同一逻辑服务节点为他们服务,同一类型的用户可以使用相同的用户端标识码。例如:有多个公司的员工信息,要想让一个公司的员工信息都集中在某个逻辑服务节点进行处理,则可以用公司的唯一标识作为每个员工的用户端标识码。
[0122]S204:根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息。
[0123]逻辑服务节点的信息包括与逻辑服务节点对应的物理服务节点的物理地址以及与逻辑服务节点对应的物理服务节点的通用唯一识别码。
[0124]具体地,当每个逻辑服务节点的信息通过槽的方式存储,逻辑服务节点的名称为顺序号,槽的名称为顺序号时,根据所述用户端标识码获取与所述服务请求信息对应的逻辑服务节点,并进一步获取所述逻辑服务节点的信息,包括:
[0125]利用预设的哈希函
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1