zoukankan      html  css  js  c++  java
  • spring boot集成dubbo

    dubbo需要额外的注册中心,其实也可以配置直连,但是那也没有意义了,支持几种注册中心但是推荐还是zookeeper 

    这里就不说怎么搭建zookeeper了,去官网下载一个 然后在conf目录下新建zoo.cfg文件 至于内容可以复制zoo_sample.cfg 只需要修改一下里面数据存储的目录即可

    启动zookeeper,进入bin目录下如果是Windows执行zkServer.cmd,liunx就是zkServer.sh 这是启动zookeeper服务,至于客户端可以用zkCli.sh或cmd

    dubbo就是把所有的接口(服务)采用统一声明管理,建一个工程,里面创建别的模块所需要的service接口和相关的实体类

    命名为dubbo-api 然后在别的模块中引入这个工程

    maven依赖如下

     1         <dependency>
     2             <groupId>com.tqq</groupId>
     3             <artifactId>dubbo-api</artifactId>
     4             <version>1.0-SNAPSHOT</version>
     5         </dependency>
     6         <!-- Dubbo Spring Boot Starter -->
     7         <dependency>
     8             <groupId>org.apache.dubbo</groupId>
     9             <artifactId>dubbo-spring-boot-starter</artifactId>
    10             <version>2.7.5</version>
    11         </dependency>
    12         <!-- zookeeper client依赖 -->
    13         <dependency>
    14             <groupId>com.101tec</groupId>
    15             <artifactId>zkclient</artifactId>
    16             <version>0.10</version>
    17         </dependency>
    18         <dependency>
    19             <groupId>org.apache.curator</groupId>
    20             <artifactId>curator-recipes</artifactId>
    21             <version>2.13.0</version>
    22         </dependency>

    dubbo集成spring boot其实都有两种,因为现在最新的dubbo都捐赠给了Apache,而之前是属于alibaba的一个项目

    我这里用得是最新的Apache的dubbo,不过两种其实一样,只不过Apache版本的包名已经不同了并且也包括了alibaba版本的 只不过会显示已过时

    接下来就是application.propperties的配置,都是dubbo必须的配置

    dubbo.application.name=order-service  #应用名
    dubbo.registry.address=127.0.0.1:2181 #注册中心地址
    dubbo.registry.protocol=zookeeper     #注册中心类型
    dubbo.protocol.name=dubbo             #服务间调用协议 支持多种协议
    dubbo.protocol.port=20882             #服务间调用端口

    接下来就是常规操作 在启动类上加一个

    @EnableDubbo(scanBasePackages = "包路径") 开启dubbo支持 并扫描指定包下的接口

    到这里 基本的dubbo工程已经搭建好了 接下来就是怎么暴露一个接口(服务)给其他应用使用
    import org.apache.dubbo.config.annotation.Service;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * @Description: TODO
     * @Author: Tan
     * @CreateDate: 2020/3/18
     **/
    @Service
    public class UserServiceImpl implements UserService {
        @Override
        public List<UserAddress> queryUserAddressByUserId(String userId) {
            UserAddress address1 = new UserAddress(1, "北京市昌平区宏福科技园综合楼3层", "1", "李老师", "010-56253825", "Y");
            UserAddress address2 = new UserAddress(2, "深圳市宝安区西部硅谷大厦B座3层(深圳分校)", "1", "王老师", "010-56253825", "N");
    
            return Arrays.asList(address1,address2);
        }
    }

    这是一个接口的实现类,至于这个接口是定义在上面的dubbo-api项目中,返回的实体类也是

    将这个接口暴露出去,给别的应用调用,只需要加上一个@Service注解即可,注意这个注解是

    org.apache.dubbo.config.annotation.Service; 而不是Spring的@Service注解

    接口暴露出来,我想在别的模块要怎么引用呢?

    package com.tqq.service;
    
    import com.tqq.entity.UserAddress;
    import org.apache.dubbo.config.annotation.Reference;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    /**
     * @Description: TODO
     * @Author: Tan
     * @CreateDate: 2020/3/18
     **/
    @Service
    public class OrderServiceImpl  implements OrderService {
    
        @Reference()
        UserService userService;
    
        @Override
        public List<UserAddress> queryUserAddressByUserId(String userId) {
            return userService.queryUserAddressByUserId(userId);
        }
    }

    这里同样是一个接口实现类,接口也定义在dubbo-api项目,

    这里我这个接口不对外暴露所以我这里使用得是Spring的@Service注解

    而不是dubbo的,我在这个里面需要调用我刚刚暴露的这个,只需要像常规

    使用交由Spring管理的对象一样 直接注入进来即可 但是要使用

    @Reference注解,这个注解可以定义一些功能比如调用的超时时间,重试次数等

    关于dubbo的详细配置 可以参考dubbo官网,只要是xml能配置的在这个注解里面都能配
    或者在application.propperties配置文件里面配置

    基本上的配置就是这样 接下来就是关于dubbo的一些 服务降级 熔断 负载均衡的配置
    这里要使用一个dubbo-admin 是官方提供的一个web管理界面,方便我们查看服务,操作服务等
    这个去dubbo官网也可以下载源码进行打包 这里就不说了

     

  • 相关阅读:
    linux添加到普通用户sudo才干
    跳跃Java一些周期,双跳FOR周期
    Android虚拟机器学习总结Dalvik虚拟机创建进程和线程分析
    Notes系统安全日志
    android Intent.createChooser 应用选择
    创业这么难,去哪儿?
    视频和音频播放的演示最简单的例子6:OpenGL广播YUV420P(T经exture,采用Shader)
    名单(两)——基本操作单向链表(创、删、印、节点统计数)
    JS列
    第38周三
  • 原文地址:https://www.cnblogs.com/java888/p/12519380.html
Copyright © 2011-2022 走看看