系统间通信:基于TCP协议的RPC实现范例
一、RPC名词解释
RPC的全称是Remote Process Call,即远程过程调用,它应用广泛,实现方式也很多,拥有RMI、WebService等诸多成熟的方案,在业界得到了广泛的使用。单台服务的处理能力受到硬件成本的限制,不可能无限制地提升。RPC将原来的本地调用转变为调用远端的服务器上的方法,给系统的处理能力和吞吐量带来了近似于无限制提升的可能,这是系统发展到一定阶段必然性的变革,也是实现分布式计算的基础。
RPC的实现包括客户端和服务端,即服务的调用方与服务的提供方。服务调用方发送RPC请求到服务提供方,服务提供方根据调用方提供的参数执行请求方法,将执行结果返回给调用方,一次RPC调用完成。这里涉及到网络通信、序列化与反序列化的操作,如果服务提供者是多台或者服务提供者进行了分组,还会涉及到负载均衡与路由。
二、RPC调用过程
随着业务的发展,服务调用者的规则发展到一定阶段,对服务提供方的压力也日益增加,因此,服务需要进行扩容。而随着服务提供者的增加与业务的发展,不同的服务之间还需要进行分组,以隔离不同的业务,避免相互影响,在这种情况下,服务的路由和负载均衡成为必须考虑的问题。服务消费者通过获取服务提供者的分组信息和地址信息进行路由,如果服务提供者为一个集群而非单台机器,则需要根据相应的负载均衡策略,选取其中一台进行调研,有关服务的路由和负载均衡,后续章节会进行详细介绍RPC调用过程(不包括负载均衡和路由)如下图所示:
(1) 服务消费方(client)调用以本地调用方式调用服务;;