springboot学习25:Dubbo+zookeeper实战

springboot学习25:Dubbo+zookeeper实战

  • 框架搭建:

    • 1,创建一个空的maven项目:Empty Project ; (做为总依赖,或者父项目)

      • 导入pom依赖:

        <!--导入依赖:Dubbo+Zookeeper -->
        <dependency>
           <groupId>org.apache.dubbo</groupId>
           <artifactId>dubbo-spring-boot-starter</artifactId>
           <version>2.7.9</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,新建model模块:provider-server:服务提供者

      • 新建service包:

        • 1,新建TicketService接口:

          public interface TicketService {

             public String getTicket();
          }
        • 2,新建TicketServiceImpl实现类:

          import org.apache.dubbo.config.annotation.Service;
          import org.springframework.stereotype.Component;

          @Service  //可以被扫描到,在项目启动后,就会自动注册到注册中心
          @Component //使用了Dubbo后,尽量不要使用@Service注解
          public class TicketServiceImpl implements TicketService {

             @Override
             public String getTicket() {
                 return "好好学习,天天向上";
            }
          }
        • 3,修改application.properties配置文件:

          • 配置要扫描的包

          server.port=8001
          #当前应用名字
          dubbo.application.name=provider_server
          #注册中心地址
          dubbo.registry.address=zookeeper://127.0.0.1:2181
          dubbo.registry.protocol=26001
          #扫描指定包下服务
          dubbo.scan.base-packages=com.ljxdemo.service

       

    • 3,新建Model模块:consumer-server:服务消费者

      • 新建service包:

        • 1,新建TicketService接口:

          public interface TicketService {

             public String getTicket();
          }
        • 2,新建UserService服务类:

          import org.apache.dubbo.config.annotation.Reference;
          import org.springframework.stereotype.Service;


          @Service  //这里的注解是spring的
          public class UserService {

             @Reference   //调用注册中心的服务接口:从远程注入服务
             TicketService ticketService;

             public void byTicket(){
                 String ticket = ticketService.getTicket();
                 System.out.println("在注册中心拿到一张票:"+ticket);
            }
          }
        • 3,修改application.properties配置文件:

          server.port=8002
          #消费者去哪里拿服务 : 去注册中心拿 ; 消费者需暴漏自己的名字,让注册中心知道是谁拿的
          dubbo.application.name=consumer_server
          #注册中心的地址
          dubbo.registry.address=zookeeper://127.0.0.1:2181
      • 新建controller包:

        • 1,新建HelloController类:

          @RestController
          public class HelloController {


             @Autowired  //自动装配
             UserService userService;

             @RequestMapping("/t1")
             public String test(){

                 userService.byTicket(); //调用服务接口

                 return "ok";

            }
          }

       

    • 4,启动测试:

      • 1,启动zookeeper服务:zkServer.cmd

      • 2,启动dubbo-admin服务:java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

      • 3,启动IDEA服务:提供者,消费者

      • 4,测试URL:http://localhost:8002/t1 : 数据正常返回

       

 

 

 

 

 

 

posted @   gzs1024  阅读(220)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示