美文网首页自动化测试Spring boot
当SpringBoot2.x与dubbo相遇

当SpringBoot2.x与dubbo相遇

作者: 隐无为 | 来源:发表于2018-06-30 00:54 被阅读463次

    1.dubbo 与 spring cloud 宿命之争

        最近dubbo疯狂更新目前版本已是2.6.2,不仅仅如此,
        还更新springboot-dubbo系列,重新构造dubbo-ops-admin-2.0
        (内部用springboot实现)
    

    主要原因可能是dubbo提交了开源社区apache吧
    和来自SpringCloud的压力,必须搞一波事情,立一个flag!

           来一波最新dubbo的教程,看看springboot-2.0和dubbo的魅力
    

    2.springboot-dubbo 内容和规划

    开发版本

    从现在开始, dubbo-spring-boot-project 将在每个发布中发行两个版本 :

    • 0.2.x 是支持 Spring Boot 2.x 的主要版本(推荐,长期维护)

    • 0.1.x 是支持 Spring Boot 1.x 的维护版本(兼容,短期维护)

    依赖关系

    版本 Java Spring Boot Dubbo
    0.2.0 1.8+ 2.0.x 2.6.2+
    0.1.1 1.7+ 1.5.x 2.6.2+

    最新版(maven 依赖)

    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>0.2.0</version>
    </dependency>
    

    hello-world 创建 dubbo的三个模块,分别为 provider、consummer、api

    api 模块

    api 接口定义

    public interface PayApi {
    
        /**
         * 根据订单id获取支付消息
         */
        public PayInfo getPayInfo(String uuid);
    
    }
    

    domain 实体类

    public Class PayInfo {
    
        private Long id; // 支付id
        private String method; // 字符方式
        private Integer status; // 支付状态
        private String  userName;    // 支付人名称
    
    }
    

    提供者模块

    api 接口实现

    @Service(
            version = "${demo.service.version}",
            application = "${dubbo.application.id}",
            protocol = "${dubbo.protocol.id}",
            registry = "${dubbo.registry.id}"
    )
    public class PayApiImpl implements PayApi {
    
        public PayInfo getPayInfo(String uuid) {
            // 构造数据
            PayInfo payInfo=new PayInfo();
            payInfo.setId(6666L);
            payInfo.setMethod("支付宝");
            payInfo.setStatus(1);
            payInfo.setUserName(uuid);
            return payInfo;
        }
    }
    

    提供者启动类

    
    @SpringBootApplication
    public class DubboProviderRun {
        @SuppressWarnings("deprecation")
        public static void main(String[] args) {
            new SpringApplicationBuilder(DubboProviderRun.class)
                    .web(false) // 非 Web 应用
                    .run(args);
        }
    }
    

    配置 application.properties

    # 应用信息
    spring.application.name = dubbo-provider-demo
    server.port = 9090
    management.port = 9091
    # 应用版本
    demo.service.version = 1.0.0
    # 扫描注解包
    dubbo.scan.basePackages  = cn.itsource.dubbo.api.impl
    # dubbo 信息
    dubbo.application.id = dubbo-provider-demo
    dubbo.application.name = dubbo-provider-demo
    ## 协议信息
    dubbo.protocol.id = dubbo
    dubbo.protocol.name = dubbo
    dubbo.protocol.port = 12345
    ## 注册中心信息
    dubbo.registry.id = my-registry
    dubbo.registry.address = N/A
    

    消费者模块

    应用类

     @RestController
    public class PayController {
    
      @Reference(version = "${demo.service.version}",
              application = "${dubbo.application.id}",
              url = "dubbo://192.168.56.1:12345",check=false)
      private PayApi payApi;
    
      @RequestMapping("/getPayInfo")
      public PayInfo getPayInfo(@RequestParam String uuid) {
          return payApi.getPayInfo(uuid);
      }
    }
    
    

    消费者启动类

    @SpringBootApplication
    public class DubboConsumerRun {
      public static void main(String[] args) {
          SpringApplication.run(DubboConsumerRun.class,args);
      }
    
    }
    

    配置 application.properties

    # 应用信息
    spring.application.name = dubbo-consumer-demo
    server.port = 8080
    management.port = 8081
    # 应用版本
    demo.service.version = 1.0.0
    # dubbo 信息
    dubbo.application.id = dubbo-consumer-demo
    dubbo.application.name = dubbo-consumer-demo
    ## 协议信息
    dubbo.protocol.id = dubbo
    dubbo.protocol.name = dubbo
    dubbo.protocol.port = 12345
    ## 注册中心信息
    dubbo.registry.address = N/A
    

    SpringBoot 启动提供者和消费者

    访问 http://localhost:8080/getPayInfo?uuid=9999

    以上是直连,没有注册中心,dubbo推荐用zookeeper作为注册中心

    下载 zookeeper-3.4.12

    修改 安装目录下/conf
    zoo_sample.cfg 为 zoo.cfg
    启动 bin/zkServer.cmd
    

    修改提供者和消费者的application.properties

      原来不注册
      dubbo.registry.address = N/A 
      改为注册到zookeeper
      dubbo.registry.address = zookeeper://127.0.0.1:2181
    

    添加 zookeeper客户端 在 application.properties

    从 `2.3.0` 版本开始支持可选 curator 实现。
    是 Netflix 开源的一个 Zookeeper 客户端实现。
    也可以是zkclient (如果使用请添加依赖jar)
    springboot-dubbo默认使用 curator 
    
    
    dubbo.registry.client=curator
    

    再次SpringBoot启动提供者和消费者

    访问 http://localhost:8080/getPayInfo?uuid=9999

    开启管理中心dubbo-admin-2.0

    目前主版本是springboot实现dubbo-admin-2.0
    请先下载
    git clone https://github.com/apache/incubator-dubbo-ops
    在打包编译
    cd incubator-dubbo-ops 
    mvn package
    

    java -jar 启动 dubbo-admin-2.0.jar

    编译打包好的可执行的jar包已提交到github上

    访问 http://localhost:7001/
    账号:root 密码:root
    
    管理中心.jpg

    以上代码放在github上要下载点击链接
    https://github.com/hpit-BAT/springboot-dubbo-demo

    打波广告,关注我的开源组织和项目

    访问地址:http://www.mysad.xyz/

    以后将在开一波springcloud学习系列文章

    并配套实战项目

    请关注!谢谢!

    相关文章

      网友评论

      本文标题:当SpringBoot2.x与dubbo相遇

      本文链接:https://www.haomeiwen.com/subject/sbqayftx.html