什么叫rpc:
rpc(remote procedure call)是指远程过程调用,是一种进程间的通信方式,它是一种技术的思想,而不是规范,它允许程序调用另一个地址空间(通常是共享网略的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
rpc基本原理
rpc两个核心模块:通信,序列化
rpc框架:dubbo、gRPC、Thrift、HSF
dubbo核心概念:
Apache dubbo是一款高性能、轻量级的开源的java rpc框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。
官网地址:https://dubbo.apache.org/
dubbo架构设计思想
Registy:注册中心(服务调用者、服务提供者集合)
consumer:服务调用端
provider:服务提供端
monitor:监控中心(服务提供者、调用者的监控信息)
container:容器中心
dubbo运行流程:
dubbo框架启动, container(容器)启动,服务提供者向注册中心注册服务信息,注册中心管理服务提供者服务信息,当服务消费者启动时,会从注册中心订阅自己需要的服务信息,当注册中心发现服务提供者的服务信息有变动时,也会及时的将变动同步给服务消费者,服务消费者拿到自己需要的所有的服务信息时,会同步的调用服务提供者服务信息,如果同一个服务有多个提供者(类似集群),服务消费者也会按照负载均衡算法调用其中的一个服务。服务消费者调用服务提供者的调用信息通常会在一定的时间(一般60s)内异步的发送给监控中心,监控者就能近似的实时监控服务者消费者和提供者的调用信息。
用zookeeper作为注册中心:
从官网下载zookeeper压缩包,根据系统版本下载对应的版本http://www.apache.org/dyn/closer.cgi/zookeeper/
window下启动zookeeper,在cmd中进入zookeeper的bin目录下,运行zkServer.cmd启动,报错 ERROR [main:QuorumPeerMain@88] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing E:\tools\zookeeper-3.4.11\bin\..\conf\zoo.cfg,从报错信息发现是没有获取到zoo.cif文件
解决方式:
将conf文件下的zoo_sample.cfg文件复制一份,修改文件名为zoo.cfg,然后在zookeeper目录下创建一个data目录,用来存放日志信息,修改zoo.cfg文件中的日志存放路径为data目录
重新启动zookeeper,出现如下界面说明启动成功。
可以通过zkCli.cmd查看节点信息和创建一个临时节点
安装dubbo监控中心
从官网下载dubbo incubator-dubbo-ops-master项目,修改admin项目application.properties文件,配置监控地址为本地2181端口,并且通过maven构建成一个jar包。
在admin的pom目录下通过cmd使用mvn clean package 进行打包,等打包成功,通过java -jar dubbo-admin-0.0.1-SNAPSHOT.jar 运行jar包
启动之后通过访问localhost:7001,通过root,root登录查看dubbo信息
登录成功进入下面页面证明管理控制台配置成功
配置监控中心配置,dubbo-monitor-simple-2.0.0,进入assembly.bin目录下,运行start.bat出现以下界面证明监控中心配置成功
springboot项目集成dubbo
1、引入依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
2、配置dubbo相关信息
//服务提供者
dubbo:
application:
name: user-service-provider
registry:
address: 127.0.0.1:2181
protocol: zookeeper
protocol:
name: dubbo
port: 20880
monitor:
protocol: registry
//服务消费者
dubbo:
application:
name: order-service-consumer
registry:
address: zookeeper://127.0.0.1:2181
monitor:
protocol: registry
3、添加对应的注解
提供者和消费者启动类中都添加@EnableDubbo
服务提供者接口添加 @Service,注意是dubbo包下,通过次注解暴露接口
服务消费者添加@Reference,注意是dubbo包下,通过此注解获取调用接口信息,远程引用
dubbo接口调用配置生效原则:
1、精确优先(方法级优先,接口级次之,全局配置再次之)
2、消费者设置优先(如果级别一样,则消费方优先,提供方次之)