一,引言
在此之前,本人还是希望各位有一台自己的服务器,不然在虚拟机里面操作真的是会很卡很卡的。由于dubbo最近似乎又开始更新了,所以不得不学了一下dubbo,由于这里只是入门,因此一些概念就先不聊了。
二,安装jdk
在服务器里面安装jdk,附上下载网址:https://www.oracle.com/java/technologies/javase-downloads.html
解压在/usr/local/software 里面,这个software需要手动创建。我大概就装了一下里面的东西
然后对/etc/profile进行环境配置,输入一下内容即可
vim /etc/profile
export JAVA_HOME=/usr/local/software/jdk1.8.0_281 export JRE_HOME=${JAVA_HOME}/jre export CLASSSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
再自己测试一下javac或者java -version即可
三,安装tomcat
附上连接https://tomcat.apache.org/download-70.cgi,常规的解压安装即可,我这边装的是tomcat7
四,安装zookeeper
下载地址http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/
,版本尽量安装3.4.x的,不然安装的版本太高容易启动不了,太多的bug。同样将压缩包放到/usr/local/software目录下,tar -zxvf解压即可。
修改配置文件 cd …/conf/ : mv zoo_sample.cfg zoo.cfg
接下来vim zoo.cfg,并修改里面的dataDir数据为当前zookeeper的data目录,该data目录可以在zookeeper下面新建即可
接下来保存退出,切换到bin目录下
./zkServer.sh status:查看当前服务状态 ./zkServer.sh stop: 停止服务 ./zkServer.sh start: 开启服务
这里开启服务即可,不需要在哪个服务器里面将端口2181打开
五,安装dubbo
这里就需要使用tomcat来安装了,现在一个dubbo.war,附上一个地址可以下载的,https://download.csdn.net/download/fyc__ios/10386974,亲测有效
然后打开tomcat,直接切换到/usr/local/software/tomcat7/webapps/ROOT这个目录,直接 rm -rf *,删除里面的全部
rm -rf *
然后将dubbo.war里面的解压到/usr/local/software/tomcat7/webapps/ROOT这个路径下解压即可,需要使用unzip解压
unzip dubbo.war -d tomcat7/webapps/ROOT
再查看一下 /usr/local/software/tomcat7/webapps/ROOT/WEB-INF
vim dubbo.properties
不用改,看看就行了,到时登录dubbo时的账号和密码都是root
在切换到tomcat下面的bin目录,可以看到熟悉的脚本
直接启动
./startup.sh
需要编译等待一段时间,而且在启动前尽量关闭防火墙,并且打开端口号2181和8080.一段时间后,在浏览器上输入 服务器ip + 8080,出现以下界面,登录账号和密码都是root
六,接下来就是springboot和dubbo的整合了
新建springboot项目,见一个服务者和消费者作为测试即可
1,先说服务提供者,即dubbo-provider
pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入dubbo--> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency> </dependencies>
application.properties
server.port=8081 dubbo.application.name=dubbo2-springboot-provider dubbo.registry.protocol=zookeeper #服务注册中心的地址,即服务器地址 dubbo.registry.address=xxx.xxx.xxx.xxx:2181 dubbo.protocol.port=20883
代码比较简单
在主启动类上加上 @EnableDubbo 开启dubbo服务的注解,和前面说的eureka是一样的。
然后就是新建一个IUserService接口
package com.zheng.dubboprovider.service; public interface IUserService { public String getUser(String username); }
具体实现类
package com.zheng.dubboprovider.service.impl; import com.alibaba.dubbo.config.annotation.Service; import com.zheng.dubboprovider.service.IUserService; @Service public class UserServiceImpl implements IUserService { @Override public String getUser(String username) { System.out.println(username); return username; } }
启动该微服务
可以发现该微服务以及注册进来了
2,消费者dubbo-consumer
pom.xml,多了一个服务提供者的依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入dubbo--> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency> <dependency> <groupId>com.zheng</groupId> <artifactId>dubbo-provider</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies>
application.properties
server.port=8082 dubbo.application.name=dubbo2-springboot-consumer dubbo.registry.protocol=zookeeper #服务注册中心的地址,即服务器地址 dubbo.registry.address=xxx.xxx.xxx.xxx:2181
controller
package com.zheng.dubboconsumer.controller; import com.alibaba.dubbo.config.annotation.Reference; import com.zheng.dubboprovider.service.IUserService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RequestMapping("/t1") @RestController public class GetUser { //@Reference(loadbalance = "leastactive") @Reference private IUserService userService; @GetMapping("/qaq") public String getUserInfo(String username){ System.out.println(username); return userService.getUser(username); } }
主启动类,加上 @EnableDubbo 注解即可
3,启动服务调用者并测试
点开服务治理下面的应用,可以看到下图,服务者提供者和消费者都被加进来了
再来进行接口测试
http://localhost:8082/t1/qaq?username=123456789
测试成功,dubbo+zookeeper+springboot的整合正式成功!