SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper
1.什么是RPC
-
RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,它是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同
-
也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什么要用RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用。RPC就是要像调用本地的函数一样去调远程函数
2.RPC原理
步骤分析
- 所以RPC两个核心模块为:通讯,序列化(方便数据传输)
3.Dubbo概念
1.什么是Dubbo
-
Dubbo官网
- 从上图我们就可以知道Dubbo和RPC的关系了,RPC用于实现远程过程调用,但是我们每次使用它的时候都要经过一些固定的步骤,所以就出现了Dubbo,帮助我们简化这些步骤,让我们专心传输调用和接收结果
- Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现
- 服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务
- 服务消费者(Consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
- 注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
- 监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
调用关系说明
- 服务容器负责启动,加载,运行服务提供者
- 服务提供者在启动时,向注册中心注册自己提供的服务
- 服务消费者在启动时,向注册中心订阅自己所需的服务
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
4.Dubbo环境搭建
1.什么是zookeeper
2.下载zookeeper
-
下载zookeeper :地址, 下载最新版zookeeper-3.6.2,解压zookeeper(直接下载3.4.14,下面这个最新版本会翻车)
-
可能遇到问题:闪退 !
-
解决方案:编辑zkServer.cmd文件末尾添加pause 。这样运行出错就不会退出,会提示错误信息,方便找到原因
报错解决,下载-bin的压缩包 -
解压运行上面的步骤
-
解决
-
我们可以看一下则个文件中的配置
-
管理员运行zkServer.cmd
-
启动客户端
到此,安装zookeeper的坑算是都踩遍了,下面就是正常的安装测试环境流程了 -
解决,降级版本3.4.14
-
成功启动service之后,可以启动客户端zkCli.cmd测试服务器是否能够正常连接
-
测试最基础的命令:ls /,查看当前根目录下面有什么
-
我们可以尝试着新建自己的节点,语法:create -e /新节点的名称 新节点的值
-
从上图可见,我们新建一个节点数据之后,再次使用 ls /,可以发现我们新创建的节点已经加入到了/ 路径下
-
创建之后我们可以获取刚刚创建的节点数据,语法:get /节点名称
-
通过上面的例子我们就实现了通过zookeeper存值取值,zookeeper就是存储我们后台服务请求接口的地方,我们有了一个新的服务可以对外提供,我们就需要将请求注册到zookeeper中,前端请求的时候,会将请求发送给zookeeper,由zookeeper决定调用哪个服务请求进行响应;所以zookeeper就是用来充当Dubbo中的注册中心的