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