一、什么是RPC?

RPC(Remote Procedure Call),即远程过程调用。我们可以直接从字面意思去理解,就是进行对运行在远程的一些服务进行调用。下面我们举例说明:


1.单一系统

zookeeper对比redis zookeeper和rpc_zookeeper

我们传统的系统,整个系统都是运行在单个服务器上,对于服务(如:下订单、支付、查询等)的调用,都是调用本地的(或者说服务是写在本地的)


2.RPC

zookeeper对比redis zookeeper和rpc_java_02

远程过程调用,说白了就是不需要将服务写在本地上,转而直接调用在远程服务器上写好的服务。这么做有很多好处,比方说就算单个服务出现问题,也不会导致整个系统崩溃(对比传统的单一服务器)。当然,使用了RPC框架后(如Dubbo),中间的数据处理已经不需要我们去关心了。


二、Dubbo+Zookeeper

首先我们看一下这张Dubbo的总体框架图(官网图)

zookeeper对比redis zookeeper和rpc_分布式_03

  1. Provider(服务提供者),我们就是在服务提供者这里编写我们的服务(Service),同时Container(容器),就是我们的Spring容器。
  2. Registry(注册中心),负责将Provider服务提供者的信息注册进来,以供Consumer(服务消费者)使用。其实就相当于一个中介商,我们也可以使用dubbo直连的方式(一般不用),让消费者直接找到提供者(需要进行配置)使用服务(没有中间商赚差价),官方推荐使用zookeeper作为注册中心。
  3. Consumer(服务消费者),从注册中心中得到需要的服务,然后根据它所提供的提供者信息,进行调用即可。
  4. Monitor(监控中心),监控一下消费者和提供者。

了解一下Dubbo的优势(高可用):
1.zookeeper(注册中心)宕机处理。 注册中心无法使用了,服务消费者会使用缓存中保存的服务提供者信息,进行连接并调用服务,前提是之前进行过连接。
2.进行负载均衡,会进行基于权重的各种负载均衡策略。当然也有其它负载均衡策略
3.服务降级,就是在某项服务需要占用服务器的大量资源的情况下,我们可以将一些无关紧要的服务取消了(比方说返回空值,简单处理就返回等)
4.服务容错,就是系统处理会出现问题的情况下,我们可以直接返回空值。所谓的容错就是允许错误发生。

三、进行使用

1. 使用zookeeper

zookeeper-3.6.2下载

zookeeper对比redis zookeeper和rpc_zookeeper对比redis_04


下载后解压,解压后进入conf文件夹,复制粘贴一份zoo_sample.cfg,并且改名为zoo.cfg,如下图所示。

说明:该文件为zookeeper的配置文件,采用默认即可

zookeeper对比redis zookeeper和rpc_zookeeper对比redis_05


直接点击运行 /bin/zkServer.cmd

zookeeper对比redis zookeeper和rpc_zookeeper对比redis_06


运行后界面,可见端口为2181:

zookeeper对比redis zookeeper和rpc_zookeeper_07

2.使用dubbo

dubbo地址 下载后,直接使用IDEA打开dubbo-admin,加载完成后,直接运行即可,

浏览器输入http://localhost:7001/,输入账号root,密码root,就可以可以看到我们的dubbo监视中心

zookeeper对比redis zookeeper和rpc_java_08


对于springboot与dubbo与zookeeper的集成,有很多博客也已经写了,这里就不在赘述。