2019-11-17 yls

创建服务接口模块

接口工程只提供接口,不提供实现,在后面的提供者和消费者中使用

在使用接口的模块中只需要写具体实现类,避免了在每个模块中重复编写接口

  1. 在接口中引入依赖包

            <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
    </dependency>
  2. 创建一个实体类,一定要实现Serializable接口,否则dubbo协议之间无法传输

    @Data
    @AllArgsConstructor
    public class User implements Serializable {
    private String name;
    }
  3. 创建接口


    public interface UserService {
    List<User> getAll();
    List<User> getAll2();
    }

创建服务提供者

  1. 引入依赖

            <!--引入创建的接口服务-->
    <dependency>
    <groupId>com.yls</groupId>
    <artifactId>common-api</artifactId>
    <version>1.0-SNAPSHOT</version>
    </dependency>
    <!--由于服务提供者不是web项目
    ,只需引入spring-boot-starter,不用引入spring-boot-starter-web-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    </dependency> <!--dubbo-->
    <dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
    </dependency>
  2. 修改配置文件

    #服务名称
    dubbo.application.name=provider1
    #注册中心地址
    dubbo.registry.address=39.97.234.52:2181,39.97.234.52:2182,39.97.234.52:2183
    #注册中心类型
    dubbo.registry.protocol=zookeeper #版本号
    dubbo.application.version=3
    # Dubbo Protocol
    #协议名称
    dubbo.protocol.name=dubbo
    #服务暴露端口
    dubbo.protocol.port=20880
  3. 实现服务接口

    //暴露服务
    //这里的@Service是Dubbo提供的,不是spring中的
    //version必填
    @Service(version = "${dubbo.application.version}")
    @Component
    public class UserImpl implements UserService {
    @Override
    public List<User> getAll() {
    User user1 = new User("张三");
    User user2 = new User("lisi");
    List<User> list = Arrays.asList(user1, user2);
    return list;
    }
    }
  4. 启动服务

    //@EnableDubbo等价于在配置文件中配置dubbo.scan.base-packages
    //扫描实现类所在的包,注册Bean
    @EnableDubbo
    @SpringBootApplication
    public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class,args);
    }
    }

创建消费者

  1. 引入依赖

    <!--消费者是web项目-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency> <!--dubbo-->
    <dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
    </dependency> <!--引入创建的接口服务-->
    <dependency>
    <groupId>com.yls</groupId>
    <artifactId>common-api</artifactId>
    <version>1.0-SNAPSHOT</version>
    </dependency>
  2. 修改配置文件

    #注册中心
    dubbo.registry.address=39.97.234.52:2181,39.97.234.52:2182,39.97.234.52:2183
    dubbo.registry.protocol=zookeeper
    #dubbo应用名称
    dubbo.application.name=consumer1
  3. 实现消费接口

    //服务消费者的Service是spring的
    @Service
    public class OrderImpl implements OrderService { //使用dubbo提供的@Reference访问远程服务
    //version对应服务提供者的version
    @Reference(version = "3")
    private UserService userService; @Override
    public List<User> init() {
    List<User> list = userService.getAll();
    list.forEach(item -> System.out.println(item.getName()));
    return list;
    }
    }
  4. 创建controller

    @Controller
    public class OrderController { @Autowired
    private OrderService orderService; @ResponseBody
    @RequestMapping("/init")
    public List<User> init() {
    return orderService.init();
    }
    }
  5. 启动服务消费者

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

dubbo相关补充

  1. dubbo使用本地缓存方式,如果注册中心全部宕机,dubbo也能正常工作,就算没有注册中心,dubbo也能通过dubbo直连通信

    //使用dubbo提供的@Reference访问远程服务
    //version对应服务提供者的version
    //url:如果没有注册中心,可以通过url配置服务提供者的dubbo协议端口,进行dubbo直连
    @Reference(version = "3",url ="127.0.0.1:20880" )
    private UserService userService;

springboot使用dubbo和zookeeper的更多相关文章

  1. Springboot整合Dubbo和Zookeeper

    Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...

  2. SpringBoot整合Dubbo配合ZooKeeper注册中心

    安装ZooKeeper 我这里使用zookeeper作为服务注册中心,版本3.4.9,下载地址: http://mirrors.hust.edu.cn/apache/zookeeper/zookeep ...

  3. SpringBoot分布式 - Dubbo+ZooKeeper

    一:介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. Dubbo是Alib ...

  4. springboot整合dubbo\zookeeper做注册中心

    springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...

  5. springboot整合dubbo+zookeeper最新详细

    引入 最近和小伙伴做一个比赛,处于开发阶段,因为涉及的服务比较多,且服务需要分开部署在不同的服务器上,讨论之后,打算采用分布式来做,之前学习springboot的时候,部分章节涉及到了springbo ...

  6. SpringBoot(十一) Dubbo分布式与Zookeeper

    Dubbo简介 1.Dubbo简介 1. Dubbo是什么? dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上 ...

  7. springboot+mybatis+dubbo+aop日志第一篇

    本篇文章主要讲述项目搭建过程,不会涉及过多的基础知识,本项目是作者对前段时间学习的一个总结,主要使用到技术有:maven父子工程.springboot.mybatis.dubbo.zookeeper. ...

  8. 基于springboot构建dubbo的入门demo

    之前记录了构建dubbo入门demo所需的环境以及基于普通maven项目构建dubbo的入门案例,今天记录在这些的基础上基于springboot来构建dubbo的入门demo:众所周知,springb ...

  9. springboot整合dubbox与zookeeper

    springboot中dubbo依赖的引入和配置(application.properties)参见:https://blog.csdn.net/wohaqiyi/article/details/72 ...

随机推荐

  1. ABAP实现Blowfish加密算法

    看到SAP社区中有人问是否存在ABAP实现的Blowfish加密算法,无人回答.于是动手实现了一个blowfish-abap.通过blowfish-abap可以在SAP系统中使用Blowfish对数据 ...

  2. Python_三元运算与lambda表达式

    [是什么] 三元运算是if...else...的简化版,lambda表达式是函数的简化版 三元运算(三目运算) # 判断两个数中的较大者 fun(a1,a2): return a1 if a1> ...

  3. PMP 德尔菲技术

    1.德尔菲技术,必须遵守以下几个规则: 每个专家只与主持人单线联系. 专家之间完全背靠背,更不能进行讨论.为保证专家提出独立见解,甚至需要把专家分散在不同的物理地点. 专家以匿名的书面形式提出意见. ...

  4. 在Ubuntu16.0.4安装hipcaffe

    1. 安装 AMD ROCm 显卡条件 要安装AMD的 ROCm显卡,必须满足以下条件,只能高于下面信息版本,不能低于. Distribution Kernel GCC GLIBC x86_64 Fe ...

  5. [Abp vNext 源码分析] - 11. 用户的自定义参数与配置

    一.简要说明 文章信息: 基于的 ABP vNext 版本:1.0.0 创作日期:2019 年 10 月 23 日晚 更新日期:暂无 ABP vNext 针对用户可编辑的配置,提供了单独的 Volo. ...

  6. GO实现简单(命令行)工具:sftp,文檔压解,RDS备份,RDS备份下载

    GO实现简单(命令行)工具:sftp,文檔压解,RDS备份,RDS备份下载 轉載請註明出處:https://www.cnblogs.com/funnyzpc/p/11721978.html 内容提要: ...

  7. “无处不在” 的系统核心服务 —— ActivityManagerService 启动流程解析

    本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 系列文章目录: Java 世界的盘古和女娲 -- Zygote Zygote 家的大儿子 -- System ...

  8. 百万年薪python之路 -- re模块

    re模块 re模块是python用来描述正则表达式的一个模块. 正则表达式本身也和python没有什么关系,就是匹配字符串内容的一种规则. 官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先 ...

  9. Helm神器,让管理Kubernetes像yum安装包一样简单

    目录 一.什么是Helm 二.安装 1.安装helm客户端 2.安装Tiller 3.创建服务端 4.给Tiller授权 5.为 Tiller 设置帐号 6.验证Tiller是否安装成功 三.Helm ...

  10. 用Python将处理数据得到的csv文件分类(按顺序)保存

    用Python中的os和numpy库对文件夹及处理数据后得到的文件进行分类保存: import numpy as np import os for m in range(699,0,-35): cur ...