1. 基本理论
1.1 RPC概念
RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
1.2 RPC理解
理解:
(1).客户端调用client端接口
(2).client stub 将消息编码(序列化)并传输给服务方(socket)
(3).server stub 将消息解码(反序列化)并调用服务端接口
(4).服务端处理业务并返回处理结果到 server stub
(5).server stub 将消息编码(序列化)并传输给客户端(socket)
(6).client stub 接收消息解码(反序列化)并返回结果
核心模块:序列化、通讯
2.Dubbo理解
dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
0:服务容器(Container):服务容器负责启动,加载,运行服务提供者。
1:服务提供者(Provider):服务提供者在启动时,向注册中心注册自己提供的服务。
2:服务消费者(Consumer): 服务消费者在启动时,向注册中心订阅自己所需的服务。
3:注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4:服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
3.环境搭建(linux)
3.1 安装zookeeper
1).下载zookeeper (Linux直接下载zookeeper稳定版)
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
2).解压文件并移动到 /usr/local目录下,重命名为 zookeeper
3).开机启动zookeeper,并注册到service服务
在 /etc/rc.d/init.d目录下添加 zookeeper文件,复制如下启动脚本
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
ZK_PATH=/usr/local/zookeeper
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
case $1 in
start)
echo "Starting zookeeper ..."
$ZK_PATH/bin/zkServer.sh start && echo "start zookeeper success"
;;
stop)
echo "Stopping zookeeper ..."
$ZK_PATH/bin/zkServer.sh stop && echo "stop zookeeper success"
;;
status)
echo "Loading zookeeper status ..."
$ZK_PATH/bin/zkServer.sh status && echo "load zookeeper status success"
;;
restart)
echo "Restarting zookeeper ..."
$ZK_PATH/bin/zkServer.sh restart && echo "restart zookeeper success"
;;
*) echo "Usage: service zookeeper {start|stop|status|restart"}
exit 1
;;
esac
添加服务:
增加权限:
chmod +x /etc/init.d/zookeeper
4).启动服务
发现直接启动报错,我们需要修改配置文件:
① 初始化zookeeper配置文件
拷贝/usr/local/zookeeper/conf/zoo_sample.cfg 到同一个目录下改个名字叫zoo.cfg
如上,我们可以在这个文件配置临时文件目录和端口号
集群配置:
配置Zookeeper集群:
配置详情参考官网:官网配置说明
① 使用server.id=host:port:port 完成配置操作。(id在集成中必须是惟一的,其值应该在1到255之间;第一个端口:followers连接到leader,第二个端口:选举leader)
② 通过创建myid文件为每台机器赋予服务器id的属性(每台服务器在配置文件参数dataDir指定的目录创建该文件)
项目配置文件:官网文档指南
<dubbo:registry address=“zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181” />
Or:
<dubbo:registry protocol=“zookeeper” address=“10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181” />
yml文件配置也是类似!
② 启动zookeeper服务
3.2安装管理控制台(dubbo-admin)
1). 下载dubbo-admin
下载地址:https://github.com/apache/incubator-dubbo-ops
网盘地址:https://pan.baidu.com/s/1l8-uajexSJ9MtPKDM2EPOw
2). 进入dubbo-admin项目,修改文件配置
修改 src\main\resources\application.properties 指定zookeeper地址
3).打包dubbo-admin项目(也可以用idea导入项目打包)
mvn clean package -Dmaven.test.skip=true
4).上传到服务器并启动