最近刚刚贴上小猪佩奇的标签,进入公司后接触的一个项目,采用了springboot+dubbo+zookeeper的架构,对我来说,完全是一个全新的东西,但是为了能够对这个项目进行全面的测试,必然要对测试对象有深入的了解。所以决定通过实践来学习——自己搭建一个Dubbo服务。
1.1 Dubbo原理
Dubbo是一种分布式的服务器框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。主要用于解决负载均衡、容灾等问题。
其基本原理可以通过一张图来概括
1.1.1 节点角色说明
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
1.1.2 调用关系说明
0.服务容器负责启动,加载,运行服务提供者。
1.服务提供者在启动时,向注册中心注册自己提供的服务。
2.服务消费者在启动时,向注册中心订阅自己所需的服务。
3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
1.2 环境配置
jdk1.8 + tomcat9 + zookeeper3.4.10 + dubbo2.5.10
1.3 zookeeper的安装
zookeeper是一种分布式协调服务,我们的项目中选用了它,用于维护和监控存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。
下载zookeeper安装包 zookeeper-3.4.10下载,然后进入到conf目录下,新建一个zoo.cfg
#tickTime: zookeeper中使用的基本时间单位,毫秒值。
#dataDir: 数据目录,即自己下载的zookeeper的data目录
#dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和#dataDir相同的设置
#clientPort: 监听client连接的端口号。
tickTime=2000
dataDir= /usr/local/zookeeper-3.4.10/data
dataLogDir=/usr/local/zookeeper-3.4.10/logs
clientPort=2181
添加以上配置并保存后,进入zookeeper-3.4.10/bin目录下 执行./zkServer.sh start ,如图所示,zookeeper启动成功
1.4 dobbo admin安装
1.4.1 打包
安装dubbo admin需要下载dubbo-admin的war包。为了避免版本的冲突问题,这里我选择了自己打包。步骤很简单,去官网下载dubbo源码,然后进入到本地的dubbo-admin目录
cd /Users/Jocelyn/Downloads/incubator-dubbo-dubbo-2.5.10/dubbo-admin
在该目录下执行编译打包
mvn package -Dmaven.test.skip=true -e
这里加上-e控制Maven的日志级别,打印错误信息,便于定位执行中可能遇到的问题,我这次打包的过程一直失败,查看错误信息发现抛java.lang.ArrayIndexOutOfBoundsException: 31523 的错误,尝试了很多办法,最后重装了一个3.5.3版本的maven,问题解决。
打包完成后,dubbo-admin下会生成一个target文件夹,如图所示,可以在该文件夹下找到生成的war包。
然后将这个war包拷贝出来,放到 本地的ApacheTomcat/webapps目录下。
1.4.2 修改dubbo的配置
进入/ApacheTomcat/webapps/dubbo-admin-2.5.10/WEB-INF修改dubbo.properties文件
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
配置dubbo的注册中心地址以及用户名密码。
1.4.3 启动
以上工作完成之后,进入到/ApacheTomcat/bin目录下启动Tomcat,输入命令:
./startup.sh
然后打开本地浏览器,输入http://localhost:8080/dubbo-admin-2.5.10/,在弹框中输入用户名密码。
DuangDuangDuang 就可以看到下图页面,dobbo环境就搭建完成了~
接下来就可以把dubbo和zookeeper集成到spring-boot中,之后将在另一篇文章中进行总结。