一、RPC (远程服务调用)
通过http,tcp/udp亦或者是其他什么网络协议来调用在不同服务上面的方法,就被称为Remote Procedure Call。RPC非常简单,首先就是数据的编码和解码,简单的来说就是一个对象如何去变成二进制在网络或者存储设备上传输以及从二进制流中解码出对象。
RPC有很多别人已经写好的框架,譬如 thrift,web services 等等。
二、RPC与RMI区别
RMI全称是Remote Method Invocation ,实现了在不同JVM实例上面相互调用方法。和RPC的却别主要就是RPC跟语言无关的,比如你调用一个http接口,但是你可以不关心http的接口具体是用什么语言实现的。
三、对服务进行优化
一个非常大的项目是有非常非常多不同的服务提供方,每个服务提供方可能有非常多的节点,提供相同的服务。相同的服务也可能有不同的版本。等等这样,会非常复杂繁杂,不利于管理和排错。
1.简单的点对点服务:
2.服务治理:
1)首先要有一个注册中心,可以使用Zookeeper,来维护和提供服务方的地址,
2)服务节点启动之后向Zookeeper去注册服务。Zookeeper与各服务节点维持心跳检测。可及时检测到挂掉的节点。
3)消费者获取所有服务节点,缓存到Map中,依据轮询的方式来轮流使用相同的服务节点达到负载均衡。
四、RPC的选择
可以选择Thrift来作为RPC方式,非常简单实用,我在之前的博客中已经提供了Thrift的使用方式以及简单原理。具体代码还没有写,只是提供一个思路,回头把代码写好了,在提供出来。