SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper


1.什么是RPC

  • RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,它是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同

  • 也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什么要用RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用。RPC就是要像调用本地的函数一样去调远程函数

  • 推荐阅读文章

2.RPC原理

SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

步骤分析

SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 所以RPC两个核心模块为:通讯,序列化(方便数据传输)

3.Dubbo概念

1.什么是Dubbo

  • Dubbo官网
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper
  • 从上图我们就可以知道Dubbo和RPC的关系了,RPC用于实现远程过程调用,但是我们每次使用它的时候都要经过一些固定的步骤,所以就出现了Dubbo,帮助我们简化这些步骤,让我们专心传输调用和接收结果
  • Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现

SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务
  • 服务消费者(Consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
  • 注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
  • 监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

调用关系说明

  • 服务容器负责启动,加载,运行服务提供者
  • 服务提供者在启动时,向注册中心注册自己提供的服务
  • 服务消费者在启动时,向注册中心订阅自己所需的服务
  • 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
  • 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
  • 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

4.Dubbo环境搭建

SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

1.什么是zookeeper

2.下载zookeeper

  • 下载zookeeper :地址, 下载最新版zookeeper-3.6.2,解压zookeeper(直接下载3.4.14,下面这个最新版本会翻车)
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 可能遇到问题:闪退 !

  • 解决方案:编辑zkServer.cmd文件末尾添加pause 。这样运行出错就不会退出,会提示错误信息,方便找到原因
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper
    报错解决,下载-bin的压缩包
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 解压运行上面的步骤
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 解决
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 我们可以看一下则个文件中的配置
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 管理员运行zkServer.cmd
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 启动客户端
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper
    到此,安装zookeeper的坑算是都踩遍了,下面就是正常的安装测试环境流程了

  • 解决,降级版本3.4.14
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 成功启动service之后,可以启动客户端zkCli.cmd测试服务器是否能够正常连接
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 测试最基础的命令:ls /,查看当前根目录下面有什么
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 我们可以尝试着新建自己的节点,语法:create -e /新节点的名称 新节点的值
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 从上图可见,我们新建一个节点数据之后,再次使用 ls /,可以发现我们新创建的节点已经加入到了/ 路径下

  • 创建之后我们可以获取刚刚创建的节点数据,语法:get /节点名称
    SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper

  • 通过上面的例子我们就实现了通过zookeeper存值取值,zookeeper就是存储我们后台服务请求接口的地方,我们有了一个新的服务可以对外提供,我们就需要将请求注册到zookeeper中,前端请求的时候,会将请求发送给zookeeper,由zookeeper决定调用哪个服务请求进行响应;所以zookeeper就是用来充当Dubbo中的注册中心的