一种服务提供方法、装置及系统与流程

文档序号:25297969发布日期:2021-06-04 12:09阅读:56来源:国知局
一种服务提供方法、装置及系统与流程
一种服务提供方法、装置及系统
1.本申请要求于2019年12月04日提交国家知识产权局、申请号为201911229983.5、发明名称为“一种服务注册的方法和系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
2.本申请实施例涉及计算机领域,尤其涉及一种服务提供方法、装置及系统。


背景技术:

3.随着计算机技术的飞速发展,面向服务的框架应用而生。面向服务的框架从传统的垂直架构发展到了现在的分布式服务框架。分布式服务框架通常可以包含以下角色:提供服务的服务提供者、调用服务的服务消费者、以及注册中心。
4.当前,分布式服务框架的工作流程为:服务提供者在启动时向注册中心注册自己提供的服务;服务消费者在启动时向注册中心订阅自己所需的服务,注册中心向服务消费者返回可以提供其所需服务的服务提供者的服务地址列表,由服务消费者从服务地址列表中选一个服务地址对应的服务提供者进行服务调用。从该流程可知,注册中心是服务框架核心模块,它的性能也影响着整个服务框架的可用性以及稳定性。
5.当前,即使多个服务提供者提供相同的多个服务,每个服务提供者都需要向注册中心注册自己提供的每个服务。例如,假设有500个服务提供者提供相同的100个服务,每个服务提供者配置100个服务接口来提供各自的100个服务。这500个服务提供者的实例同时启动时会分别将各自的100个服务接口向注册中心进行注册,即注册中心需要同时处理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.结合第二方面或上述任一种可能的实现方式,在另一种可能的实现方式中,本申请所称服务可以包括接口服务。
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.结合第八方面或上述任一种可能的实现方式,在另一种可能的实现方式中,服务提供系统可以包括多个注册实例;本申请提供的服务提供方法还可以包括:第一服务消费实例基于其具有的消费接口组的信息和多个注册实例的数量,从多个注册实例选择一个注册实例来发送第一服务请求。
71.结合第八方面或上述任一种可能的实现方式,在另一种可能的实现方式中,第一服务消费实例基于其具有的消费接口组的信息和多个注册实例的数量,从多个注册实例选择一个注册实例来发送第一服务请求,具体包括:将消费接口组的信息计算的特征值对多个注册实例的数量取模,得到余数;根据该余数按照预设规则从多个注册实例中选择一个注册实例发送第一服务请求。由于具有相同消费接口组的服务消费实例的消费接口组的信息相同,可以尽可能的保证其选取同一个注册实例进行服务请求。不同的服务消费实例基于相同的方式选择注册实例,尽可能的保证具有相同消费接口组的服务消费实例选择同一个注册实例发起服务请求,避免不同服务消费实例请求相同消费接口组均需要重复访问存储系统来获取具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息。
72.结合第八方面或上述任一种可能的实现方式,在另一种可能的实现方式中,预设
规则可以包括:若序号为该余数的注册实例可用,选取序号为该余数的注册实例;若序号为该余数的注册实例不可用,将余数依次步进,直至选取到可用的注册实例。可以根据实际需求配置余数,本申请不予限定。
73.结合第八方面或上述任一种可能的实现方式,在另一种可能的实现方式中,消费接口组的信息计算的特征值,可以包括:消费接口组的信息进行哈希运算的哈希值。
74.结合第八方面或上述任一种可能的实现方式,在另一种可能的实现方式中,上述注册实例发送的具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息,可以为接收第一服务消息的注册实例判断第一服务消费实例具有的消费接口组已被请求时发送。
75.第八方面提供的服务提供方法,与上述第六方面或第七方面提供的服务提供方法是对同一个方案不同角度的描述,其具体实现可以相互参考,不再一一赘述。
76.第九方面,提供另一种服务提供方法,应用于服务提供系统,该服务提供系统包括注册实例和多个服务消费实例,每个服务消费实例具有相同的消费接口组,该消费接口组包含多个服务接口。该方法可以包括:
77.第一服务消费实例向注册实例发送第一服务请求,第一服务请求携带其具有的消费接口组的第三信息,消费接口组的第三信息用来代表多个服务接口;注册实例接收第一服务消费实例发送的第一服务请求;注册实例根据消费接口组的第三信息确定该消费接口组是否被请求;在消费接口组未被请求的情况下,注册实例根据消费接口组的第三信息,从存储设备中获取具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息;注册实例向第一服务消费实例发送获取的服务提供实例的服务地址信息;第一服务消费实例接收该注册实例发送的服务提供实例的服务地址信息。
78.第十方面,提供另一种服务提供方法,应用于服务提供系统,该服务提供系统包括注册实例和多个服务消费实例,每个服务消费实例具有相同的消费接口组,该消费接口组包含多个服务接口。该方法可以包括:
79.第一服务消费实例向注册实例发送第一服务请求,第一服务请求携带其具有的消费接口组的第三信息,消费接口组的第三信息用来代表其包含的多个服务接口;注册实例接收第一服务消费实例发送的第一服务请求,根据消费接口组的第三信息确定该消费接口组是否被请求,在该消费接口组已被请求的情况下,注册实例向第一服务消费实例发送具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息;第一服务消费实例接收注册实例发送的具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息。
80.第九方面或第十方面提供的服务提供方法,是从系统的角度描述上述第六方面或第七方面或第八方面提供的服务提供方法,其具体实现可以相互参考,不再一一赘述。
81.第十一方面,提供一种注册实例,服务提供系统包括该注册实例和多个服务提供实例,每个服务提供实例具有相同的服务接口组,所述服务接口组包含多个服务接口。该注册实例可以包括:
82.接收单元,用于接收第一服务提供实例发送的第一注册请求,第一注册请求携带服务接口组的第一信息,服务接口组的第一信息用来代表所述多个服务接口。
83.确定单元,用于根据服务接口组的第一信息确定服务接口组是否注册。
84.注册单元,用于在服务接口组未注册情况下,根据服务接口组的第一信息,注册服
务接口组以及第一服务提供实例。
85.结合第十一方面,在一种可能的实现方式中,该注册实例还包括发送单元,用于在服务接口组未注册情况下,向第一服务提供实例发送请求消息。接收单元还用于,接收第一服务提供实例根据请求消息发送的服务接口组的第二信息。其中,服务接口组的第二信息包括每个服务接口的接口名和/或接口版本。
86.结合第十一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,注册单元具体用于:建立第一映射关系,第一映射关系包括服务接口组的标识与服务接口组包含的多个服务接口的映射关系;建立第二映射关系,第二映射关系包括服务接口组的标识与包含服务接口组的第一服务提供实例的映射关系。
87.结合第十一方面或上述任一种可能的实现方式,在另一种可能的实现方式中,服务接口组的第一信息是根据多个服务接口的信息计算得到的哈希值或关联值。
88.第十一方面的各个单元具体实现同第一方面的方法描述,这里不再赘述。
89.第十二方面,提供另一种注册实例,服务提供系统包括该注册实例和多个服务提供实例,每个服务提供实例具有相同的服务接口组,所述服务接口组包含多个服务接口。该注册实例可以包括:
90.接收单元,用于接收第一服务提供实例发送的第一注册请求,第一注册请求携带服务接口组的第一信息,服务接口组的第一信息用来代表其包含的多个服务接口。
91.确定单元,用于根据服务接口组的第一信息确定服务接口组是否注册。
92.发送单元,用于在服务接口组已注册情况下,向第一服务提供实例发送注册成功消息。
93.结合第十二方面,在一种可能的实现方式中,该注册实例还包括处理单元,用于在发送单元发送注册成功消息之前,将第一服务提供实例添加到已经建立的该服务接口组的映射关系中。
94.结合第十二方面或上述任一种可能的实现方式,在另一种可能的实现方式中,服务接口组的第一信息根据多个服务接口的信息计算得到哈希值或关联值。
95.第十二方面的各个单元具体实现同第二方面的方法描述,这里不再赘述。
96.第十三方面,提供一种第一服务提供实例,服务提供系统包括注册实例和多个服务提供实例,每个服务提供实例具有相同的服务接口组,所述服务接口组包含多个服务接口。第一服务提供实例为多个服务提供实例中任一个。第一服务提供实例可以包括:
97.发送单元,用于向注册实例发送第一注册请求,第一注册请求携带服务接口组的第一信息,服务接口组的第一信息用来代表其包含的多个服务接口。
98.接收单元,用于接收注册实例发送的注册成功消息,该注册成功消息指示服务接口组以及第一服务提供实例已被成功注册。
99.结合第十三方面,在一种可能的实现方式中,接收单元还用于,接收注册实例的请求消息;发送单元还用于,根据请求消息向注册实例发送服务接口组的第二信息。其中,服务接口组的第二信息包括每个服务接口的接口名和/或接口版本。
100.结合第十三方面或上述任一种可能的实现方式,在另一种可能的实现方式中,服务接口组的第一信息是根据多个服务接口的信息计算得到的哈希值或关联值。
101.结合第十三方面或上述任一种可能的实现方式,在另一种可能的实现方式中,服
务提供系统包括多个注册实例;第一服务提供实例还包括选择单元,用于:基于服务接口组的信息和多个注册实例的数量,从多个注册实例选择一个注册实例来发送第一注册请求。
102.第十三方面的各个单元具体实现同第三方面的方法描述,这里不再赘述。
103.第十四方面,提供一种注册实例,服务提供系统包括该注册实例和多个服务消费实例,每个服务消费实例具有相同的消费接口组,该消费接口组包含多个服务接口。该注册实例可以包括:
104.接收单元,用于接收第一服务消费实例发送的第一服务请求,第一服务请求携带消费接口组的第三信息,消费接口组的第三信息用来代表该消费接口组包含的多个服务接口。
105.确定单元,用于根据消费接口组的第三信息确定该消费接口组是否被请求。
106.获取单元,用于在消费接口组未被请求的情况下,根据消费接口组的第三信息,从存储系统获取具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息。
107.结合第十四方面,在一种可能的实现方式中,该注册实例还包括存储单元,用于存储获取的服务提供实例的服务地址信息。
108.结合第十四方面,在另一种可能的实现方式中,该消费实例还包括发送单元,用于在消费接口组未被请求的情况下,向第一服务消费实例发送请求消息;接收单元还用于接收第一服务消费实例根据该请求消息发送的该消费接口组的第四信息。其中,消费接口组的第四信息包括该消费接口组中每个服务接口的接口名和/或接口版本。其中,该请求消息用于从第一服务消费实例获取消费接口组的第四信息。在第一服务消费实例具有的消费接口组未被请求的情况下,注册实例通过请求消息获取消费接口组的第四信息,以实现从存储设备中获取具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息。
109.结合第十四方面或上述任一种可能的实现方式,在另一种可能的实现方式中,消费接口组的第三信息可以是根据该消费接口组包含的多个服务接口的信息计算得到的哈希值或关联值。例如,根据该消费接口组包含的多个服务接口的接口信息计算得到的哈希值或关联值。
110.结合第十四方面或上述任一种可能的实现方式,在另一种可能的实现方式中,发送单元还用于:向配置中心发送该注册实例的服务地址信息,用于服务消费实例实时获取注册实例的服务地址信息,便于服务消费实例选择注册实例发起服务请求。
111.结合第十四方面或上述任一种可能的实现方式,在另一种可能的实现方式中,本申请所称服务可以包括接口服务。
112.结合第十四方面或上述任一种可能的实现方式,在另一种可能的实现方式中,发送单元还用于:向第一服务消费实例发送该消费接口组的标识,可以用于第一服务消费实例维护日志或进行其他操作。
113.第十四方面的各个单元具体实现同第六方面的方法描述,这里不再赘述。
114.第十五方面,提供另一种注册实例,服务提供系统包括该注册实例和多个服务消费实例,每个服务消费实例具有相同的服务接口组,所述服务接口组包含多个服务接口。该注册实例可以包括:
115.接收单元,用于接收第一服务消费实例发送的第一服务请求,第一服务请求携带服务接口组的第一信息,服务接口组的第一信息用来代表其包含的多个服务接口。
116.确定单元,用于根据服务接口组的第一信息确定服务接口组是否被请求。
117.发送单元,用于在服务接口组已被请求的情况下,向第一服务消费实例发送具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息。
118.结合第十五方面或上述任一种可能的实现方式,在另一种可能的实现方式中,消费接口组的第三信息可以为根据多个服务接口的信息计算得到哈希值或关联值。例如,根据该消费接口组包含的多个服务接口的接口信息计算得到的哈希值或关联值。
119.结合第十五方面或上述任一种可能的实现方式,在另一种可能的实现方式中,发送单元还用于:向配置中心发送该注册实例的服务地址信息,用于服务消费实例实时获取注册实例的服务地址信息,便于服务消费实例选择注册实例发起注册。
120.结合第十五方面或上述任一种可能的实现方式,在另一种可能的实现方式中,本申请所称服务可以包括接口服务。
121.第十五方面的各个单元具体实现同第七方面的方法描述,这里不再赘述。
122.第十六方面,提供一种第一服务消费实例,服务提供系统包括注册实例和多个服务消费实例,每个服务消费实例具有相同的服务接口组,所述服务接口组包含多个服务接口。第一服务消费实例为多个服务消费实例中任一个。第一服务消费实例可以包括:
123.发送单元,用于向注册实例发送第一服务请求,第一服务请求携带服务接口组的第一信息,服务接口组的第一信息用来代表其包含的多个服务接口。
124.接收单元,用于接收注册实例发送的具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息。
125.结合第十六方面,在一种可能的实现方式中,接收单元还用于:接收注册实例的请求消息;发送单元还用于:根据该请求消息向注册实例发送其具有的消费接口组的第四信息,其中,该消费接口组的第四信息包括其请求的每个服务接口的接口名和/或接口版本。
126.结合十六方面或上述任一种可能的实现方式,在另一种可能的实现方式中,消费接口组的第三信息是根据其包含的多个服务接口的信息计算得到的哈希值或关联值。例如,根据该消费接口组包含的多个服务接口的接口信息计算得到的哈希值或关联值。
127.结合第十六方面或上述任一种可能的实现方式,在另一种可能的实现方式中,服务提供系统可以包括多个注册实例;本申请提供的第一服务消费实例还可以包括选择单元,用于基于其具有的消费接口组的信息和多个注册实例的数量,从多个注册实例选择一个注册实例来发送第一服务请求。
128.结合第十六方面或上述任一种可能的实现方式,在另一种可能的实现方式中,选择单元具体用于:将消费接口组的信息计算的特征值对多个注册实例的数量取模,得到余数;根据该余数按照预设规则从多个注册实例中选择一个注册实例发送第一服务请求。由于具有相同消费接口组的服务消费实例的消费接口组的信息相同,可以尽可能的保证其选取同一个注册实例进行服务请求。不同的服务消费实例基于相同的方式选择注册实例,尽可能的保证具有相同消费接口组的服务消费实例选择同一个注册实例发起服务请求,避免不同服务消费实例请求相同消费接口组均需要重复访问存储系统来获取具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息。
129.结合第十六方面或上述任一种可能的实现方式,在另一种可能的实现方式中,预设规则可以包括:若序号为该余数的注册实例可用,选取序号为该余数的注册实例;若序号为该余数的注册实例不可用,将余数依次步进,直至选取到可用的注册实例。可以根据实际需求配置余数,本申请不予限定。
130.结合第十六方面或上述任一种可能的实现方式,在另一种可能的实现方式中,消费接口组的信息计算的特征值,可以包括:消费接口组的信息进行哈希运算的哈希值。
131.结合第十六方面或上述任一种可能的实现方式,在另一种可能的实现方式中,上述注册实例发送的具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息,可以为接收第一服务消息的注册实例判断第一服务消费实例具有的消费接口组已被请求时发送。
132.第十六方面的各个单元具体实现同第八方面的方法描述,这里不再赘述。
133.第十七方面,提供另一种注册实例,该注册实例可以实现上述第一方面或第二方面或第六方面或第七方面描述的方法示例中注册实例的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。该注册实例可以以芯片的产品形态存在。
134.结合第十七方面,在一种可能的实现方式中,该注册实例的结构中包括处理器和网络接口,该处理器被配置为支持该注册实例执行上述方法中相应的功能。该网络接口用于支持该注册实例与其他设备之间的通信。该注册实例还可以包括存储器,该存储器用于与处理器耦合,其保存该注册实例必要的程序指令和数据。
135.第十八方面,提供一种服务提供实例,该服务提供实例可以实现上述第三方面描述的方法示例中的第一服务提供实例的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。该服务提供实例可以以芯片的产品形态存在。
136.结合第十八方面,在一种可能的实现方式中,该服务提供实例包括处理器和存储器,该处理器执行存储器存储的指令,使得该服务提供实例实现执行上述方法中第一服务提供实例相应的功能。
137.该服务提供实例包括的存储器,用于与处理器耦合,其保存该服务提供实例必要的程序指令和数据。
138.第十九方面,提供一种服务消费实例,该服务消费实例可以实现上述第八方面描述的方法示例中第一服务消费实例的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。该服务消费实例可以以芯片的产品形态存在。
139.结合第十九方面,在一种可能的实现方式中,该服务消费实例包括处理器和存储器,该处理器执行存储器存储的指令,使得该服务消费实例实现上述方法中相应的功能。
140.该服务消费实例包括的存储器,用于与处理器耦合,其保存该服务消费实例必要的程序指令和数据。
141.第二十方面,提供一种服务提供系统,该服务提供系统可以包括注册实例和多个服务提供实例,每个服务提供实例具有相同的服务接口组,所述服务接口组包含多个服务接口。其中:
142.第一服务提供实例,用于向注册实例发送第一注册请求,第一注册请求携带服务接口组的第一信息,服务接口组的第一信息用来代表多个服务接口。
143.注册实例,用于接收第一服务提供实例发送的第一注册请求,根据服务接口组的第一信息确定服务接口组是否注册,在服务接口组未注册情况下,注册实例根据服务接口组的第一信息,注册服务接口组以及第一服务提供实例,向第一服务提供实例发送注册成功消息。
144.第一服务提供实例,还用于接收注册实例发送的注册成功消息。
145.第二十一方面,提供另一种服务提供系统,该服务提供系统可以包括注册实例和多个服务提供实例,每个服务提供实例具有相同的服务接口组,所述服务接口组包含多个服务接口。其中:
146.第一服务提供实例,用于向注册实例发送第一注册请求,第一注册请求携带服务接口组的第一信息,服务接口组的第一信息用来代表多个服务接口。
147.注册实例,用于接收第一服务提供实例发送的第一注册请求,根据服务接口组的第一信息确定服务接口组是否注册,在服务接口组已注册情况下,注册实例向第一服务提供实例发送注册成功消息。
148.第一服务提供实例,还用于接收注册实例发送的注册成功消息。
149.第二十方面或第二十一方面提供的服务提供系统,是从系统的角度描述上述第一方面或第二方面或第三方面提供的服务提供方法,该系统包含的注册实例、服务提供实例的功能与前述第一方面或第二方面或第三方面中一致。
150.第二十二方面,提供另一种服务提供系统,该服务提供系统包括注册实例和多个服务消费实例,每个服务消费实例具有相同的消费接口组,该消费接口组包含多个服务接口。其中:
151.第一服务消费实例用于,向注册实例发送第一服务请求,第一服务请求携带其具有的消费接口组的第三信息,消费接口组的第三信息用来代表多个服务接口。
152.注册实例用于,接收第一服务消费实例发送的第一服务请求;根据消费接口组的第三信息确定该消费接口组是否被请求;在消费接口组未被请求的情况下,根据消费接口组的第三信息,从存储设备中获取具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息;向第一服务消费实例发送获取的服务提供实例的服务地址信息。
153.第一服务消费实例还用于,接收该注册实例发送的服务提供实例的服务地址信息。
154.第二十三方面,提供另一种服务提供系统,该服务提供系统包括注册实例和多个服务消费实例,每个服务消费实例具有相同的消费接口组,该消费接口组包含多个服务接口。其中:
155.第一服务消费实例用于,向注册实例发送第一服务请求,第一服务请求携带其具有的消费接口组的第三信息,消费接口组的第三信息用来代表其包含的多个服务接口。
156.注册实例用于,接收第一服务消费实例发送的第一服务请求,根据消费接口组的第三信息确定该消费接口组是否被请求,在该消费接口组已被请求的情况下,向第一服务消费实例发送具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服
务地址信息。
157.第一服务消费实例还用于,接收注册实例发送的服务提供实例的服务地址信息。
158.第二十二方面或第二十三方面提供的服务提供系统,是从系统的角度描述上述第六方面或第七方面或第八方面提供的服务提供方法,该系统包含的注册实例、服务消费实例的功能与前述第六方面或第七方面或第八方面中一致。
159.第二十四方面,提供一种非易失性存储介质,该非易失性存储介质包括的指令用于实现上述任一方面或任一种可能的实现方式描述的注册实例,或者上述任一方面或任一种可能的实现方式描述的第一服务提供实例。
160.第二十五方面,提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机(以注册实例或者服务提供实例或者服务消费实例的角色)执行上述任一方面或任一种可能的实现方式提供的服务提供方法。
161.第二十六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机(以注册实例或者服务提供实例或者服务消费实例的角色)执行上述任一方面或任一种可能的实现方式提供的服务提供方法。
162.第二十七方面,本申请实施例提供了一种芯片系统,该芯片系统包括处理器和/或存储器,用于实现上述方法中相应的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
163.其中,上述各个方面中的任意一个方面的各种可能的实现方式,在方案不矛盾的前提下,均可以进行组合。
附图说明
164.图1为现有技术提供的一种分布式服务框架的结构示意图;
165.图2为现有技术提供的一种服务注册流程的示意图;
166.图3为现有技术提供的一种服务请求流程的示意图;
167.图4为本申请提供的一种分布式服务框架的结构示意图;
168.图5为本申请提供的一种计算设备的结构示意图;
169.图6为本申请实施例提供的一种服务提供方法的流程示意图;
170.图7为本申请实施例提供的另一种服务提供方法的流程示意图;
171.图8为本申请实施例提供的一种服务提供方法的流程示意图;
172.图9为本申请实施例提供的另一种服务提供方法的流程示意图;
173.图10为本申请实施例提供的一种注册实例的结构示意图;
174.图11为本申请实施例提供的另一种注册实例的结构示意图;
175.图12为本申请实施例提供的再一种注册实例的结构示意图;
176.图13为本申请实施例提供的又一种注册实例的结构示意图;
177.图14为本申请实施例提供的一种服务提供实例的结构示意图;
178.图15为本申请实施例提供的另一种服务提供实例的结构示意图;
179.图16为本申请实施例提供的一种服务消费实例的结构示意图;
180.图17为本申请实施例提供的另一种服务消费实例的结构示意图。
具体实施方式
181.下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,a/b可以表示a或b;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a和b的组合,a和c的组合,b和c的组合,或a、b和c的组合,其中a,b,c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样可以是对功能和作用基本相同的相同项或相似项进行区分,或者也可以是对不同东西的区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
182.在描述本申请的具体方案之前,此处先对本申请涉及的名词进行描述。
183.服务(service),是指在网络或设备上运行的、面向服务的软件模块。服务具有服务接口。服务提供者通过服务接口提供服务,该服务提供者在注册中心注册该服务的服务接口,服务消费者向该注册中心请求该服务接口时,该注册中心向该服务消费者反馈该服务接口的服务提供者,以便该服务消费者通过该服务接口使用服务提供者提供的该服务。
184.分布式服务框架,可以指将服务框架按照角色进行分布式的部署。分布式服务框架是构建分布式系统的重要技术,它的核心是对运行于不同主机的不同进程上的服务的调用。分布式服务框架通常可以包含以下角色:提供服务的服务提供者、调用服务的服务消费者、以及注册中心。分布式服务框架中的不同角色,可以部署于不同的服务器或者芯片或者设备中,或者,也可以部署于不同的服务器或者芯片或者设备中,本申请不予限定。
185.注册中心,是指用来注册和发现服务的角色,其具备的基本功能有注册服务、下线服务、发现服务、通知服务变更等。例如,注册中心常用的存储方式可以包括zookeeper、etcd、eureka、consul、nacos等。注册中心是一种角色,其可以部署于服务器或其他设备中,部署注册中心的设备中实现注册中心功能的部分,可以称之为注册实例,或者注册装置,或者注册中心,或者其他名称,作为等价概念可以相互替换。本申请中,注册中心可以通过注册实例实现。注册中心也可以称为注册实例。
186.服务提供者,是指提供服务的服务提供方。服务提供者将其提供的服务在注册中心注册,例如注册该服务的服务接口。服务提供者是一种角色,其可以部署于服务器或其他设备中,部署服务提供者的设备中实现服务提供者功能的部分,可以称之为服务提供实例,或者服务提供装置,或者服务提供者服务器,或者服务提供者,或者其他名称,作为等价概念可以相互替换。本申请中,服务提供者可以通过服务提供实例实现。服务提供者也可以称为服务提供实例。
187.服务消费者,是指调用服务的服务消费方。服务消费者在注册中心请求服务,从注册中心获取提供其请求的服务的服务提供者的服务地址,以选取提供服务的服务提供者。例如,服务消费者通过服务的服务接口向注册中心请求提供该服务接口的服务提供者的服务地址,服务消费者选择服务地址来选择提供该服务的服务提供者。服务消费者是一种角
色,其可以部署于服务器或其他设备中,部署服务消费者的设备中实现服务消费者功能的部分,可以称之为服务消费实例,或者服务消费装置,或者服务消费者服务器,或者服务消费者,或者其他名称,作为等价概念可以相互替换。本申请中,服务消费者可以通过服务消费实例实现。服务消费者也可以称为服务消费实例。
188.服务接口,是指提供服务的接口。可选地,每个服务接口提供一个服务。可选地,服务提供实例通过不同接口可以提供不同服务。可选地,服务提供者中的多个接口组合提供服务。
189.接口信息,是指描述服务接口的信息,接口信息的内容可以根据实际需求配置。接口信息可以包括接口名和接口版本,相应地,多个服务接口的接口信息,包括该多个服务接口中的每个接口的接口名和接口版本。例如,当通过服务接口提供服务时,该接口信息可以包括该服务接口的接口名字和如下的一种或多种:该服务接口的接口组名、该服务接口的接口版本号、该服务接口的接口相关服务治理规则等。
190.服务接口组,是指服务提供实例提供的多个服务接口。本申请可以将服务提供实例提供的服务接口所属的服务接口组,称之为服务提供实例具有该服务接口组。例如,提供相同服务的服务提供实例可以具有相同的服务接口组。可选地,服务接口组可以没有组的概念,即服务接口组就是多个服务接口。或者可选地,服务接口组可以有组的概念,即服务接口组就是多个服务接口加入了一个组。
191.消费接口组,是指服务消费实例请求的多个服务接口。例如,请求相同服务的服务消费实例可以具有相同的消费接口组。消费接口组中包括的多个服务接口,可以属于一个或多个服务接口组,可以将该一个或多个服务接口组称之为服务消费实例请求的一个或多个服务接口组。可选地,消费接口组可以没有组的概念,即消费接口组就是多个服务接口。或者可选地,消费接口组可以有组的概念,即消费接口组就是多个服务接口加入了一个组。
192.图1示意了现有的分布式服务框架的结构。如图1所示,该分布式服务框架中包括注册实例、注册实例的存储系统、服务提供实例(图1中的“服务提供实例a”、“服务提供实例b”)及服务消费实例。
193.其中,图1中的“服务提供实例a”、“服务提供实例b”,分别指大量对等的服务提供实例。图1中示意的各个网元可以为服务器或芯片或其他形式的产品形态,本申请不予限定。
194.在图1示意的分布式服务框架中,如图2所示,服务提供实例在注册实例的服务注册流程可以包括:
195.s201、服务提供实例在启动时随机找一个注册实例发送注册请求。
196.其中,该注册请求可以包括一个服务接口的接口信息以及该个服务接口的服务地址。该注册请求用于向注册实例注册该个服务接口对应的服务以及服务地址。
197.s202、注册实例把该个服务接口的接口信息以及该个服务接口的服务地址写入存储系统。
198.s203、注册实例向服务提供实例发送该个服务接口的注册成功消息。
199.其中,该注册成功消息用于指示该个服务接口提供的服务在注册实例完成注册。
200.对于每一个服务提供实例提供的每一个服务,均需与注册实例进行s201至s203的交互。
201.在图1示意的分布式服务框架中,如图3所示,服务消费实例在注册实例的服务请求流程可以包括:
202.s301、服务消费实例在启动时随机找一个注册实例发送订阅请求。
203.其中,该订阅请求包括服务消费实例订阅的一个服务接口的接口信息,该订阅请求用于向注册实例订阅自己所需服务(即该个服务接口提供的服务)。
204.s302、注册实例从存储系统查询提供该个服务接口的服务提供实例的服务地址列表,该服务地址列表记录提供该个服务接口的一个或多个服务提供实例。
205.s303、注册实例向服务消费实例返回查询到的服务提供实例的服务地址列表。
206.s304、服务消费实例从该服务地址列表选择适合的服务提供实例发起服务调用。
207.对于每一个服务消费实例请求的每个服务,均需与注册实例进行s301至s304的交互。
208.上述服务注册和服务请求流程中,即使多个服务提供实例提供相同的多个服务,每个服务提供实例都需要向注册实例注册自己提供的每个服务。例如,假设有500个服务提供实例提供相同的100个服务,每个服务提供实例配置100个服务接口来提供各自的100个服务。这500个服务提供实例同时启动时会分别将各自的100个服务接口向注册实例进行注册,即注册实例需要同时处理5万个服务接口的注册。
209.另外,无论是注册实例向存储系统写入还是从存储系统查询,都是对存储系统的大量访问操作,存储系统很容易成为整个系统性能瓶颈,影响系统的可用性及稳定性。例如,假设有500个服务提供实例提供相同的100个服务,注册实例需要注册的5万个服务接口写入存储系统,可能导致因为存储系统性能不足而造成服务无法正常注册,会影响到整个系统的可用性与稳定性。
210.基于此,本申请提供一种服务提供方法,可以避免对不同服务提供实例提供的相同服务接口组的重复注册,可以避免不同服务消费实例请求相同消费接口组均需要重复访问存储系统来获取具有该消费接口组的服务提供实例的服务地址信息。另外,对于具有相同的服务接口的服务提供实例或者具有相同的消费接口组的服务消费实例,注册实例与其交互时,先判断是否已经对相同服务接口组进行过注册或对相同消费接口组进行过访问,仅对存储系统进行一次访问,以降低对存储系统的访问操作,提高系统可用性及稳定性。
211.本申请提供的服务提供方法,可以应用于图1示意的分布式服务框架或者图4示意的分布式服务框架。图4示意的分布式服务框架,是在图1的基础上,设置了配置中心,用于存储注册实例的服务地址。服务提供实例或者服务消费实例可以实时的或者周期性地从配置中心获取注册实例的服务地址列表,以选择注册实例。
212.图1或图4示意的分布式服务框架均为示例,并不是对分布式服务框架的规模进行限定。
213.下面结合附图,对本申请的实施例进行具体阐述。
214.一方面,本申请实施例提供一种计算设备(例如服务器),用于执行本申请提供的服务提供方法,该计算设备可以部署于图1或图4所示的分布式服务框架中的注册实例或者服务提供实例或者服务消费实例。图5示出的是与本申请各实施例相关的一种计算设备50。如图5所示,计算设备50可以包括处理器501、存储器502以及网络接口503。
215.下面结合图5对计算设备50的各个构成部件进行具体的介绍:
216.其中,存储器502可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram);或者非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);或者上述种类的存储器的组合,用于存储可实现本申请方法的程序代码、配置文件或其他内容。
217.处理器501是计算设备50的控制中心。例如,处理器501可以是一个中央处理器(central processing unit,cpu),也可以是特定集成电路(application specific integrated circuit,asic),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital singnal processor,dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,fpga)。
218.网络接口503用于与其他设备进行通信。网络接口503可以为通信端口或者其他。
219.一种可能的实现方式中,当计算设备50为注册实例,处理器501通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行如下功能:
220.通过网络接口503接收第一服务提供实例发送的第一注册请求,第一注册请求携带服务接口组的第一信息,服务接口组的第一信息用来代表多个服务接口;根据服务接口组的第一信息确定服务接口组是否注册;在服务接口组未注册情况下,根据服务接口组的第一信息,注册服务接口组以及第一服务提供实例。
221.另一种可能的实现方式中,当计算设备50为注册实例,处理器501通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行如下功能:
222.通过网络接口503接收第一服务提供实例发送的第一注册请求,第一注册请求携带服务接口组的第一信息,服务接口组的第一信息用来代表多个服务接口;根据服务接口组的第一信息确定服务接口组是否注册;在服务接口组已注册情况下,通过网络接口503向第一服务提供实例发送注册成功消息。
223.另一种可能的实现方式中,当计算设备50为服务提供实例,处理器501通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行如下功能:
224.通过网络接口503向注册实例发送第一注册请求,该第一注册请求携带服务接口组的第一信息,该服务接口组的第一信息用来代表该服务接口组包含的多个服务接口;接收注册实例发送的注册成功消息,该注册成功消息指示第一服务提供实例具有的服务接口组以及第一服务提供实例已被成功注册。
225.再一种可能的实现方式中,当计算设备50为注册实例,处理器501通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行如下功能:
226.通过网络接口503接收第一服务消费实例发送的第一服务请求,第一服务请求携带消费接口组的第三信息,消费接口组的第三信息用来代表多个服务接口;根据消费接口组的第三信息确定该消费接口组是否被请求;在消费接口组未被请求的情况下,根据服务接口组的第三信息,从存储设备中获取与该消费接口组对应的服务提供实例的服务地址信
息;通过网络接口503向第一服务消费实例发送获取的服务提供实例的服务地址信息。
227.再一种可能的实现方式中,当计算设备50为注册实例,处理器501通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行如下功能:
228.通过网络接口503接收第一服务消费实例发送的第一服务请求,第一服务请求携带消费接口组的第三信息,消费接口组的第三信息用来代表多个服务接口;根据消费接口组的第三信息确定该消费接口组是否被请求;在消费接口组已被请求的情况下,通过网络接口503向第一服务消费实例发送具有该消费接口组的服务提供实例的服务地址信息。
229.再一种可能的实现方式中,当计算设备50为服务消费实例,处理器501通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行如下功能:
230.通过网络接口503向注册实例发送第一服务请求,该第一服务请求携带消费接口组的第三信息,该消费接口组的第三信息用来代表该消费接口组包含的多个服务接口;通过网络接口503接收注册实例发送的具有该消费接口组的服务提供实例的服务地址信息。
231.另一方面,本申请实施例提供一种服务提供方法,该方法应用于包括注册实例及多个服务提供实例的服务提供系统中。该服务提供系统中的每个服务提供实例具有相同的服务接口组,该服务接口组包含多个服务接口。该服务提供系统可以为图1或图4示意的分布式服务框架中的部分。
232.在该服务提供系统中,该注册实例与每个服务提供实例的交互过程相同,本申请下述实施例中仅以该注册实例与第一服务提供实例的交互过程为例,对本申请提供的方法进行说明,其他不再一一赘述。第一服务提供实例为该服务提供系统中的任一个服务提供实例。
233.如图6所示,该方法可以包括:
234.s601、第一服务提供实例生成服务接口组的第一信息。
235.其中,服务接口组的第一信息用来代表该服务接口组包含的多个服务接口。该服务接口组的第一信息提供给注册实例,用于注册实例判断该第一服务提供实例具有的服务接口组是否已注册。应理解,对服务接口组注册可以为对服务接口组包含的服务接口注册。
236.可选的,可以根据实际需求确定服务接口组的第一信息的内容,本申请对此不予限定。具有相同服务接口组的服务提供提供实例生成的服务接口组的第一信息相同。
237.一种可能的实现方式中,服务接口组的第一信息可以包括该服务接口组的接口信息。
238.另一种可能的实现方式中,服务接口组的第一信息可以包括基于该服务接口组的接口信息计算的特征值或关联值,计算所使用的算法可以为哈希计算或者其他算法,本申请对此不予限定。例如,基于该服务接口组的接口信息进行哈希运算,计算得到哈希值。
239.s602、第一服务提供实例向注册实例发送第一注册请求。
240.其中,第一注册请求包括服务接口组的第一信息。第一注册请求用于请求该注册实例对第一服务提供实例具有的服务接口组及第一服务提供实例进行注册。
241.一种可能的实现方式中,第一注册请求还可以包括第一服务提供实例的服务地址信息,服务地址信息用于指示第一服务提供实例提供服务的服务地址的列表或清单。
242.一种可能的实现方式中,当该服务提供系统仅包括一个注册实例时,s602中可以向该注册实例发送第一注册请求。
243.另一种可能的实现方式中,当该服务提供系统仅包括多个注册实例时,s602中第一服务提供实例需选择一个注册实例发送第一注册请求。
244.示例性的,s602中第一服务提供实例选择一个注册实例的过程可以包括下述步骤a和步骤b。
245.步骤a、第一服务提供实例获取多个注册实例的服务地址列表。
246.其中,该服务地址列表可以包括多个注册实例的服务地址信息。一个注册实例的服务地址信息用于指示注册实例的地址,根据该地址第一服务提供实例即可与注册实例通信交互。
247.对于服务地址列表中包括的注册实例的服务地址信息,可以根据实际需求配置,本申请不予限定。例如,该服务地址列表中可以包括第一服务提供实例可连接的所有注册实例的服务地址信息。或者,该服务地址列表中可以包括第一服务提供实例可连接的可用的注册实例的服务地址信息。
248.一种可能的实现方式中,在步骤a中,第一服务提供实例可以实时或者周期性地从配置中心读取该服务地址列表。配置中心记录了注册实例的服务地址信息。
249.另一种可能的实现方式中,在步骤a中,第一服务提供实例可以接收配置中心实时或者周期性地下发的该服务地址列表。
250.再一种可能的实现方式中,在步骤a中,第一服务提供实例可以获取其内部被配置的静态的该服务地址列表。
251.一种应用场景举例,服务提供实例可以在开机初始化之后执行步骤a的操作。
252.步骤b、第一服务提供实例选取一个注册实例。
253.可选的,在步骤b中选择注册实例的方式,可以根据实际需求配置,以达到具有同一服务接口组的服务提供实例选取的注册实例尽可能相同。
254.一种可能的实现方式中,步骤b中第一服务提供实例可以按照随机算法选取注册实例。
255.另一种可能的实现方式中,步骤b中第一服务提供实例可以根据s601中生成的服务接口组的第一信息选取注册实例。
256.例如,步骤b中第一服务提供实例可以根据s601中生成的服务接口组的第一信息选取注册实例,具体可以实现为:第一服务提供实例可以将特征值(即基于服务接口组的第一信息计算的特征值)对注册实例的数量(即服务地址列表中的服务地址信息数量)取模,得到余数;然后根据该余数按照预设规则选取注册实例。
257.其中,该预设规则可以包括:若序号为余数的注册实例可用,选取序号为余数的注册实例;若序号为余数的注册实例不可用,将余数依次步进,直至选取到可用的实例。具体步进时的步进值可以根据实际需求配置,本申请实施例不予限定。
258.例如,该预设规则可以包括:若序号为余数的注册实例可用,选取序号为余数的注册实例;若序号为余数的注册实例不可用,将余数步进加1,直至选取到可用的注册实例。
259.在选取注册实例的过程中,若某次步进后的序号大于注册实例的总数,则从头开始重新选取注册实例。
260.例如,步骤b中第一服务提供实例可以根据s601中生成的服务接口组的第一信息选取注册实例,具体可以实现为:第一服务提供实例可以将服务接口组的接口信息计算的特征值(例如第一信息)进行预设运算,然后根据运算结果按照预设规则选取注册实例。该预设运算可以为预设表达式的数学运算或者其他,本申请实施例不予限定。
261.s603、注册实例接收第一服务提供实例发送的第一注册请求。
262.s603中注册实例接收到的第一注册请求,即s602中第一服务提供实例发送的第一注册请求,此处不再赘述。
263.s604、注册实例根据服务接口组的第一信息确定服务接口组是否注册。
264.具体的,s604的一种实现举例:注册实例确定该服务接口组的第一信息否命中缓存。
265.一种可能的实现方式中,注册实例对注册过的服务接口组可以分配标识(identifier,id),并与服务接口组的第一信息对应存储于缓存中,s604中注册实例根据服务接口组的第一信息确定服务接口组是否注册,可以包括:注册实例确定是否存在与该第一信息对应的服务接口组的id。若存在与该第一信息对应的服务接口组的id,则确定服务接口组已注册,否则未注册。
266.另一种可能的实现方式中,注册实例对注册过的服务接口组可以分配第一指示,该第一指示与该服务接口组的第一信息对应,该第一指示用于指示其对应的服务接口组已注册,s604中注册实例根据服务接口组的第一信息确定服务接口组是否注册,可以包括:注册实例确定是否存在与第一信息对应的第一指示。若存在与第一信息对应的第一指示,则确定该服务接口组已注册,否则未注册。
267.可选地,本申请还可以根据实际需求配置注册实例对注册过的服务接口组的标记方式,在s604中根据标记判断即可,本申请对此不再一一赘述。
268.可选的,若s604中注册实例确定第一服务提供实例具有的服务接口组已注册,则执行s605和s606。
269.在该服务接口组已注册时,将第一服务提供实例的服务地址信息添加入服务接口组的服务地址列表。
270.s605、注册实例向第一服务提供实例发送注册成功消息。
271.其中,该注册成功消息用于指示该第一服务提供实例具有的服务接口组完成注册。
272.可选的,该注册成功消息可以包括该第一服务提供实例具有的服务接口组的id。
273.s606、第一服务提供实例接收注册实例发送的注册成功消息。
274.其中,s606中的注册成功消息,可以是s605中注册实例发送的注册成功消息。
275.通过本申请提供的服务提供方法,注册实例在接收到第一服务提供实例发送的注册请求时,先判断第一服务提供实例具有的服务接口组是否注册,在其已注册的情况下无需再进行注册,直接反馈注册成功消息,避免了对不同服务提供实例提供的相同服务接口组的重复注册,减少了注册实例的注册负载。本方法还避免了相同服务接口组的服务提供实例发起的注册请求都被注册导致对存储系统写入量的增加,因此减少了注册实例对存储系统的写入量,减少了注册实例的注册负载。在注册实例的注册负载减少的情况下,注册实例不再是服务框架的瓶颈,也就降低注册实例的性能对服务框架的可用性与稳定性的影
响。
276.另一种可能的实现方式中,若s604中注册实例确定第一服务提供实例具有的服务接口组未注册,即该第一服务提供实例为第一个请求对该服务接口组注册的服务提供实例,如图7所示,本申请提供的服务提供方法还可以包括s607。
277.s607、注册实例根据服务接口组的第一信息,注册服务接口组以及第一服务提供实例。
278.在s607中,注册实例可以先根据服务接口组的第一信息,获取该服务接口组的第二信息,再根据服务接口组的第二信息,注册服务接口组以及第一服务提供实例。
279.其中,服务接口组的第二信息可以为该服务接口组的接口信息。例如,服务接口组的第二信息可以包括服务接口组的每个服务接口的接口名和/或接口版本。
280.一种可能的实现方式中,服务接口组的第一信息与第二信息可以相同,均为服务接口组的接口信息。s607中则获取前述第一注册请求中的第一信息,注册服务接口组以及第一服务提供实例即可。
281.另一种可能的实现方式中,服务接口组的第一信息与第二信息可以不同。服务接口组的第一信息可以为基于服务接口组的接口信息根据预设算法得到的结果值。服务接口组的第二信息可以为接口信息。
282.相应的,s607具体可以实现为:在服务接口组未注册情况下,注册实例向第一服务提供实例发送请求消息;注册实例接收第一服务提供实例根据该请求消息发送的服务接口组的第二信息。其中,服务接口组的第二信息包括每个服务接口的接口名和/或接口版本。其中,该请求消息用于从第一服务提供实例获取服务接口组的第二信息。
283.一种可能的实现方式中,s607中注册服务接口组以及第一服务提供实例,具体可以包括:注册实例建立第一映射关系,该第一映射关系包括服务接口组的标识与服务接口组包含的多个服务接口的映射关系;注册实例建立第二映射关系,该第二映射关系包括服务接口组的标识与包含服务接口组的第一服务提供实例的映射关系。通过第一映射关系将服务接口组与其包含的服务接口关联,通过第二映射关系将服务接口组与其相关的服务提供实例关联,在后续的服务接口组注册过程或服务请求过程中,可以通过映射关系获取对应内容,提高方案可行性及便捷性。
284.另一种可能的实现方式中,s607中注册实例可以将第一映射关系及第二映射关系写入存储设备。该写入操作可以实时进行,或者周期性进行。
285.例如,s607中注册实例可以周期性地建立第二映射关系,或者周期性地将第二映射关系写入存储系统,以进一步减少注册实例对存储设备的访问频率,本申请实施例对此不予限定。
286.示例性的,s607中注册实例可以将接口信息插入到服务接口组表。注册实例可以将服务接口组的接口信息包括的每个服务接口的接口信息分别存储到服务接口组表,并把第一服务提供实例的服务地址信息加入内存中维护的该服务接口组的服务地址列表中。
287.其中,服务接口组的服务地址列表包括了具有该服务接口组的服务提供实例的服务地址信息。一个服务提供实例的服务地址信息用于指示该服务提供实例提供服务的地址,其他设备通过该地址可以与该服务提供实例通信交互,通过其服务接口调用其提供的服务。
288.一种可能的实现方式中,s607中注册实例还可以生成该服务接口组的id。例如,注册实例可以根据随机算法,或者数值递进的方式,生成服务接口组的id,并将服务接口组的id与服务接口组的第一信息对应存储于缓存中,用于其他服务提供实例与注册实例交互时s604中进行是否已注册该服务接口组的判断。
289.一种可能的实现方式中,在s607中,注册实例还可以将服务接口组的第一信息与第一指示对应,用于其他服务提供实例与注册实例交互时s604中进行是否已注册该服务接口组的判断。
290.在s607之后,可以执行s605和s606,已完成注册流程。
291.一种可能的实现方式中,本申请实施例提供的服务提供方法还可以包括:注册实例向配置中心发送该注册实例的服务地址信息,以使得配置信息记录了注册实例最新的服务地址信息。
292.具体的,注册实例在启动时,可以把自己的服务地址信息写入配置中心的配置项,该配置项维持着注册实例的地址列表。
293.需要说的是,本申请实施例提供的服务提供方法包括的步骤可以根据实际需求配置执行顺序,本申请对此不予限定,图6或图7中仅示意了一种可能的步骤间的执行顺序,并不构成具体限定。
294.例如,假设一个服务提供实例配置了100个服务接口,有500个服务提供实例提供相同服务,则这500个服务提供实例具有同一个服务接口组,该服务接口组包含这100个服务接口。这500个服务提供实例启动时会分别为100个服务接口向注册实例进行注册,按照现有技术,注册实例的服务器需要对存储系统进行合计5万个写操作,本申请提供的服务提供方法,可以把5万个写入操作缩减为以下几个操作:
295.操作1:一个插入(insert)操作,向存储系统插入1行数据(记录服务接口组的接口信息)到服务接口组表。
296.操作2:一个接口插入(batch insert),插入100行数据(记录服务接口组的100个服务接口的接口信息)到接口表,每个服务接口与服务接口组的标识对应。
297.操作3:几个批插入(batch insert)操作,共插入500行数据(记录提供相同服务接口组的500个服务提供实例)到服务地址列表,每个服务地址与服务接口组的id关联。具体分成几个batch,取决于批量插入周期和各副本启动时间差,假设500个副本在1秒内陆续启动,批量插入周期为100毫秒,则大约10个batch insert完成。
298.通过该示例可以看出,本申请的方案大大减少了服务提供实例与注册实例的注册交互,还避免了对不同服务提供实例提供的相同服务接口组的重复注册,还大大降低了注册实例的写入操作,注册实例对服务注册的处理能力提升100倍以上,消除了性能瓶颈。另外,对于具有相同服务接口组的服务提供实例,可以都会选择同一个注册实例发起注册,当服务接口组的第一信息为哈希值或关联值时,不需要发送服务提供实例的接口信息,大大降低了网络流量。
299.再一方面,本申请实施例提供一种服务提供方法,该方法应用于包括注册实例及多个服务消费实例的服务提供系统中。该服务提供系统中的每个服务消费实例具有相同的消费接口组,消费接口组包含多个服务接口。该服务提供系统可以为图1或图4示意的分布式服务框架中的部分。
300.在该服务提供系统中,该注册实例与每个服务消费实例的交互过程相同,本申请下述实施例中仅以该注册实例与第一服务消费实例的交互过程为例,对本申请提供的方法进行说明,其他不再一一赘述。第一服务提供实例为该服务提供系统中的任一个服务提供实例。
301.如图8所示,该方法可以包括:
302.s801、第一服务消费实例生成消费接口组的第三信息。
303.s801中第一服务消费实例生成其具有的消费接口组的第三信息的方式,可以参考s601中第一服务提供实例生成其具有的服务接口组的第一信息的方式。
304.s802、第一服务消费实例向注册实例发送第一服务请求。
305.其中,第一服务请求包括第一服务消费实例具有的消费接口组的第三信息。该第一服务请求用于请求第一服务消费实例具有的消费接口组,即请求第一服务消费实例具有的消费接口组包含的服务接口。
306.一种可能的实现方式中,当该服务提供系统仅包括一个注册实例时,s802中可以向该注册实例发送第一服务请求。
307.另一种可能的实现方式中,当该服务提供系统仅包括多个注册实例时,s802中第一服务消费实例需选择一个注册实例发送第一服务请求。
308.s802中第一服务消费实例选取注册实例的方式,可以参考s602中第一服务提供实例选取注册实例的方式,此处不再赘述。
309.s803、注册实例接收第一服务消费实例发送的第一服务请求。
310.s803中注册实例接收到的第一服务请求,即s802中第一服务消费实例发送的第一服务请求。
311.s804、注册实例根据消费接口组的第三信息确定消费接口组是否被请求。
312.s804的一种实现举例:注册实例确定消费接口组的第三信息是否命中缓存。
313.一种可能的实现方式中,注册实例对请求过的一个或多个消费接口组,缓存了具有这些消费接口组的服务提供实例(即提供消费接口组中的服务接口的服务提供实例)的服务地址信息,并将该消费接口组与该消费接口组的第三信息或者该消费接口组的标识对应,s804中注册实例根据消费接口组的第三信息确定该消费接口组是否被请求,可以包括:注册实例确定是否缓存了与消费接口组的第三信息对应的具有该消费接口组的服务提供实例的服务地址信息。若存在与消费接口组的第三信息对应的具有该消费接口组的服务提供实例的服务地址信息,则确定消费接口组已被请求,否则未被请求。
314.另一种可能的实现方式中,注册实例对请求过的消费接口组,不仅缓存了具有这些消费接口组的服务提供实例的服务地址信息,并将该消费接口组与该消费接口组的第三信息或者该消费接口组的id对应,还分配第二指示与消费接口组的第三信息对应,第二指示用于指示该消费接口组已被请求,s804中注册实例根据消费接口组的第三信息确定消费接口组是否被请求,可以包括:注册实例确定是否存在与消费接口组的第三信息的第二指示。若存在与消费接口组的第三信息对应的第二指示,则确定第一服务请求请求的消费接口组已被请求,否则未被请求。
315.可选的,本申请还可以根据实际需求配置注册实例对请求过的消费接口组进行标记的方式,在s804中根据标记判断即可,本申请对此不再一一赘述。
316.可选的,若s804中注册实例确定第一服务消费实例请求的消费接口组已被请求,则直接执行s805。
317.s805、注册实例向第一服务消费实例发送具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息。
318.其中,注册实例缓存了具有被请求过的消费接口组对应的服务接口组的服务提供实例的服务地址信息。在注册实例确定第一服务消费实例请求的消费接口组已被请求的情况下,s805中注册实例从缓存中先获取该消费接口组对应的一个或多个服务接口组(即第一服务消费实例请求的一个或多个服务接口组),再获取具有这一个或多个接口组的服务提供实例的服务地址信息,发送给第一服务消费实例。
319.s806、第一服务消费实例接收注册实例发送的具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息。
320.一种可能的实现方式中,s806中接收的服务提供实例的服务地址信息,为注册实例判断第一服务消费实例请求的消费接口组已被请求时发送。
321.通过本申请提供的服务提供方法,注册实例在接收到第一服务消费实例发送的服务请求时,先判断第一服务消费实例请求的消费接口组是否被请求,在其已被请求的情况下无需再从存储系统获取具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息,直接反馈本地缓存的具有其请求的一个或多个服务接口组的服务提供实例的服务地址信息,避免了请求相同消费接口组的服务消费实例发起的服务请求都访问存储系统导致对存储系统访问量的增加,因此减少了注册实例对存储系统的访问量,减少了注册实例的注册负载。在注册实例的注册负载减少的情况下,注册实例不再是服务框架的瓶颈,也就降低注册实例的性能对服务框架的可用性与稳定性的影响。
322.可选的,若s804中注册实例确定第一服务消费实例请求的消费接口组未被请求,即第一服务消费实例第一个在该注册实例请求该消费接口组,注册实例则需要从存储系统中读取具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息。相应的,如图9所示,本申请提供的服务提供方法还可以包括s807。
323.s807、注册实例根据消费接口组的第三信息,从存储设备中获取具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息。
324.在s807中,注册实例可以先根据消费接口组的第三信息,获取该消费接口组的第四信息,再根据消费接口组的第四信息,从存储设备中获取第一服务消费实例请求的每个服务接口组(包含第四信息指示的多个服务接口的服务接口组)的服务提供实例的服务地址信息。
325.s807中注册实例获取消费接口组的第四信息,可以参考s607中注册实例获取服务接口组的第二信息的方式,此处不再赘述。
326.具体的,通过服务提供实例与注册实例进行服务注册的交互,存储系统中可以通过映射关系记录了服务提供实例的服务地址信息,且与服务接口组标识对应。s807中注册实例先根据第一服务请求中的消费接口组的第三信息,确定具有该消费接口组的任一个服务接口的每个服务接口组的标识,然后从存储系统中读取每个服务接口组标识对应的服务提供实例的服务地址信息,即为具有第一服务消费实例请求的一个或多个服务接口组的服务提供实例的服务地址信息。
327.s807中注册实例实现的是对存储系统的读取操作。前述s805的操作则省略了s807的操作,降低了对存储系统的访问量。
328.在s807之后,可以执行s805和s806,以实现向第一服务消费实例发送具有其请求的一个或多个接口组的服务提供实例的服务地址信息。
329.在s807之后,如图9所示,本申请提供的方法还可以包括s808和s809。
330.s808、注册实例缓存消费接口组的第三信息与消费接口组标识的对应关系。
331.s809、注册实例缓存具有第一服务消费实例请求的服务接口组的服务提供实例的服务地址信息。
332.通过s808和s809的操作,用于其他服务消费实例与注册实例交互时s804中进行是否已被请求该消费接口组的判断。
333.进一步可选的,在执行s808和s809的过程中,注册实例还可以将消费接口组的第三信息与第二指示对应,用于其他服务消费实例与注册实例交互时s804中进行否已被请求该消费接口组的判断。
334.进一步可选的,本申请实施例提供的服务提供方法还可以包括:注册实例向配置中心发送该注册实例的服务地址信息,以使得配置中心记录了注册实例最新的服务地址信息。
335.具体的,注册实例在启动时,可以把自己的服务地址信息写入配置中心的配置项,该配置项维持着注册实例的地址列表。
336.在本申请的实施例中,可以通过服务接口组或消费接口组的标识把服务提供实例、服务消费实例、注册实例关联了起来。例如,可以按照服务接口组的标识查看以下主要信息:该服务接口组提供哪些服务、该服务接口组由哪些服务提供实例提供、该服务接口组由哪些服务消费实例在消费。
337.上述主要从注册实例与服务提供实例,注册实例与服务消费实例的交互过程的工作原理角度对本申请实施例提供的方案进行了介绍。可以理解的是,上述注册实例、服务提供实例、服务消费实例为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
338.本申请实施例可以根据上述方法示例对注册实例、服务提供实例、服务消费实例进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
339.在采用对应各个功能划分各个功能模块的情况下,图10示出了上述实施例中所涉及的注册实例100的一种可能的结构示意图。如图10所示,注册实例100可以包括:接收单元1001、确定单元1002、注册单元1003。其中,接收单元1001用于执行图6或图7中的过程s603;确定单元1002用于执行图6或图7中的过程s604;注册单元1003用于执行图7中的过程s607。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
340.在采用对应各个功能划分各个功能模块的情况下,图11示出了上述实施例中所涉及的注册实例110的一种可能的结构示意图。如图11所示,注册实例110可以包括:接收单元1101、确定单元1102、发送单元1103。其中,接收单元1001用于执行图6或图7中的过程s603;确定单元1002用于执行图6或图7中的过程s604;发送单元1103用于执行图6或图7中的过程s605。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
341.在采用对应各个功能划分各个功能模块的情况下,图12示出了上述实施例中所涉及的注册实例120的一种可能的结构示意图。如图12所示,注册实例120可以包括:接收单元1201、确定单元1202、发送单元1203。其中,接收单元1201用于执行图8或图9中的过程s803;确定单元1202用于执行图8或图9中的过程s804;发送单元1203用于执行图8或图9中的过程s805。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
342.在采用集成的单元的情况下,图13示出了上述实施例中所涉及注册实例130的一种可能的结构示意图。该注册实例130可以执行前述服务注册流程中注册实例的功能,或者也可以执行前述服务提供方法中注册实例的功能。如图13所示,注册实例130可以包括:处理模块1301、通信模块1302。处理模块1301用于对注册实例130的动作进行控制管理,通信模块1302用于与其他设备通信。例如,处理模块1301用于执行图6或图7中的过程s604、或图7中的过程s605、或图7中的过程s607、或图8或图9中的过程s804、或图9中的过程s807、或图9中的过程s808。处理模块1301还可以用于通过通信模块1302执行图6或图7中的过程s603、或图6或图7中的过程s605、或图8或图9中的过程s803、或图8或图9中的过程s805。注册实例130还可以包括存储模块1303,用于存储注册实例130的程序代码和数据。
343.其中,处理模块1301可以为图5所示的计算设备50实体结构中的处理器501,可以是处理器或控制器。例如可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1301也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。通信模块1302可以为图5所示的计算设备50的实体结构中的网络接口503,通信模块1302可以是通信端口,或者可以是网络接口、收发电路或通信接口等。或者,上述通信接口可以通过上述具有收发功能的元件,实现与其他设备的通信。上述具有收发功能的元件可以由天线和/或射频装置实现。存储模块1303可以是图5所示的计算设备50的实体结构中的存储器502。
344.当处理模块1301为处理器,通信模块1302为网络接口,存储模块1303为存储器时,本申请实施例图13所涉及的注册实例130可以为图5所示的计算设备50。
345.如前述,本申请实施例提供的服务注册实例100或服务注册实例120或注册实例130,可以用于实施上述本申请各实施例实现的方法中相应的功能,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请各实施例。
346.在采用对应各个功能划分各个功能模块的情况下,图14示出了上述实施例中所涉及的服务提供实例140的一种可能的结构示意图。如图14所示,服务提供实例140可以包括:
发送单元1401及接收单元1402。其中,发送单元1401用于执行图6或图7中的过程s602;接收单元1402用于执行图6或图7中的过程s606。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
347.在采用集成的单元的情况下,图15示出了上述实施例中所涉及服务提供实例150的一种可能的结构示意图。如图15所示,服务提供实例150可以包括:处理模块1501、通信模块1502。处理模块1501用于对服务提供实例15的动作进行控制管理,通信模块1502用于与其他设备通信。例如,处理模块1501还可以用于通过通信模块1502执行图6或图7中的过程s602、s606。服务提供实例150还可以包括存储模块1503,用于存储服务提供实例150的程序代码和数据。
348.其中,处理模块1501可以为图5所示的计算设备50实体结构中的处理器501,可以是处理器或控制器。例如可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1501也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。通信模块1502可以为图5所示的计算设备50的实体结构中的网络接口503,通信模块1502可以是通信端口,或者可以是网络接口、收发电路或通信接口等。或者,上述通信接口可以通过上述具有收发功能的元件,实现与其他设备的通信。上述具有收发功能的元件可以由天线和/或射频装置实现。存储模块1503可以是图5所示的计算设备50的实体结构中的存储器502。
349.当处理模块1501为处理器,通信模块1502为网络接口,存储模块1503为存储器时,本申请实施例图15所涉及的服务提供实例150可以为图5所示的计算设备50。
350.如前述,本申请实施例提供的服务提供实例140或服务提供实例150,可以用于实施上述本申请各实施例实现的方法中相应的功能,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请各实施例。
351.在采用对应各个功能划分各个功能模块的情况下,图16示出了上述实施例中所涉及的服务消费实例160的一种可能的结构示意图。如图16所示,服务消费实例160可以包括:发送单元1601及接收单元1602。其中,发送单元1601用于执行图8或图9中的过程s802;接收单元1602用于执行图8或图9中的过程s806。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
352.在采用集成的单元的情况下,图17示出了上述实施例中所涉及服务消费实例170的一种可能的结构示意图。如图17所示,服务消费实例170可以包括:处理模块1701、通信模块1702。处理模块1701用于对服务消费实例170的动作进行控制管理,通信模块1702用于与其他设备通信。例如,处理模块1701可以用于通过通信模块1702执行图8或图9中的过程s802、s806。服务消费实例170还可以包括存储模块1703,用于存储服务消费实例17的程序代码和数据。
353.其中,处理模块1701可以为图5所示的计算设备50实体结构中的处理器501,可以是处理器或控制器。例如可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。通信模块1802可以为图5所
示的计算设备50的实体结构中的网络接口503,通信模块1702可以是通信端口,或者可以是网络接口、收发电路或通信接口等。或者,上述通信接口可以通过上述具有收发功能的元件,实现与其他设备的通信。上述具有收发功能的元件可以由天线和/或射频装置实现。存储模块1703可以是图5所示的计算设备50的实体结构中的存储器502。
354.当处理模块1701为处理器,通信模块1702为网络接口,存储模块1703为存储器时,本申请实施例图17所涉及的服务消费实例170可以为图5所示的计算设备50。
355.如前述,本申请实施例提供的服务消费实例160或服务消费实例170,可以用于实施上述本申请各实施例实现的方法中相应的功能,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请各实施例。
356.再一方面,本申请实施例提供一种服务提供系统,包括注册实例及多个服务提供实例。
357.再一方面,本申请实施例提供一种服务提供系统,包括注册实例及多个服务消费实例。
358.作为本实施例的另一种形式,提供一种计算机可读存储介质,其上存储有指令,该指令被执行时以注册实例或者服务提供实例或者服务消费实例的角色来执行上述方法实施例中的服务提供方法。
359.作为本实施例的另一种形式,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机(以注册实例或者服务提供实例或者服务消费实例的角色)执行时执行上述方法实施例中的服务提供方法。
360.本申请实施例再提供一种芯片系统,该芯片系统包括处理器,用于以注册实例或者服务提供实例或者服务消费实例的角色来实现本发明实施例的技术方法。在一种可能的设计中,该芯片系统还包括存储器,用于保存本发明实施例必要的程序指令和/或数据。在一种可能的设计中,该芯片系统还包括存储器,用于处理器调用存储器中存储的应用程序代码。该芯片系统,可以由一个或多个芯片构成,也可以包含芯片和其他分立器件,本申请实施例对此不作具体限定。
361.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
362.本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
363.在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦
合或通信连接,可以是电性或其它的形式。
364.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
365.另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
366.上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
367.最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1