CN106506509A - 可进行服务治理与语言调用的轻量级rpc框架实现方法 - Google Patents

可进行服务治理与语言调用的轻量级rpc框架实现方法 Download PDF

Info

Publication number
CN106506509A
CN106506509A CN201611022556.6A CN201611022556A CN106506509A CN 106506509 A CN106506509 A CN 106506509A CN 201611022556 A CN201611022556 A CN 201611022556A CN 106506509 A CN106506509 A CN 106506509A
Authority
CN
China
Prior art keywords
service
module
client
server
data
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.)
Granted
Application number
CN201611022556.6A
Other languages
English (en)
Other versions
CN106506509B (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.)
Tubatu Group Co Ltd
Original Assignee
Shenzhen Bincent Technology Co 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 Shenzhen Bincent Technology Co Ltd filed Critical Shenzhen Bincent Technology Co Ltd
Priority to CN201611022556.6A priority Critical patent/CN106506509B/zh
Publication of CN106506509A publication Critical patent/CN106506509A/zh
Application granted granted Critical
Publication of CN106506509B publication Critical patent/CN106506509B/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/133Protocols for remote procedure calls [RPC]
    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供了一种可进行服务治理与语言调用的轻量级RPC框架实现方法,包括以下步骤:所述服务器向注册中心注册声明所提供的服务,通过ServerBootstrap暴露策略向所述注册中心以服务规范的路径暴露自己,所述客户端进行初始化并向所述注册中心订阅指定服务,所述注册中心将服务列表返回所述服务器,所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用;该可进行服务治理与语言调用的轻量级RPC框架实现方法能高度适配公司环境,可进行服务治理与跨语言调用,轻量部署和业务代码解耦、解决微服务难于管理和难于跨语言调用的问题。

Description

可进行服务治理与语言调用的轻量级RPC框架实现方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种可进行服务治理与语言调用的轻量级RPC框架实现方法。
背景技术
目前,各大互联网公司大量使用微服务架构,服务与服务之间进行跨进程间通信,RPC(远程过程调用)框架应运而生。业界RPC框架大致分为两类,一种是偏重服务治理,另一种侧重跨语言调用。
服务治理型RPC框架典型的是Dubbo和DubboX。Dubbo是阿里开源的分布式服务框架,实现高性能的RPC调用同时提供了丰富的管理功能,是一款应用广泛的优秀的RPC框架,但现在较少维护更新,DubboX是基于Dubbo框架扩展的一个RPC框架,支持REST风格的远程调用、Kryo/FST序列化。
这类RPC框架的特点是功能丰富,提供高性能的远程调用、服务发现及服务治理能力,适用于大型服务的服务解耦及服务治理,对于特定语言(Java)的项目可以实现透明化接入,缺点是语言耦合度较高,跨语言支持难度较大。
跨语言调用型的RPC框架有Thrift、gRPC、Hessian、Hprose等,这类RPC框架侧重于服务的跨语言调用,能够支持大部分的语言进行语言无关的调用,非常适合多语言调用场景。但这类框架没有服务发现相关机制,实际使用时需要代理层进行请求转发和负载均衡策略控制。
类似于Dubbo这类偏重服务治理的框架,虽然能够提供远程调用、服务发现及服务治理能力,但是语言耦合度较高,跨语言支持难度较大,然而使用类似Thrift这类框架,没有服务发现和服务治理等相关机制;
因此,本领域的技术人员亟需研究出一种适配公司环境,可进行服务治理与跨语言调用,轻量部署和业务代码解耦、解决微服务难于管理和难于跨语言调用的问题的可进行服务治理与语言调用的轻量级RPC框架实现方法。
发明内容
本发明要解决的技术问题是提供一种可进行服务治理与语言调用的轻量级RPC框架实现方法,该可进行服务治理与语言调用的轻量级RPC框架实现方法能高度适配公司环境,可进行服务治理与跨语言调用,轻量部署和业务代码解耦、解决微服务难于管理和难于跨语言调用的问题。
为解决上述技术问题,本发明提供了一种可进行服务治理与语言调用的轻量级RPC框架实现方法:提供注册中心、服务器及客户端,所述服务器包括第一注册模块、第一传输模块、第一序列化模块、第一协议模块及服务模块,所述客户端包括第二注册模块、第二传输模块、第二序列化模块、集群模块、第二协议模块及引用模块;
所述可进行服务治理与语言调用的轻量级RPC框架实现方法包括以下步骤:所述服务器向注册中心注册声明所提供的服务,通过ServerBootstrap暴露策略向所述注册中心以服务规范的路径暴露自己,所述客户端进行初始化并向所述注册中心订阅指定服务,所述注册中心将服务列表返回所述服务器,所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用;
所述“所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用”的步骤的实现步骤包括:
S6:所述客户端的引用模块引入API,调用所述客户端的API接口并将调用的数据发送给所述第二协议模块;
S7:所述第二协议模块接收所述引用模块调用的数据,并进行调用的代理,所述第二协议模块将代理的服务数据发送所述集群模块;
S8:所述集群模块根据负载均衡策略选取所述集群模块持有的可用的服务实例进行集群;
S9:所述集群模块保持所述客户端与与服务器进行通信,所述集群模块将服务实例的数据发送所述第二序列化模块,维护服务实例的连接;
S10:所述第二序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JAVA对象到JSON的序列化,所述第二序列化模块序列化完成后将序列化的服务数据发送给所述第二传输模块;
S11:所述第二传输模块进行I/O的操作向所述服务器的第一传输模块发送服务数据包;
S12:所述第一传输模块接收所述第二传输模块发送的服务数据并将接收的数据发送给所述第一序列化模块;
S13:所述第一序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JSON到JAVA对象的解序列化,所述第一序列化模块解序列化完成后将解序列化的服务数据发送给所述第一协议模块;
S14:所述第一协议模块接收所述第一序列化模块发送的序列化数据,并将服务变更数据同步到所述第一注册模块,所述第一协议模块将解序列化的服务数据发送所述服务模块;
S15:所述服务模块将服务实例的数据返回发送给所述第一协议模块;
S16:所述第一协议模块接收所述服务模块发送的服务数据将变更的服务数据同步到所述第一注册模块,所述第一协议模块将服务数据发送给所述第一序列化模块;
S17:所述第一序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JAVA到JSON对象的序列化,所述第一序列化模块序列化完成后将序列化的服务数据发送给所述第一传输模块;
S18:所述第一传输模块进行O/I的操作向所述服务器的第二传输模块发送服务数据包;
S19:所述第二传输模块接收所述第一传输模块发送的服务数据并将接收的数据发送给所述第二序列化模块;
S20:所述第二序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JSON对象到JAVA的解序列化,所述第二序列化模块解序列化完成后将序列化的服务数据发送给所述集群模块;
S21:所述集群模块根据负载均衡策略选取所述集群模块持有的可用的服务实例进行集群并将集群完成的服务数据发送所述第二协议模块;
S22:所述第二协议模块接收所述集群模块发送的序列化服务数据,并将服务变更数据同步到所述第二注册模块,所述第二协议模块将集群的服务数据发送所述引用模块;
S23:所述客户端的引用模块引入API,调用所述客户端的API接口
其中,所述XML配置的参数包括:日志、服务变量、服务版本。
优选地,所述服务器向注册中心注册声明所提供的服务进行服务暴露包括以下步骤:
S1:所述第一注册模块进行服务初始化,通过XML配置中的参数来初始化服务参数,通过所述参数来构建向所述注册中心上报字段;
S2:当服务初始化完成后,所述第一注册模块通过ServerBootstrap暴露策略向注册中心以服务公司规范的路径暴露自己,通过所述上报的字段来描述本服务提供的服务和服务元数据。
S3:当所述第一注册模块将服务在注册中心完成注册后,注册中心推送本次事件给订阅了此服务的客户端,完成整个服务器的暴露过程。
优选地,所述客户端的初始化的步骤包括:
S4:所述客户端的第二注册模块根据XML中配置的服务名在注册中心订阅所述服务;
S5:所述客户端接收所述注册中心推送过来的事件,从所述事件中获取所述服务上报的字段来取得这个服务的元数据。
优选地,所述第一注册模块及第二注册模块用于和注册中心进行交互业务,所述服务器会在系统初始化时通过所述第一注册模块注册服务,所述客户端在客户端初始化时通过所述第二注册模块订阅具体提供服务的服务列表,当服务列表发生变更时由所述第二注册模块通知所述客户端。
优选地,所述交互业务包括注册服务、订阅服务、服务变更通知及服务心跳发送。
优选地,所述第一协议模块及所述第二协议模块用于进行RPC服务的描述、RPC服务的配置管理、添加不同功能的过滤器来完成统计及并发限制。
优选地,所述第一序列化模块及第二序列化模块用于将所述客户端及服务器请求中的参数、结果进行序列化和反序列化。
优选地,所述序列化和反序列化为进行JSON对象与字节流的互相转换,JAVA对象和JSON的互相转换。
优选地,所述集群模块用于一组可用的服务模块在逻辑上的封装,包含若干可以提供rpc服务的服务子模块,根据不同的高可用与负载均衡策略选择一个可用的服务子模块进行路由,并发起远程调用。
采用了上述方法之后,所述服务器向注册中心注册声明所提供的服务,通过ServerBootstrap暴露策略向所述注册中心以服务规范的路径暴露自己,所述客户端进行初始化并向所述注册中心订阅指定服务,所述注册中心将服务列表返回所述服务器,所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用;所述客户端的引用模块引入API,调用所述客户端的API接口并将调用的数据发送给所述第二协议模块;所述第二协议模块接收所述引用模块调用的数据,并进行调用的代理,所述第二协议模块将代理的服务数据发送所述集群模块;所述集群模块根据负载均衡策略选取所述集群模块持有的可用的服务实例进行集群;所述集群模块保持所述客户端与与服务器进行通信,所述集群模块将服务实例的数据发送所述第二序列化模块,维护服务实例的连接;所述第二序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JAVA对象到JSON的序列化,所述第二序列化模块序列化完成后将序列化的服务数据发送给所述第二传输模块;所述第二传输模块进行I/O的操作向所述服务器的第一传输模块发送服务数据包;所述第一传输模块接收所述第二传输模块发送的服务数据并将接收的数据发送给所述第一序列化模块;所述第一序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JSON到JAVA对象的解序列化,所述第一序列化模块解序列化完成后将解序列化的服务数据发送给所述第一协议模块;所述第一协议模块接收所述第一序列化模块发送的序列化数据,并将服务变更数据同步到所述第一注册模块,所述第一协议模块将解序列化的服务数据发送所述服务模块;然后,再由所述服务模块返回到所述客户端的引用模块;该可进行服务治理与语言调用的轻量级RPC框架实现方法能高度适配公司环境,可进行服务治理与跨语言调用,轻量部署和业务代码解耦、解决微服务难于管理和难于跨语言调用的问题。
附图说明
图1是本发明的一种可进行服务治理与语言调用的轻量级RPC框架实现方法的模块执行流程图;
图2是与图1的执行流程图对应的整体模型示意图;
图3是本发明可进行服务治理与语言调用的轻量级RPC框架实现方法的具体架构示意图;
图4是图2的整体模型落地到具体实施例的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
实施例1
请参阅图1至图2,图1是本发明的一种可进行服务治理与语言调用的轻量级RPC框架实现方法的模块执行流程图;
图2是与图1的执行流程图对应的整体模型示意图。
本发明公开了一种可进行服务治理与语言调用的轻量级RPC框架实现方法,提供注册中心、服务器及客户端,所述服务器包括第一注册模块、第一传输模块、第一序列化模块、第一协议模块及服务模块,所述客户端包括第二注册模块、第二传输模块、第二序列化模块、集群模块、第二协议模块及引用模块;
所述可进行服务治理与语言调用的轻量级RPC框架实现方法包括以下步骤:所述服务器向注册中心注册声明所提供的服务,通过ServerBootstrap暴露策略向所述注册中心以服务规范的路径暴露自己,所述客户端进行初始化并向所述注册中心订阅指定服务,所述注册中心将服务列表返回所述服务器,所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用;
所述服务器向注册中心注册声明所提供的服务进行服务暴露包括以下步骤:
S1:所述第一注册模块进行服务初始化,通过XML配置中的参数来初始化服务参数,通过所述参数来构建向所述注册中心上报字段;
S2:当服务初始化完成后,所述第一注册模块通过ServerBootstrap暴露策略向注册中心以服务公司规范的路径暴露自己,通过所述上报的字段来描述本服务提供的服务和服务元数据。
S3:当所述第一注册模块将服务在注册中心完成注册后,注册中心推送本次事件给订阅了此服务的客户端,完成整个服务器的暴露过程。
所述客户端的初始化的步骤包括:
S4:所述客户端的第二注册模块根据XML中配置的服务名在注册中心订阅所述服务;
S5:所述客户端接收所述注册中心推送过来的事件,从所述事件中获取所述服务上报的字段来取得这个服务的元数据。
所述“所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用”的步骤的实现步骤包括:
S6:所述客户端的引用模块引入API,调用所述客户端的API接口并将调用的数据发送给所述第二协议模块;
S7:所述第二协议模块接收所述引用模块调用的数据,并进行调用的代理,所述第二协议模块将代理的服务数据发送所述集群模块;
S8:所述集群模块根据负载均衡策略选取所述集群模块持有的可用的服务实例进行集群;
S9:所述集群模块保持所述客户端与与服务器进行通信,所述集群模块将服务实例的数据发送所述第二序列化模块,维护服务实例的连接;
S10:所述第二序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JAVA对象到JSON的序列化,所述第二序列化模块序列化完成后将序列化的服务数据发送给所述第二传输模块;
S11:所述第二传输模块进行I/O的操作向所述服务器的第一传输模块发送服务数据包;
S12:所述第一传输模块接收所述第二传输模块发送的服务数据并将接收的数据发送给所述第一序列化模块;
S13:所述第一序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JSON到JAVA对象的解序列化,所述第一序列化模块解序列化完成后将解序列化的服务数据发送给所述第一协议模块;
S14:所述第一协议模块接收所述第一序列化模块发送的序列化数据,并将服务变更数据同步到所述第一注册模块,所述第一协议模块将解序列化的服务数据发送所述服务模块;
S15:所述服务模块将服务实例的数据返回发送给所述第一协议模块;
S16:所述第一协议模块接收所述服务模块发送的服务数据将变更的服务数据同步到所述第一注册模块,所述第一协议模块将服务数据发送给所述第一序列化模块;
S17:所述第一序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JAVA到JSON对象的序列化,所述第一序列化模块序列化完成后将序列化的服务数据发送给所述第一传输模块;
S18:所述第一传输模块进行O/I的操作向所述服务器的第二传输模块发送服务数据包;
S19:所述第二传输模块接收所述第一传输模块发送的服务数据并将接收的数据发送给所述第二序列化模块;
S20:所述第二序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JSON对象到JAVA的解序列化,所述第二序列化模块解序列化完成后将序列化的服务数据发送给所述集群模块;
S21:所述集群模块根据负载均衡策略选取所述集群模块持有的可用的服务实例进行集群并将集群完成的服务数据发送所述第二协议模块;
S22:所述第二协议模块接收所述集群模块发送的序列化服务数据,并将服务变更数据同步到所述第二注册模块,所述第二协议模块将集群的服务数据发送所述引用模块;
S23:所述客户端的引用模块引入API,调用所述客户端的API接口
其中,所述XML配置的参数包括:日志、服务变量、服务版本。
在本实施例中,所述第一注册模块及第二注册模块用于和注册中心进行交互业务,所述服务器会在系统初始化时通过所述第一注册模块注册服务,所述客户端在客户端初始化时通过所述第二注册模块订阅具体提供服务的服务列表,当服务列表发生变更时由所述第二注册模块通知所述客户端;
所述交互业务包括注册服务、订阅服务、服务变更通知及服务心跳发送。
在本实施例中,所述第一协议模块及所述第二协议模块用于进行RPC服务的描述、RPC服务的配置管理、添加不同功能的过滤器来完成统计及并发限制。
在本实施例中,所述第一序列化模块及第二序列化模块用于将所述客户端及服务器请求中的参数、结果进行序列化和反序列化。
在本实施例中,所述序列化和反序列化为进行JSON对象与字节流的互相转换,JAVA对象和JSON的互相转换。
在本实施例中,所述集群模块用于一组可用的服务模块在逻辑上的封装,包含若干可以提供rpc服务的服务子模块,根据不同的高可用与负载均衡策略选择一个可用的服务子模块进行路由,并发起远程调用。
在所述服务器与所述客户端连接,所述客户端对所述服务器的服务数据进行调用时,所述客户端拥有高可用和负载均衡功能,也可根据具体的路由策略来选取可用的实例,以下是几个例子:
请参阅图3,图3是本发明可进行服务治理与语言调用的轻量级RPC框架实现方法的具体架构示意图;
所述可进行服务治理与语言调用的轻量级RPC框架实现方法的具体架构如图3所示。
请参阅图4,图4是图2的整体模型落地到具体实施例的示意图;
HelloService提供服务,并向注册中心注册自己,说明自己提供的服务,WorldService向注册中心订阅HelloService,感知到HelloService的上下线,并建立或断开连接,进行rpc调用。
采用了上述方法之后,所述服务器向注册中心注册声明所提供的服务,通过ServerBootstrap暴露策略向所述注册中心以服务规范的路径暴露自己,所述客户端进行初始化并向所述注册中心订阅指定服务,所述注册中心将服务列表返回所述服务器,所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用;所述客户端的引用模块引入API,调用所述客户端的API接口并将调用的数据发送给所述第二协议模块;所述第二协议模块接收所述引用模块调用的数据,并进行调用的代理,所述第二协议模块将代理的服务数据发送所述集群模块;所述集群模块根据负载均衡策略选取所述集群模块持有的可用的服务实例进行集群;所述集群模块保持所述客户端与与服务器进行通信,所述集群模块将服务实例的数据发送所述第二序列化模块,维护服务实例的连接;所述第二序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JAVA对象到JSON的序列化,所述第二序列化模块序列化完成后将序列化的服务数据发送给所述第二传输模块;所述第二传输模块进行I/O的操作向所述服务器的第一传输模块发送服务数据包;所述第一传输模块接收所述第二传输模块发送的服务数据并将接收的数据发送给所述第一序列化模块;所述第一序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JSON到JAVA对象的解序列化,所述第一序列化模块解序列化完成后将解序列化的服务数据发送给所述第一协议模块;所述第一协议模块接收所述第一序列化模块发送的序列化数据,并将服务变更数据同步到所述第一注册模块,所述第一协议模块将解序列化的服务数据发送所述服务模块;然后,再由所述服务模块返回到所述客户端的引用模块;该可进行服务治理与语言调用的轻量级RPC框架实现方法能高度适配公司环境,可进行服务治理与跨语言调用,轻量部署和业务代码解耦、解决微服务难于管理和难于跨语言调用的问题。
同时,应当理解的是,以上仅为本发明的优选实施例,不能因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效实现方法,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.一种可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:提供注册中心、服务器及客户端,所述服务器包括第一注册模块、第一传输模块、第一序列化模块、第一协议模块及服务模块,所述客户端包括第二注册模块、第二传输模块、第二序列化模块、集群模块、第二协议模块及引用模块;
所述可进行服务治理与语言调用的轻量级RPC框架实现方法包括以下步骤:所述服务器向注册中心注册声明所提供的服务,通过ServerBootstrap暴露策略向所述注册中心以服务规范的路径暴露自己,所述客户端进行初始化并向所述注册中心订阅指定服务,所述注册中心将服务列表返回所述服务器,所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用;
所述“所述客户端与所述注册中心返回信息的服务器建立连接,进行RPC服务调用”的步骤的实现步骤包括:
S6:所述客户端的引用模块引入API,调用所述客户端的API接口并将调用的数据发送给所述第二协议模块;
S7:所述第二协议模块接收所述引用模块调用的数据,并进行调用的代理,所述第二协议模块将代理的服务数据发送所述集群模块;
S8:所述集群模块根据负载均衡策略选取所述集群模块持有的可用的服务实例进行集群;
S9:所述集群模块保持所述客户端与与服务器进行通信,所述集群模块将服务实例的数据发送所述第二序列化模块,维护服务实例的连接;
S10:所述第二序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JAVA对象到JSON的序列化,所述第二序列化模块序列化完成后将序列化的服务数据发送给所述第二传输模块;
S11:所述第二传输模块进行I/O的操作向所述服务器的第一传输模块发送服务数据包;
S12:所述第一传输模块接收所述第二传输模块发送的服务数据并将接收的数据发送给所述第一序列化模块;
S13:所述第一序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JSON到JAVA对象的解序列化,所述第一序列化模块解序列化完成后将解序列化的服务数据发送给所述第一协议模块;
S14:所述第一协议模块接收所述第一序列化模块发送的序列化数据,并将服务变更数据同步到所述第一注册模块,所述第一协议模块将解序列化的服务数据发送所述服务模块;
S15:所述服务模块将服务实例的数据返回发送给所述第一协议模块;
S16:所述第一协议模块接收所述服务模块发送的服务数据将变更的服务数据同步到所述第一注册模块,所述第一协议模块将服务数据发送给所述第一序列化模块;
S17:所述第一序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JAVA到JSON对象的序列化,所述第一序列化模块序列化完成后将序列化的服务数据发送给所述第一传输模块;
S18:所述第一传输模块进行O/I的操作向所述服务器的第二传输模块发送服务数据包;
S19:所述第二传输模块接收所述第一传输模块发送的服务数据并将接收的数据发送给所述第二序列化模块;
S20:所述第二序列化模块根据所述客户端与所述服务器双方通信制定好的协议进行JSON对象到JAVA的解序列化,所述第二序列化模块解序列化完成后将序列化的服务数据发送给所述集群模块;
S21:所述集群模块根据负载均衡策略选取所述集群模块持有的可用的服务实例进行集群并将集群完成的服务数据发送所述第二协议模块;
S22:所述第二协议模块接收所述集群模块发送的序列化服务数据,并将服务变更数据同步到所述第二注册模块,所述第二协议模块将集群的服务数据发送所述引用模块;
S23:所述客户端的引用模块引入API,调用所述客户端的API接口其中,所述XML配置的参数包括:日志、服务变量、服务版本。
2.根据权利要求1所述的可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:
所述服务器向注册中心注册声明所提供的服务进行服务暴露包括以下步骤:
S1:所述第一注册模块进行服务初始化,通过XML配置中的参数来初始化服务参数,通过所述参数来构建向所述注册中心上报字段;
S2:当服务初始化完成后,所述第一注册模块通过ServerBootstrap暴露策略向注册中心以服务公司规范的路径暴露自己,通过所述上报的字段来描述本服务提供的服务和服务元数据。
S3:当所述第一注册模块将服务在注册中心完成注册后,注册中心推送本次事件给订阅了此服务的客户端,完成整个服务器的暴露过程。
3.根据权利要求1所述的可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:所述客户端的初始化的步骤包括:
S4:所述客户端的第二注册模块根据XML中配置的服务名在注册中心订阅所述服务;
S5:所述客户端接收所述注册中心推送过来的事件,从所述事件中获取所述服务上报的字段来取得这个服务的元数据。
4.根据权利要求1所述的可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:所述第一注册模块及第二注册模块用于和注册中心进行交互业务,所述服务器会在系统初始化时通过所述第一注册模块注册服务,所述客户端在客户端初始化时通过所述第二注册模块订阅具体提供服务的服务列表,当服务列表发生变更时由所述第二注册模块通知所述客户端。
5.根据权利要求4所述的可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:所述交互业务包括注册服务、订阅服务、服务变更通知及服务心跳发送。
6.根据权利要求1所述的可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:所述第一协议模块及所述第二协议模块用于进行RPC服务的描述、RPC服务的配置管理、添加不同功能的过滤器来完成统计及并发限制。
7.根据权利要求1所述的可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:所述第一序列化模块及第二序列化模块用于将所述客户端及服务器请求中的参数、结果进行序列化和反序列化。
8.根据权利要求1所述的可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:所述序列化和反序列化为进行JSON对象与字节流的互相转换,JAVA对象和JSON的互相转换。
9.根据权利要求1所述的可进行服务治理与语言调用的轻量级RPC框架实现方法,其特征在于:所述集群模块用于一组可用的服务模块在逻辑上的封装,包含若干可以提供rpc服务的服务子模块,根据不同的高可用与负载均衡策略选择一个可用的服务子模块进行路由,并发起远程调用。
CN201611022556.6A 2016-11-15 2016-11-15 可进行服务治理与语言调用的轻量级rpc框架实现方法 Active CN106506509B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611022556.6A CN106506509B (zh) 2016-11-15 2016-11-15 可进行服务治理与语言调用的轻量级rpc框架实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611022556.6A CN106506509B (zh) 2016-11-15 2016-11-15 可进行服务治理与语言调用的轻量级rpc框架实现方法

Publications (2)

Publication Number Publication Date
CN106506509A true CN106506509A (zh) 2017-03-15
CN106506509B CN106506509B (zh) 2019-11-08

Family

ID=58327236

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611022556.6A Active CN106506509B (zh) 2016-11-15 2016-11-15 可进行服务治理与语言调用的轻量级rpc框架实现方法

Country Status (1)

Country Link
CN (1) CN106506509B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107479903A (zh) * 2017-08-30 2017-12-15 四川长虹电器股份有限公司 基于Dubbo框架的灵活控制服务模块的方法
CN107612713A (zh) * 2017-08-21 2018-01-19 同程网络科技股份有限公司 一种治理后端服务的方法
CN108255615A (zh) * 2017-11-30 2018-07-06 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN108762780A (zh) * 2018-05-09 2018-11-06 四川华创世纪科技有限公司 一种实现服务软件程序分离运行的方法
CN109862095A (zh) * 2019-01-30 2019-06-07 新华三大数据技术有限公司 基于Web服务的数据处理方法及装置
CN110557357A (zh) * 2018-05-31 2019-12-10 华为技术有限公司 一种远程过程调用协议自适应方法、相关装置及服务器
CN110740172A (zh) * 2019-09-29 2020-01-31 北京淇瑀信息科技有限公司 一种基于微服务架构的路由管理方法、装置和系统
CN111726425A (zh) * 2019-03-18 2020-09-29 互联网域名系统北京市工程研究中心有限公司 一种域名创建系统
CN112015374A (zh) * 2020-08-18 2020-12-01 中国电子科技集团公司第二十八研究所 一种基于自然语言的跨编程语言微服务集成系统
CN112035276A (zh) * 2020-08-06 2020-12-04 上海视云网络科技有限公司 一种基于java的跨平台可扩展的RPC框架设计方法
CN112114979A (zh) * 2020-08-31 2020-12-22 厦门安胜网络科技有限公司 远程过程调用方法和装置
CN112804249A (zh) * 2021-01-28 2021-05-14 中汽创智科技有限公司 远程调用自动驾驶平台的数据通信方法及系统
CN113190362A (zh) * 2021-04-22 2021-07-30 北京达佳互联信息技术有限公司 服务调用方法、装置、计算机设备及存储介质
CN113485717A (zh) * 2021-05-17 2021-10-08 江苏航天七零六信息科技有限公司 一种高效的跨语言远程调用(rfc)方法
CN115623053A (zh) * 2022-08-12 2023-01-17 华能烟台八角热电有限公司 一种基于api网关的数据管理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150019620A1 (en) * 2013-07-09 2015-01-15 Kaminario Technologies Ltd. High availability for communications based on remote procedure calls
CN104731893A (zh) * 2015-03-17 2015-06-24 北京京东尚科信息技术有限公司 一种基于dubbo的web服务查找方法、装置和系统
CN105141452A (zh) * 2015-08-07 2015-12-09 北京思特奇信息技术股份有限公司 一种基于cxf的高性能服务系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150019620A1 (en) * 2013-07-09 2015-01-15 Kaminario Technologies Ltd. High availability for communications based on remote procedure calls
CN104731893A (zh) * 2015-03-17 2015-06-24 北京京东尚科信息技术有限公司 一种基于dubbo的web服务查找方法、装置和系统
CN105141452A (zh) * 2015-08-07 2015-12-09 北京思特奇信息技术股份有限公司 一种基于cxf的高性能服务系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陶明: "一种分布式服务框架的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107612713A (zh) * 2017-08-21 2018-01-19 同程网络科技股份有限公司 一种治理后端服务的方法
CN107479903A (zh) * 2017-08-30 2017-12-15 四川长虹电器股份有限公司 基于Dubbo框架的灵活控制服务模块的方法
CN108255615A (zh) * 2017-11-30 2018-07-06 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN108255615B (zh) * 2017-11-30 2022-03-01 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN108762780B (zh) * 2018-05-09 2021-09-21 四川华创世纪科技有限公司 一种实现服务软件程序分离运行的方法
CN108762780A (zh) * 2018-05-09 2018-11-06 四川华创世纪科技有限公司 一种实现服务软件程序分离运行的方法
CN110557357A (zh) * 2018-05-31 2019-12-10 华为技术有限公司 一种远程过程调用协议自适应方法、相关装置及服务器
CN110557357B (zh) * 2018-05-31 2022-07-29 华为技术有限公司 一种远程过程调用协议自适应方法、相关装置及服务器
CN109862095A (zh) * 2019-01-30 2019-06-07 新华三大数据技术有限公司 基于Web服务的数据处理方法及装置
CN111726425B (zh) * 2019-03-18 2022-05-03 互联网域名系统北京市工程研究中心有限公司 一种域名创建系统
CN111726425A (zh) * 2019-03-18 2020-09-29 互联网域名系统北京市工程研究中心有限公司 一种域名创建系统
CN110740172B (zh) * 2019-09-29 2022-04-29 北京淇瑀信息科技有限公司 一种基于微服务架构的路由管理方法、装置和系统
CN110740172A (zh) * 2019-09-29 2020-01-31 北京淇瑀信息科技有限公司 一种基于微服务架构的路由管理方法、装置和系统
CN112035276A (zh) * 2020-08-06 2020-12-04 上海视云网络科技有限公司 一种基于java的跨平台可扩展的RPC框架设计方法
CN112015374A (zh) * 2020-08-18 2020-12-01 中国电子科技集团公司第二十八研究所 一种基于自然语言的跨编程语言微服务集成系统
CN112015374B (zh) * 2020-08-18 2022-09-06 中国电子科技集团公司第二十八研究所 一种基于自然语言的跨编程语言微服务集成系统
CN112114979A (zh) * 2020-08-31 2020-12-22 厦门安胜网络科技有限公司 远程过程调用方法和装置
CN112114979B (zh) * 2020-08-31 2024-03-19 厦门安胜网络科技有限公司 远程过程调用方法和装置
CN112804249A (zh) * 2021-01-28 2021-05-14 中汽创智科技有限公司 远程调用自动驾驶平台的数据通信方法及系统
CN113190362A (zh) * 2021-04-22 2021-07-30 北京达佳互联信息技术有限公司 服务调用方法、装置、计算机设备及存储介质
CN113485717A (zh) * 2021-05-17 2021-10-08 江苏航天七零六信息科技有限公司 一种高效的跨语言远程调用(rfc)方法
CN115623053A (zh) * 2022-08-12 2023-01-17 华能烟台八角热电有限公司 一种基于api网关的数据管理方法及系统

Also Published As

Publication number Publication date
CN106506509B (zh) 2019-11-08

Similar Documents

Publication Publication Date Title
CN106506509A (zh) 可进行服务治理与语言调用的轻量级rpc框架实现方法
CN106411933B (zh) 一种可进行服务治理与语言调用的轻量级rpc系统
US7415522B2 (en) Extensible framework for transferring session state
CN109756366A (zh) 基于caas的智能网scp云服务实现系统
CN102968307B (zh) 一种基于java的web开发中间件
CN100574327C (zh) 一种基于虚拟层和插件技术的网格互操作系统
JP2002528932A (ja) インテリジェント・ネットワークにおけるリアルタイム呼処理サービスを提供する方法および装置
CN1220018A (zh) 分布式目标系统中事件的收集
EP2106647A1 (en) Web services and telecom network management unification
JPH1145231A (ja) 遠距離通信ネットワークの利用者に少なくとも一つのサービスを提供する方法、サービス管理ファシリティ及びサーバノード
TW201737110A (zh) 業務處理系統、業務處理方法以及業務更新方法
CN105187503B (zh) 一种支持数据分区的服务连接方法及系统
Li et al. Research on distributed architecture based on SOA
US8924988B2 (en) Collocation in a Java virtual machine of JSLEE and Java EE
US11411812B2 (en) Dynamic service creation for microservice-based integration service
CN114489585A (zh) 一种治理功能插件化的微服务开发框架及实现方法
CN106161520A (zh) 大数据应用平台及基于其的交互方法
CN106790067A (zh) 基于mvc分层的业务处理方法、装置和系统
CN1567835A (zh) 智能网中的分布式集群业务管理系统及业务管理方法
US11924039B2 (en) System and method for optimization of network function management and computer readable medium thereof
CN110134533A (zh) 一种可批量调度数据的系统及方法
EP1389395B1 (en) Service application architecture for integrated netwok services providers
CN110636073A (zh) 一种分布式异步远程服务编排与调用技术
CN113282401B (zh) 一种面向物联网异构物体多形态的可重构服务模型
CN109783132A (zh) 一种可适应系统单体化及分布式化的实现方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 518000 R & D room 3501, block a, building 7, Vanke Cloud City Phase I, Xingke 1st Street, Xili community, Xili street, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Tubatu Group Co.,Ltd.

Address before: 1001-a, 10th floor, bike technology building, No.9, Keke Road, high tech Zone, Nanshan District, Shenzhen, Guangdong 518000

Patentee before: SHENZHEN BINCENT TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address