目录
认识RPC
Dubbo
认识RPC
RPC是解决不同JVM之间数据调用的一个思想,比如说现在有2台不同的机器,业务代码需要在这2台机器间调用后台业务代码,RPC就可以解决这2台机器业务代码调用的问题:
而RPC实现流程是什么样的呢?下图就可以很好的说明这些:
简单演示RPC:此处我们以JDK提供的RMI协议为参考
假设B机器是服务端代码:
1. 如果开放一个接口,这个接口需要继承Remote类
这样服务端代码就全部写好了,直接启动等着消费端调用就好了。
假设A机器是消费端代码:
只要这2台机器网络是相通的,端口是开放的,很容易就可以实现A服务调用B服务,并且B服务返回结果给A服务这样的过程。特定场景,RPC有用处的。但是现在动不动就是分布式、集群这些开发而言,RPC就显得力不从心了,下面看看缺陷:
简单概括就是:
1. RPC只适合点对点,不适合点对面。 一台机器对应一台机器,不适合一台机器对应多台机器,因为URL都是写死在代码里面的,而且如果删减服务器、新增服务器都比较麻烦,存在大量的配置信息要修改
2. 现在动不动就是集群,RPC没有办法解决负载的问题,也就是说有些服务器接受到大量的请求,服务随时都会挂掉;而有些服务器却闲着,很不合理
3. 对于网络抖动,长链接等问题也没有好的处理办法。当然问题还有一大堆,就不一一列举了。
Dubbo
那么dubbo的工作架构图是什么呢?
Dubbo 是和spring深度绑定的,离不开spring的支持。现在流行的微服务框架也就3套
1. Spring boot + dubbo + zookeeper
2. Spring cloud
3. Spring alibaba
开胃菜,本篇主要是了解RPC的应用以及缺陷。并且由于这些缺陷的存在,才发展起来dubbo 和 zookeeper等框架来解决RPC这些缺陷的。