下载地址:https://github.com/apache/dubbo-admin/tree/master
他是Apache公司下的一款分布式框架dubbo是一款高性能、轻量级的开源Java RPC框架,他提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现;dubbo本身并不是一个服务软件,它其实就是一个jar包,能够帮你的java程序连接到zookeeper,并利用zookeeper消费、提供服务。但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序dubbo-admin,不过这个监控即时不装也不影响使用。下载完之后,解压jar包:找到当前路径:target
使用cmd打开当前目录:输入mvn clean package -Dmaven.test.skip = true,进行安装打包
出现success安装成功
通过访问**localhost:7001/**可以进入到dubbo监控管理页面
下载地址:https://downloads.apache.org/zookeeper/
可能会遇到的问题:在bin目录下双击zkServer.cmd会闪退
在config目录下复制一份zoo_sample.cfg文件修改一下文件名就好了
创建一个空项目
然后创建第一哥springboot项目,添加web依赖:provider-service(服务端的提供者)
1.引入相关jar包:
<!--导入依赖:Dubbo + zookeeper--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> </dependency> <!--引入zkclient需要排除日志,会冲突--> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <!--引入zookeeper--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <!--排除这个slf4j-log4j12--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>2.创建service层:TicketService
package com.ddf.service; public interface TicketService { public String getTicket(); }3.创建实现类:TicketServiceImpl
package com.ddf.service; import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; //注意这里的Service注解使用的是apache下面的,如果是spring的会扫描不到 @Service //可以被扫描到,在项目一启动就自动注册到注册中心 @Component //使用了Dubbo后尽量不要用Service注解 public class TicketServiceImpl implements TicketService { @Override public String getTicket() { return "《ddf你好啊》"; } }4.设置端口号:application.properties
server.port=80015.注册中心地址:
server.port=8001 # 服务应用名字 dubbo.application.name=provider-service #注册中心 dubbo.registry.address=zookeeper://127.0.0.1:2181 #哪些服务要被注册 dubbo.scan.base-packages=com.ddf.service创建第二个springboot项目,添加web依赖:consumer-service(客户端的消费者)
1.引入相关jar包:
<!--导入依赖:Dubbo + zookeeper--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> </dependency> <!--引入zkclient需要排除日志,会冲突--> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <!--引入zookeeper--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <!--排除这个slf4j-log4j12--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>2.设置端口号:
server.port=80023.创建service层:
UserService
package com.ddf.service; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; @Service //放到容器中 public class UserService { //想拿到provider-service提供的票,要去注册中心拿到服务 @Reference //引用, TicketService ticketService; public void buyTicket(){ String ticket = ticketService.getTicket(); System.out.println("在注册中心拿到=》" + ticket); } }TicketService(注意:这个接口的路径要和provider-service项目里面的TicketService一致,要不然运行项目就会报错)
package com.ddf.service; public interface TicketService { public String getTicket(); }4.注册中心地址:
server.port=8002 # 服务应用名字 dubbo.application.name=consumer-service #注册中心 dubbo.registry.address=zookeeper://127.0.0.1:2181注意:如果出现了这个错误:说明7001这个端口号已经在使用了,需要关闭它
然后在运行:zookeeper里面的文件和dubbo里面的target
运行provider-service:springboot的项目访问:localhost:7001/,输入账号密码为root,进入dubbo监听管理页面,这个时候我们启动的springboot项目的服务名就可以监听到
运行consumer-service项目在测试类调用userService接口调用方法:我们就可以在另一个服务器上取到对应的数据
package com.ddf; import com.ddf.service.UserService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class ConsumerServiceApplicationTests { @Autowired UserService userService; @Test void contextLoads() { userService.buyTicket(); } }运行结果: