Linxu磁盘 emacs Skeljs vue请求 vue安装教程 jmeter性能测试视频 jquery查找子元素 oracle存储过程返回值 cad正在执行命令 python逻辑运算符 python课程 python正则匹配数字 python获取输入 python传递参数 java变量 配置java开发环境 javaif语句 java在线课程 java连接mysql数据库 java基础代码 java的instanceof java文件重命名 java正则匹配数字 java路径 java文件路径 java重命名 javalist转数组 python教程视频 coreldraw11 props din字体 vue上传文件 pr缩放 dota改键工具 手机知识 小工具 批处理if R语言初学者指南 什么软件买电影票便宜 原创检测工具
当前位置: 首页 > 学习教程  > 编程语言

初步使用dubbo的自我理解

2020/10/16 17:48:28 文章标签:

在springBoot下的dubbo框架理解 首先,dubbo是一个微服务框架(RPC),RPC是指远程调用。 在项目A中调用项目B的方法,使用dubbo可以实现两个不同项目之间(或者部署在不同服务器上的两个项目)的方法调用 给微服务Docker打…

在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环境变量没配置好,重新配置一下即可

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


本文链接: http://www.dtmao.cc/news_show_300184.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?