本技术实施例涉及分布式,尤其涉及一种服务调用方法、设备、存储介质及程序产品。
背景技术:
1、在分布式系统中,服务注册与发现、服务间通信等是非常重要的环节。
2、相关技术中,分布系统中设置有多个服务和注册中心,为了实现服务之间的通信,服务提供方在启动时将服务实例注册到注册中心中,服务发起方需要进行服务提供方的服务调用时,则从注册中心中查询并获取包含至少一个服务实例的服务列表。
3、然而,实现本技术过程中,发明人发现现有技术中至少存在如下问题:上述方式中严重依赖服务注册中心,当服务注册中心故障或者服务请求方与注册中心网络异常、或者服务接收方与注册中心网络异常导致服务下线时,上述方式无法进行有效处理。
技术实现思路
1、本技术实施例提供一种服务调用方法、设备、存储介质及程序产品,以提高服务调用的有效性。
2、第一方面,本技术实施例提供一种服务调用方法,包括:
3、获取服务请求;对所述服务请求进行解析获得服务标识;所述服务标识为服务提供方的唯一标识;
4、若从注册中心未获取到所述服务请求对应的服务列表,则根据所述服务标识向服务标识注册服务器发送地址查询请求,以使所述服务标识注册服务器根据所述地址查询请求返回所述服务标识对应的负载地址;所述服务标识注册服务器用于建立服务标识和负载地址之间的一一对应关系;所述负载地址为对应的负载绑定服务器的地址;
5、将所述服务请求发送至所述负载地址对应的负载绑定服务器,以通过所述负载绑定服务器基于第一负载均衡策略将所述服务请求发送至所述负载绑定服务器绑定的多个服务实例中的第一目标服务实例,以使所述第一目标服务实例对所述服务请求进行处理;所述负载绑定服务器用于将对应的服务提供方的多个服务实例的地址与所述负载绑定服务器的地址进行绑定。
6、在一种可能的设计中,若所述服务标识包括服务提供方对应的服务域名;所述根据所述服务标识向服务标识注册服务器发送地址查询请求,以使所述服务标识注册服务器根据所述地址查询请求返回所述服务标识对应的负载地址;所述服务标识注册服务器用于建立服务标识和负载地址之间的一一对应关系,包括:
7、根据所述服务域名从服务标识注册服务器获取所述服务域名对应的负载地址;所述服务标识注册服务器用于建立服务域名和负载地址之间的一一对应关系。
8、在一种可能的设计中,若所述服务标识包括所述服务提供方对应的端口和服务域名;所述根据所述服务标识向服务标识注册服务器发送地址查询请求,以使所述服务标识注册服务器根据所述地址查询请求返回所述服务标识对应的负载地址;所述服务标识注册服务器用于建立服务标识和负载地址之间的一一对应关系,包括:
9、根据所述服务域名和所述端口从服务标识注册服务器获取所述服务域名和所述端口对应的负载地址,所述服务标识注册服务器用于建立服务域名和端口构成的组合与负载地址之间的一一对应关系。
10、在一种可能的设计中,所述服务标识包括服务域名,所述对所述服务请求进行解析获得服务标识,包括:
11、通过请求信息封装器将所述服务请求的相关信息加入对应的上下文对象中;
12、若所述上下文对象中不包括服务域名,且包括服务名,则基于预设规则,根据服务名构建服务域名;
13、若所述上下文对象中包括服务域名,则从所述上下文对象中获取所述服务域名。
14、在一种可能的设计中,所述根据所述服务标识向服务标识注册服务器发送地址查询请求,以使所述服务标识注册服务器根据所述地址查询请求返回所述服务标识对应的负载地址,包括:
15、根据所述服务标识构造虚拟服务实例;
16、基于所述虚拟服务实例,进行服务请求发起处理;
17、在服务请求发起处理过程中,根据所述服务标识向服务标识注册服务器发送地址查询请求,以使所述服务标识注册服务器根据所述地址查询请求返回所述服务标识对应的负载地址。
18、在一种可能的设计中,所述获取服务发起方发起的服务请求之后,还包括:
19、对所述服务请求进行解析获得地址信息;所述地址信息包括以下中至少一项服务提供方对应的负载地址、服务提供方所提供的服务实例的地址;
20、若从注册中心未获取到所述服务请求对应的服务列表,则根据所述地址信息确定第三目标服务实例,将所述服务请求发送给所述第三目标服务实例,以使所述第三目标服务实例对所述服务请求进行处理。
21、在一种可能的设计中,所述根据所述地址信息确定第三目标服务实例,包括:
22、若所述地址信息包括服务提供方对应的负载地址,则将所述服务请求发送至所述负载地址对应的负载绑定服务器,以通过所述负载绑定服务器基于第一负载均衡策略确定第三目标服务实例;
23、若所述地址信息包括服务提供方所提供的服务实例的地址,则将所述地址对应的服务实例确定为第三目标服务实例。
24、在一种可能的设计中,所述方法还包括:
25、根据所述服务标识向所述注册中心发送查询请求;
26、接收所述注册中心根据所述查询请求返回的服务列表;所述服务列表包括所述服务标识对应的服务提供方所提供的至少一个服务实例;
27、基于第二负载均衡策略从所述服务列表中确定第二目标服务实例;
28、将所述服务请求发送给所述第二目标服务实例,以使所述第二目标服务实例对所述服务请求进行处理。
29、在一种可能的设计中,所述基于第二负载均衡策略从所述服务列表中确定第二目标服务实例,包括:
30、若服务列表中的服务实例的数量大于1,则获取上一位置索引,根据所述上一位置索引对所述服务列表的长度取模,获得当前位置索引;
31、根据所述当前位置索引,从所述服务列表中确定第二目标服务实例。
32、第二方面,本技术实施例提供一种服务调用方法,包括:
33、接收服务发起方在从注册中心未获取到所述服务请求对应的服务列表时,根据所述服务标识发送的地址查询请求;所述服务标识服务发起方对获取的服务请求进行解析获得的;所述服务标识为服务提供方的唯一标识;
34、根据所述地址查询请求确定所述服务标识对应的负载地址;
35、将所述负载地址发送给所述服务发起方,以使所述服务发起方将所述服务请求发送至所述负载地址对应的负载绑定服务器,通过所述负载绑定服务器基于第一负载均衡策略将所述服务请求发送至所述负载绑定服务器绑定的多个服务实例中的第一目标服务实例,以使所述第一目标服务实例对所述服务请求进行处理;所述负载绑定服务器用于将对应的服务提供方的多个服务实例的地址与所述负载绑定服务器的地址进行绑定。
36、在一种可能的设计中,所述接收服务发起方根据所述服务标识发送的地址查询请求之前,还包括:
37、接收服务提供方对应的负载绑定服务器发送的注册请求;所述注册请求包括所述负载绑定服务器对应的负载地址和服务提供方对应的服务标识;
38、根据所述注册请求,建立服务提供方对应的服务标识和所述负载地址之间的对应关系。
39、在一种可能的设计中,所述接收服务发起方根据所述服务标识发送的地址查询请求之前,还包括:
40、响应作用于注册界面的触控操作,生成注册请求;所述注册请求包括所述负载绑定服务器对应的负载地址和服务提供方对应的服务标识;
41、根据所述注册请求,建立服务提供方对应的服务标识和所述负载地址之间的对应关系。
42、第三方面,本技术实施例提供一种服务调用设备,包括:
43、接收服务发起方基于负载地址发送的服务请求;所述负载地址是服务发起方在从注册中心未获取到所述服务请求对应的服务列表时,根据服务标识从服务标识注册服务器获取的;所述服务标识是服务发起方对获取的服务请求进行解析获得的;从所述负载地址是为对应的负载绑定服务器的地址
44、基于第一负载均衡策略将所述服务请求发送至所述负载绑定服务器绑定的多个服务实例中的第一目标服务实例,以使所述第一目标服务实例对所述服务请求进行处理;所述负载绑定服务器用于将对应的服务提供方的多个服务实例的地址与所述负载绑定服务器的地址进行绑定。
45、在一种可能的设计中,所述接收服务发起方基于负载地址发送的服务请求之前,还包括:
46、接收服务提供方发送的绑定请求;所述绑定请求包括所述服务提供方所提供的多个服务实例的地址;
47、根据所述绑定请求,将服务提供方所提供的多个服务实例的地址与负载绑定服务器的地址进行绑定。
48、在一种可能的设计中,所述接收服务发起方基于负载地址发送的服务请求之前,还包括:
49、响应作用于绑定界面的触控操作,生成绑定请求;所述绑定请求包括所述服务提供方所提供的多个服务实例的地址;
50、根据所述绑定请求,将服务提供方所提供的多个服务实例的地址与负载绑定服务器的地址进行绑定。
51、在一种可能的设计中,所述方法还包括:
52、基于预设周期,向服务提供方发送绑定确认信息,以使服务提供方将所述绑定确认信息与当前所提供的多个服务实例的地址进行比较,若不一致,则将当前所提供的多个服务实例的当前地址返回;所述绑定确认信息包括与负载绑定服务器绑定的多个服务实例的地址;
53、接收服务提供方发送的当前地址,将所述当前地址与负载绑定服务器的地址进行绑定。
54、第四方面,本技术实施例提供一种服务发起设备,包括:
55、获取模块,用于获取服务请求;对所述服务请求进行解析获得服务标识;所述服务标识为服务提供方的唯一标识;
56、第一发送模块,用于若从注册中心未获取到所述服务请求对应的服务列表,则根据所述服务标识向服务标识注册服务器发送地址查询请求,以使所述服务标识注册服务器根据所述地址查询请求返回所述服务标识对应的负载地址;所述服务标识注册服务器用于建立服务标识和负载地址之间的一一对应关系;所述负载地址为对应的负载绑定服务器的地址;
57、第一发送模块,还用于将所述服务请求发送至所述负载地址对应的负载绑定服务器,以通过所述负载绑定服务器基于第一负载均衡策略将所述服务请求发送至所述负载绑定服务器绑定的多个服务实例中的第一目标服务实例,以使所述第一目标服务实例对所述服务请求进行处理;所述负载绑定服务器用于将对应的服务提供方的多个服务实例的地址与所述负载绑定服务器的地址进行绑定。
58、第五方面,本技术实施例提供一种服务标识注册服务器,包括:
59、第一接收模块,用于接收服务发起方在从注册中心未获取到所述服务请求对应的服务列表时,根据所述服务标识发送的地址查询请求;所述服务标识服务发起方对获取的服务请求进行解析获得的;所述服务标识为服务提供方的唯一标识;
60、确定模块,用于根据所述地址查询请求确定所述服务标识对应的负载地址;
61、第二发送模块,用于将所述负载地址发送给所述服务发起方,以使所述服务发起方将所述服务请求发送至所述负载地址对应的负载绑定服务器,通过所述负载绑定服务器基于第一负载均衡策略将所述服务请求发送至所述负载绑定服务器绑定的多个服务实例中的第一目标服务实例,以使所述第一目标服务实例对所述服务请求进行处理;所述负载绑定服务器用于将对应的服务提供方的多个服务实例的地址与所述负载绑定服务器的地址进行绑定。
62、第六方面,本技术实施例提供一种负载绑定服务器,包括:
63、第二接收模块,用于接收服务发起方基于负载地址发送的服务请求;所述负载地址是服务发起方在从注册中心未获取到所述服务请求对应的服务列表时,根据服务标识从服务标识注册服务器获取的;所述服务标识是服务发起方对获取的服务请求进行解析获得的;从所述负载地址是为对应的负载绑定服务器的地址
64、第三发送模块,用于基于第一负载均衡策略将所述服务请求发送至所述负载绑定服务器绑定的多个服务实例中的第一目标服务实例,以使所述第一目标服务实例对所述服务请求进行处理;所述负载绑定服务器用于将对应的服务提供方的多个服务实例的地址与所述负载绑定服务器的地址进行绑定。
65、第七方面,本技术实施例提供一种服务调用设备,包括:至少一个处理器和存储器;
66、所述存储器存储计算机执行指令;
67、所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的方法。
68、第八方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的方法。
69、第九方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的方法。
70、本实施例提供的服务调用方法、设备、存储介质及程序产品,该方法包括获取服务请求,对服务请求进行解析获得服务标识,服务标识为服务提供方的唯一标识,若从注册中心未获取到服务请求对应的服务列表,则根据服务标识向服务标识注册服务器发送地址查询请求,以使服务标识注册服务器根据地址查询请求返回服务标识对应的负载地址,服务标识注册服务器用于建立服务标识和负载地址之间的一一对应关系,负载地址为对应的负载绑定服务器的地址,将服务请求发送至负载地址对应的负载绑定服务器,以通过负载绑定服务器基于第一负载均衡策略将服务请求发送至负载绑定服务器绑定的多个服务实例中的第一目标服务实例,以使第一目标服务实例对服务请求进行处理,负载绑定服务器用于将对应的服务提供方的多个服务实例的地址与负载绑定服务器的地址进行绑定。本实施例提供的方法通过设置服务标识注册服务器和负载绑定服务器,能够在注册中心无法提供服务列表时,向服务标识注册服务器获取服务提供方对应的服务标识所对应的负载绑定服务器对应的负载地址,进而基于负载地址将服务请求发送给负载绑定服务器,以使负载绑定服务器将服务请求转发至合适的服务实例,从而能够与注册中心解耦,降低对注册中心的依赖,当注册中心发生异常时,依然能够正常的进行服务调用,提高服务调用的有效性,提高服务调用的有效性。