SpringBoot+Dubbo详细整理和介绍

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。

Dubbo 的RPC 调用流程主要涉及到4个模块:

1、Registry:服务注册,我们一般会采取Zookeeper 作为我们的注册中心

2、Provider:服务提供者(生产者),提供具体的服务实现

3、Consumer:消费者,从注册中心中订阅服务

4、Monitor:监控中心,RPC调用次数和调用时间监控

从上图中我们可以看出RPC 服务调用的过程主要为:

1、生产者发布服务到服务注册中心

2、消费者在服务注册中心中订阅服务

3、消费者调用已注册的服务

下面笔者给大家讲解在IDEA环境下如何实现将SpringBoot与Dubbo整合

先来看common下的pom文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.boot.dubbo</groupId>
  <artifactId>common</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>common</name>
  <url>http://maven.apache.org</url>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <!--dubbo-springBoot依赖-->
    <dependency>
      <groupId>com.alibaba.spring.boot</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>1.0.1</version>
    </dependency>
    <!--zookeeper依赖-->
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.4.11</version>
    </dependency>
    <dependency>
      <groupId>com.101tec</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.10</version>
    </dependency>
  </dependencies>
  <modules>
    <module>api</module>
    <module>provider</module>
    <module>consumer</module>
  </modules>
</project>
由上图可以看出公共pom主要引入了: SpringBoot依赖dubbo-springBoot依赖zookeeper依赖zkClient依赖等

下面笔者将逐个讲解各个模块:

一、 provider(服务提供者)

pom文件如下:

<?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.boot.dubbo</groupId>
        <artifactId>common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>provider</artifactId>
      <name>provider</name>
      <url>http://maven.apache.org</url>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
      </dependencies>
    </project>

因为笔者将provider作为web形式启动,所以仅需要引入spring-boot-starter-web即可。

src/main/resources/application.yml配置如下:

接口定义IBookService.java代码如下:

接口实现BookServiceImpl.java代码如下:

注意该类有两个service注解,一个是alibaba的,一个是spring的,大家要注意区分。

Application.java代码如下:

springBoot启动加入了@EnableDubboConfiguration,表示启动dubbo配置。

注意,在本地测试之前,必须先下载zookeeper在本地,然后启动zookeeper,然后运行provider模块,使服务注册到zookeeper!

二、consumer(服务消费者)

pom文件如下:

<?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.boot.dubbo</groupId>
            <artifactId>common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <artifactId>consumer</artifactId>
        <name>consumer</name>
        <url>http://maven.apache.org</url>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
        <dependencies>
        </dependencies>
    </project>

consumer没有引入任何依赖,因为该模块只有接口定义,没有实现。

三、api(测试接口)

pom文件如下:

<?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.boot.dubbo</groupId>
            <artifactId>common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <artifactId>api</artifactId>
        <name>api</name>
        <url>http://maven.apache.org</url>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>com.boot.dubbo</groupId>
                <artifactId>consumer</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </project>

api只需要引入consumer模块(只有接口定义,没有实现,没有application.yml)即可。

DubboController.java代码如下:

在调用consumer模块定义的service的时候,必须要加入@Reference注解。

Application.java代码如下:

@EnableDubboConfiguration表示启动dubbo配置。

下面开始进行测试(必须先将本地zookeeper启动):

1、首先将provider模块启动:

2、启动api:

3、访问: http://localhost:8080/test

原文地址:https://www.cnblogs.com/ysySelf/p/11286970.html

时间: 2024-11-08 22:45:40

SpringBoot+Dubbo详细整理和介绍的相关文章

常见Android面试题及答案(详细整理)

常见Android面试题及答案(详细整理) 1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy(). onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问. onStart(): Activity变为在屏幕上对用户可见时调用. o

【OpenHW12参赛手记】ZedBoard-自定义IP核实现+PS成功调用【详细步骤+流程介绍+源码】 转载

文章来源 图片无法复制,请看原文 http://www.eefocus.com/jefby1990/blog/13-03/291975_490bc.html [OpenHW12参赛手记]ZedBoard-自定义IP核实现+PS成功调用[详细步骤+流程介绍+源码] 2013-03-07 17:56:30 分享: (图片请点击查看原图) 软件环境:WIN7_64 + ISE 14.4 (system_edition) 硬件:Zedboard.USB-Cable线 搭建图: 经过前几天的学习,查看数据

iOS开发个人开发账号的证书详细使用及介绍

iOS开发个人开发账号的证书详细使用及介绍 1.如果想真机测试(xcode7除外)和上架产品,就必须使用到电脑,其实真机测试证书和打包上架证书就是告诉苹果,我在用那台电脑真机测试的,我在用那台电脑上架产品. 2.真机测试还是需要三个的配置文件: 真机配置文件:就是告诉苹果我要用那台电脑,再那个手机上测试那个APp 打包配置文件:就是告诉苹果我要用那台电脑,打包那个APP后,在那个手机上运行 上架配置文件:就是告诉苹果我在用那台电脑,上架哪一个APP 生成的推送的证书在下面,用到的朋友们可以看看,

aspx与ascx,ashx的用法详细的总结介绍

这篇文章主要是对aspx与ascx,ashx的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 做asp.net开发的对.aspx,.ascx和.ashx都不会陌生.关于它们,网上有很多文章介绍.“纸上得来终觉浅,绝知此事要躬行”,下面自己总结一下做个笔记.1..aspxWeb窗体设计页面.Web窗体页由两部分组成:视觉元素(html.服务器控件和静态文本)和该页的编程逻辑(VS中的设计视图和代码视图可分别看到它们对应得文件).VS将这两个组成部分分别存储在一个单独的文件中

详细图解 Flume介绍、安装配置

写在前面一: 本文总结"Hadoop生态系统"中的其中一员--Apache Flume 写在前面二: 所用软件说明: 一.什么是Apache Flume 官网:Flume is a distributed, reliable, and availableservicefor efficientlycollecting, aggregating, and moving large amounts of log data. It has a simple and flexible arch

Spring SpringMVC SpringBoot SpringCloud 注解整理大全

Spring SpringMVC SpringBoot SpringCloud 注解整理 这段时间学习了一些框架,里面用到了很多注解,记不住所以把遇到的注解都整理了下来,如果有不对的地方欢迎指正,我会修改的φ(??∀??)? Spring 常用配置: @import :导入配置类 @Scope : 新建Bean的实例 @Scope("prototype") 声明Scope 为 Prototype @Value : 属性注入 @Value ("我爱你") -->

第一次搭建springboot+dubbo+zookeeper项目小结

第一次用IDEA搭建springboot+dubbo+zookeeper项目中碰到了一些问题,现在记录下来, 第一步:项目准备工作 工具IDEA,先下载安装zookeeper和dubbo   Zookeeper下载地址:https://zookeeper.apache.org/releases.html,我下载最新的release 3.5.7 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是

DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡.容灾和集群功能 Registry: 服务目录框架用于服务的注册和服务事件发布和订阅 Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成. 主要核心部件: Remoting: 网络通信框架,实现了 sync-o

Dubbo详细介绍与安装使用过程

今天看到一篇不错的dubbo介绍教程,原文链接:http://blog.csdn.net/xlgen157387/article/details/51865289 1 Dubbo介绍 1.1 dubbox简介 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本. 此时,用于简化增删改查工作量的 数据访问框