RPC(远程过程调用)的简单运用(springboot+dubbo+zookeep)

RPC就是远程过程调用,依赖于分布式系统。这里建立了两个简单的项目,模拟服务方法的远程调用。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,主要是协调各个服务程序之间的运行。

  • 1.创建两个简单的springboot项目,分别命名为消费者与服务提供者

    • 服务提供者(接口+实现类),在项目启动类上需加上@EnableDubbo 注解
    public interface TicketService {
        public String getTicket();
    }
    
    
    @DubboService //被扫描后自动注册到注册中心
    @Component
    public class TicketServiceImpl implements TicketService{
        @Override
        public String getTicket() {
            return "这里我最帅!";
        }
    }
    
    • 消费者(约束接口+服务调用类)

      public interface TicketService {  //与服务者的接口一致,作为调用约束
          public String getTicket();
      }
      
      public interface UserService {  //接口
          public String buyTicket();
      }
      
      @DubboService
      @Component("userService")
      public class UserServiceImpl implements UserService{ //实现类
      
          //想远程调用服务,需要去注册中心拿到服务
          @DubboReference     //远程引用
          TicketService ticketService;
      
          @Override
          public String buyTicket(){
              String ticket = ticketService.getTicket();
              System.out.println("在注册中心拿到===>"+ticket);
              return ticket;
          }
      
      }
      
      • 测试controller

        @RestController
        public class TestController {
        
            @Autowired
            @Qualifier("userService")
            UserServiceImpl userServiceImpl;
        
            @RequestMapping("/test")
            public String test01(){
                return userServiceImpl.buyTicket();
            }
        
        }
        
  • 2.导入所需要的的约束(两个项目都需要)

    <dependencies>
            <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>
    
            <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>2.7.8</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/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>
    
        </dependencies>
    
  • 3.下载并启动zookeeper服务

在这里插入图片描述
在这里插入图片描述

  • 4.先启动服务提供者项目,再启动消费者项目

    测试结果:
    在这里插入图片描述
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值