masterle

    环境准备:

        1. zookeeper-3.4.14     (下载地址:http://archive.apache.org/dist/zookeeper/)

        2. dubbo-0.2.0  (下载地址:https://github.com/apache/dubbo-admin/tree/master-0.2.0)

        3. spring boot-2.5.5

        4. jdk-1.8.0

        5. maven-3.6.3

   1. Zookeeper的下载和安装

    1.1 Zookeeper:

     ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed

                 synchronization, and providing group services. (是一个为分布式计算提供维护配置信息、命名注册、分布式

                 同步和组服务的集中服务)

    1.2 下载和配置:

    • 下载上述文件
    • 解压,在conf文件夹下复制zoo_sample.cfg文件,并命名为:zoo.cfg

      

    • 返回到bin/目录下,双击zkServer.cmd开启服务,监听端口2181

      

    • 并打开客户端zkCli.cmd发现可以连接服务,表示Zookeeper安装成功!

      

    • 客户端输入:ls /(中间包含空格),可以查找注册的节点。dubbo是我新注册的节点,默认只有Zookeeper

      

    •  创建节点和获取节点的信息

      create –e /nodeName(节点名称) value(值)       比如:create –e /test01 123

      get /nodeName(节点名称)        获取节点的信息

    •  客户端输入:ls /,即可查找注册的节点

   2. Dubbo的下载和安装

    2.1 Dubbo:

      阿里开源的微服务框架,提供了RPC通信微服务治理两大关键能力

    2.2 下载和配置

    • 下载dubbo-0.2.0
    • 在dubbo-admin-master-0.2.0路径下,使用maven打包:mvn clean package -Dmaven.test.skip=true

      

    • 打包成功

       

    •  在D:\software\installed\dubbo-admin-master-0.2.0\dubbo-admin\target目录下生成dubbo-admin-0.0.1-SNAPSHOT.jar文件,该文件用来启动dubbo

       

   3. 测试环境

    • 首先打开zkServer.cmd,开启Zookeeper服务;
    • 在D:\software\installed\dubbo-admin-master-0.2.0\dubbo-admin\target目录,执行命令:java -jar dubbo-admin-0.0.1-SNAPSHOT.jar  开启Dubbo;
    • 本地访问:http://localhost:7001/,网页响应则表示Dubbo Admin管理控制台启动成功,该平台可以监测Java程序向其中注册的服务;
    • Dubbo Admin管理控制台登录用户名和密码都为root;

     到此,表示dubbo-admin管理平台搭建成功!!!

  4. Spring Boot Demo测试

    • 创建dubbo-zookeeper工程,并添加生产者(provider-service)和消费者(consumer-server)maven模块

      

        项目链接地址:链接: https://pan.baidu.com/s/1SsOaulKgATakWiaYeRQj1A 提取码: 9q8t

    • 生产者提供购票服务,通过向Zookeeper注册服务,消费者远程进行调用
    • 生产者项目结构,需要修改的几部分用红色箭头标出

      

       -  pom.xml添加依赖

 1 <dependency>
 2             <groupId>org.apache.dubbo</groupId>
 3             <artifactId>dubbo-spring-boot-starter</artifactId>
 4             <version>2.7.3</version>
 5         </dependency>
 6 
 7         <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
 8         <dependency>
 9             <groupId>com.github.sgroschupf</groupId>
10             <artifactId>zkclient</artifactId>
11             <version>0.1</version>
12         </dependency>
13 
14         <!-- 解决日志冲突-->
15         <!-- 引入zookeeper -->
16         <dependency>
17             <groupId>org.apache.curator</groupId>
18             <artifactId>curator-framework</artifactId>
19             <version>2.12.0</version>
20         </dependency>
21         <dependency>
22             <groupId>org.apache.curator</groupId>
23             <artifactId>curator-recipes</artifactId>
24             <version>2.12.0</version>
25         </dependency>
26         <dependency>
27             <groupId>org.apache.zookeeper</groupId>
28             <artifactId>zookeeper</artifactId>
29             <version>3.4.14</version>
30             <!--排除这个slf4j-log4j12-->
31             <exclusions>
32                 <exclusion>
33                     <groupId>org.slf4j</groupId>
34                     <artifactId>slf4j-log4j12</artifactId>
35                 </exclusion>
36             </exclusions>
37         </dependency>

       -  application.properties更改配置

1 server.port=8001
2 
3 # 服务应用名字
4 dubbo.application.name=provider-service
5 # 注册中心地址
6 dubbo.registry.address=zookeeper://127.0.0.1:2181
7 # 哪些服务要被注册
8 dubbo.scan.base-packages=com.spring.service

      -  TicketService接口

1 package com.spring.service;
2 
3 public interface TicketService {
4     public String getTicket();
5 }

      -  TicketServiceImpl类

 1 package com.spring.service;
 2 
 3 import org.apache.dubbo.config.annotation.Service;
 4 import org.springframework.stereotype.Component;
 5 
 6 // Zookeeper: 服务注册与发现
 7 @Service // 可以被扫描到,在项目一启动就自动注册到注册中心
 8 @Component // 使用了Dubbo后尽量不要用Service注解
 9 public class TicketServiceImpl implements TicketService {
10     @Override
11     public String getTicket() {
12         return "G001, 开往郑州";
13     }
14 }
    • 消费者项目结构,需要修改的几部分用红色箭头标出

      

       -  pom.xml添加依赖:同生产者

         -  ConsumerServerApplicationTests

 1 package com.spring;
 2 
 3 import com.spring.service.UserService;
 4 import org.junit.jupiter.api.Test;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.boot.test.context.SpringBootTest;
 7 
 9 @SpringBootTest
10 class ConsumerServerApplicationTests {
11 
12     @Autowired
13     UserService userService;
14 
15     @Test
16     void contextLoads() {
17         userService.buyTicket();
18     }
20 }

      -  application.properties更改配置

1 server.port=8002
2 
3 # 消费者去注册中心拿服务  需要暴露自己的名字
4 dubbo.application.name=consumer-service
5 dubbo.registry.address=zookeeper://127.0.0.1:2181

      -  TicketService接口:消费者的接口是从生成者拷过来的,该方法仅是以一种简单的方式实现远程过程调用

      -  UserService类

 1 package com.spring.service;
 2 
 3 import org.apache.dubbo.config.annotation.Reference;
 4 import org.springframework.stereotype.Service;
 5 
 6 /*
 7 易错
 8 这里用的是spring下的service,这样test类的Autowired才能使用
 9  */
10 @Service
11 public class UserService {
12     // 想拿到provider-service提供的票,要去注册中心拿服务
13     @Reference // 引用(远程拿包)   相当于本地的Autowired
14     TicketService ticketService;
15 
16     public void buyTicket(){
17         String ticket = ticketService.getTicket();
18         System.out.printf("在注册中心买到票: " + ticket);
19     }
20  }

 5. 运行

    • 首先开启Zookeeper注册服务,双击zkServer.cmd;
    • 运行ProviderServiceApplication

      

    • 执行命令:java -jar dubbo-admin-0.0.1-SNAPSHOT.jar  开启Dubbo,访问http://localhost:7001/发现已向Zookeeper中注册服务

      

    • 运行ConsumerServerApplicationTests,输出  “在注册中心买到票: G001, 开往郑州”  ,则测试通过!!!

      

 

     重在记录和分享,如果对你有帮助,请竖起你的大拇指,并点击,Thanks♪(・ω・)ノ!!!

  

相关文章: