初步使用dubbo的自我理解

在springBoot下的dubbo框架理解

首先,dubbo是一个微服务框架(RPC),RPC是指远程调用。

在项目A中调用项目B的方法,使用dubbo可以实现两个不同项目之间(或者部署在不同服务器上的两个项目)的方法调用

给微服务Docker打下基础,实现一个服务器中不同区域间的调用

生产者和消费者概念:

例如两个不同的项目A和B,可以使用dubbo去实现A项目调用B项目方法,此时,A项目就是消费者,B项目就是生产者,可以理解为B项目 ‘生产’ 方法,A项目去 ‘消费’ B项目的方法

注册中心:

注册中心是实现项目间互相调用的核心,它的作用是什么呢

同上例子,B项目作为生产者会将自己 ‘生产’ 的方法存入注册中心,换句话也就是将需要给消费者提供的方法放在注册中心,这样当消费者需要 ‘消费’ 时会去注册中心找生产者 ‘生产’ 的方法,从而实现调用,大致就是这么一个概念

在项目中实现dubbo的步骤:
一,pom文件导入dubbo的jar包
<!--dubbo设置,服务提供者-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.2</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
<!---->
二,配置生产者项目B,application.yml文件中添加配置

1.同上例子,在生产者B项目中的application.yml文件配置如下

dubbo:
  application:
    name: boot-user #生产者项目名
  registry:
    protocol: zookeeper #注册中心类型
    address: 127.0.0.1:2181  #注册中心地址
  scan:
    base-package: com.bdqn.serviceImpl  #扫描dubbo注解
  protocol:
    name: dubbo  #协议
    port: 20883  #端口号

2.在项目启动类中添加dubbo的 @EnableDubbo注解

/**
 * 项目启动类
 */
@SpringBootApplication
@MapperScan("com.bdqn.dao")
@EnableDubbo //dubbo
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class,args);
    }
}

3.此时B项目已经为生产者,接下来就用 alibaba(阿里巴巴) 的 @Service注解 将需要给消费者提供的接口或类存入注册中心

//导包不是原来ssm框架的spring jar包
import com.alibaba.dubbo.config.annotation.Service;

@Service //声明此实现类为生产者‘生产’的,可以供消费者调用
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    
    @Override
    public List<User> selAll() {
        return userDao.selAll()}
}

生产者项目B基本完事,接下来是消费者项目A的配置

三,配置消费者项目A,application.yml文件中添加配置

1.与配置生产者大致相同,少了protocol

dubbo:
  application:
    name: boot-order #消费者项目名
  registry:
    protocol: zookeeper #注册中心类型
    address: 127.0.0.1:2181  #注册中心地址
  scan:
    base-package: com.bdqn.serviceImpl  #扫描dubbo注解

2.同上,在项目A的启动类中添加dubbo的 @EnableDubbo 注解

3.接下来是在项目A(消费者)的controller层实现调用项目B的方法

使用alibaba(阿里巴巴) 的 @Reference注解 实现在项目A的controller层中对项目B的service层实现类的实例化,接着通过对象调用项目B的方法

import com.alibaba.dubbo.config.annotation.Reference;

@RestController
public class OrderController {
    @Autowired
    private OrderService orderService;
    
    //声明此实例化是去注册中心找生产者项目B ‘生产’ 的实现类,与上文中项目B配置@Service处对应
    @Reference  
    private UserService userService; //项目B的实现类
    
    //user方法实现了在项目A中对项目B的方法调用
    @GetMapping("gtUser")
    public Dto user(){
        return DtoUtil.returnSuccessData(
                userService.selAll() //调用了项目B中service层的selAll方法
        );
    }
}
四,启动注册中心zookeeper 下 bin目录中的 zkServer.cmd

注意,启动时黑窗口时报错说明JAVA_HOME环境变量没配置好,重新配置一下即可

运行项目,注意顺序应该是先运行注册中心,再运行生产者项目,后运行消费者项目,合乎逻辑,否则没有生产,何来消费,换句话说就是。想消费的话必须先有生产,但是生产了不一定消费。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值