dubbo入门和springboot集成dubbo小例子(代码片段)

baijinqiang baijinqiang     2022-12-08     383

关键词:

从零开始搭建springboot-dubbo的例子

Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案

一、 Dubbo的简单介绍

1. 网站架构的发展历程

网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多.......

技术图片

  • 单一应用架构(OORM)

当网站流量很小时,将所有的功能部署到一起,以减少部署节点和成本。此时,只需要使用简化增删改查的工作量,采用数据访问框架(ORM)。

  • 垂直应用架构 (MVC)

当访问量逐渐增大,单一应用带来的加速度越来越小。此时,将应用拆分成互不相干的几个应用,所以采用MVC框架。

  • 分布式服务架构 (RPC)

当垂直应用越来越多,应用之交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速地响应多变的市场需求。此时,用于提高业务复用及整合的服务框架(RPC)是关键。

  • 流动计算框架 (SQA)

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

2. dubbo核心工作原理

技术图片

节点 角色说明
Provider 暴露服务的服务提供方
Registry 服务的注册与发现的注册中心,如zookeper(推荐)、multicast、redis、simple
Consumer 调用远程服务的服务消费方
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

调用流程

  • 服务器负责启动,加载,运行服务提供者。

  • 服务提供者在启动时,向注册中心注册自己所提供的服务

  • 服务消费者在启动时,向注册中心订阅自己所需的服务

  • 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于TCP长连接推送变更数据给消费者

  • 服务消费者从提供的服务列表中,基于软负载均衡算法,选一台提供者进行调用,如果失败,则选择另一台调用

  • 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到检测中心

3. dubbo特点

  1. Dubbo 支持 RPC 调用,服务之间的调用性能会很好,效率很高

  2. 支持多种序列化协议,如 Hessian(默认)、HTTP、WebService

  3. 对比springcloud

技术图片

二、 springboot-Dubbo搭建

想要使用Dubbo的话,按照前面的原理图,我们主要使用它的服务远程调用功能,也就是两个项目之间相互通讯,即RPC

直接上图,先大致看看项目结构:

技术图片

dubbo-provider是所谓的服务提供者,springboot项目

dubbo-consumer是服务消费者,springboot项目

dubbo-api是服务提供者的接口API,最普通的maven项目

这里可以会想起dubbo工作原理的图:

  • 0 dubbo-provider先在容器里初始化启动
  • 1 dubbo-provider去注册中心去注册服务,注册中心使用zookeeper
  • 2 dubbo-consumer去注册中心发现需要的服务
  • 3 注册中心返回dubbo-provider的服务
  • 4 dubbo-consumer直接去调用dubbo-provider

1. 项目依赖

dubbo的jar包依赖(spring-boot)

<!-- dubbo依赖 -->
<dependency>
    <groupId>com.alibaba.spring.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>

注册中心zookeeper的jar包依赖

<!-- 引入zookeeper的依赖 -->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>

2. 服务提供者

服务提供者dubbo-provider提供HelloService.sayHello()接口

package com.dubbo.provider.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.dubbo.service.HelloService;
import org.springframework.stereotype.Component;

//@Service是dubbo里的注解,作用是暴露服务,不要选择spring的@Service
@Service
@Component
public class HelloServiceImpl implements HelloService 

    @Override
    public String sayHello(String name) 
        return "Hello" + name;
    

还要在springboot的启动类上加一个开启Dubbo的注解

package com.dubbo.provider;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//开启dubbo的自动配置
@EnableDubboConfiguration
@SpringBootApplication
public class DubboProviderApplication 

    public static void main(String[] args) 
        SpringApplication.run(DubboProviderApplication.class, args);
    

3. 服务消费者

dubbo-consumer远程调用dubbo-consumer提供的服务HelloService.sayHello()接口

package com.dubbo.consumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.dubbo.service.HelloService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController 

    @Reference//dubbo注解,可以仔细了解下这个注解
    private HelloService helloService;

    @RequestMapping(value = "/hello")
    public String hello() 
        String hello = helloService.sayHello("world");
        System.out.println(helloService.sayHello("BJQ"));
        return hello;
    

同上,这个也需要让Dubbo开启自动配置

package com.dubbo.consumer;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//就是这里,对,没错 ->_->
@EnableDubboConfiguration
@SpringBootApplication
public class DubboConsumerApplication 

    public static void main(String[] args) 
        SpringApplication.run(DubboConsumerApplication.class, args);
    

4. 项目启动流程和结构

1. 启动祖册中心:

项目启动需要去官网下载zookeper注册中心,解压,配置一下zoo.cfg配置文件,然后启动zkServer.cmd(以下是我的简单配置)

tickTime=2000
initLimit=10
syncLimit=5
dataDir=F:\\zookeeper-3.4.14\\temp\\zookeeper
dataLogDir=F:\\zookeeper-3.4.14\\temp\\zookeeper-logs
clientPort=2181

2. 启动服务提供方dubbo-provider

如下图,说明dubbo-provider启动,并且已经连上注册中心

技术图片

3. 启动服务消费方dubbo-consumer

效果跟上面差不多

4. 服务调用结果

自己去试试,皮一下,,哈哈 QWQ

注意点和问题

dubbo直连,这个可以在测试的过程中使用

dubbo的高校序列化协议可以选的,默认是hessian

dubbo是基于TCP协议去做的,所以很快。

在启动zookeeper时,会有窗口一闪而过的情况,有可能时jdk环境变量有空格,还有可能是zk的dataDir路径不对

《完》

深入springboot:快速集成dubbo+hystrix

...文介绍在spring应用里,怎么把Dubbo和Hystrix结合起来使用。SpringBoot应用生成dubbo集成s 查看详情

springboot第七章springboot集成dubbo(代码片段)

第七章SpringBoot集成Dubbo再坚持坚持~~~SpringBoot继承Dubbo的文档https://github.com/apache/dubbo-spring-boot-project/blob/master/README_CN.md以上提到的官方文档里面的版本比较老。阿里巴巴提供了dubbo集成springBoot开源项目,可以到GitHub上https://gith... 查看详情

springboot-集成dubbo(代码片段)

一、Dubbo ApacheDubbo是一款高性能、轻量级的开源JavaRPC服务框架ApacheDubbo|ˈdʌbəʊ|提供了六大核心能力:1、面向接口代理的高性能RPC调用2、智能容错和负载均衡3、服务自动注册和发现4、高度可扩展能力5、运行期流量调度6、... 查看详情

springboot06-dubbo和zookper集成

什么是Dubbo?Dubbo(开源分布式服务框架)Dubbo是一款高性能、轻量级的开源JavaRPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。服务提供者... 查看详情

springboot——springboot集成dubbo(代码片段)

1.写在前面这里我来总结一下SpringBoot集成Dubbo的小案例,那么有关Dubbo的内容,就不多说了,可以参考下面这张图中的分栏中的文章。下面,来说一说SpringBoot集成Dubbo分布式框架的一个思路:首先了话,仍... 查看详情

springboot集成dubbo

springboot集成dubbo需要导入dubbo所需jar的依赖<!--dubbodependency--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version> 查看详情

dubbo入门学习-----dubbo整合springboot(代码片段)

springboot节省了大量的精力去配置各种bean,因此通过一个简单的demo来整合springboot与dubbo一、创建boot-user-service-provider本篇博文基于上篇中的dubbo项目,整体工程如下:1、pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven... 查看详情

springboot集成dubbo

(1)、新建一个普通Maven项目,用于存放一些公共服务接口及公共的Bean等。项目: 公共Bean:1packagecn.coreqi.entities;23importjava.io.Serializable;45publicclassUserimplementsSerializable{6privateIntegerid;7privateStringuserName;8privat 查看详情

springboot2.x集成dubbo(支持不同group不同注册中心)

参考技术A(1)简单配置(2)消费者和提供者group、注册中心不同的配置dubbo的过滤器配置最后面会讲dubboServiceFilter service注解用的是com.alibaba.dubbo.config.annotation.Servicereference注解用的是com.alibaba.dubbo.config.annotation.Reference 查看详情

springboot集成dubbo

                               查看详情

一springboot整合dubbo光速入门

0、docker启动zkdocker-compose.ymlversion:'3'services:zoo1:image:zookeeperrestart:alwayshostname:zoo1ports:-2181:2181docker-composeup-d1、创建父pom<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns= 查看详情

dubbo整合springboot

目前的dubbo已支持和springboot集成,还是之前的例子,这次我们通过springboot容器来实现。借此了解一下基于springboot容器启动的dubbo的配置及使用。1.准备工作创建一个Maven空项目,作为项目的父工程,此工程的子项目基于SpringBoot2.0... 查看详情

dubbo远程调用(rpc)-->快速入门+管理控制台+整合springboot开发(代码片段)

...制台1.jar包部署管理平台2.war包部署管理平台四、Dubbo开发SpringBoot1.Dubbo文档查询2.架构模型3.代码实现五、Du 查看详情

springboot集成dubbo(代码片段)

#博学谷IT学习技术支持#文章目录1.构建SpringBoot环境1.1创建一个dubbo-parent项目1.2引入依赖坐标2.Linux环境配置2.1安装docker2.1安装zookeeper3.yml配置文件3.1provider提供者yml配置3.2consumer提供者yml配置4.服务测试4.1新增接口4.2接口实现4.2服... 查看详情

springboot与dubbo整合入门(三种方式)(代码片段)

Springboot与Dubbo整合三种方式详解整合环境:jdk:8.0dubbo:2.6.2springboot:2.1.5项目结构:1、搭建项目环境:  (1)创建父项目与三个子项目,创建项目时,都使用springinitializr,创建时,父项目中注意的一点:    (2)创建三个子... 查看详情

springboot集成dubbo企业完整版

一、什么是SpringBoot?现阶段的SpringBoot可谓是太火了,为什么呢?因为使用方便、配置简洁、上手快速,那么它是什么?从官网上我们可以看到,它是Spring开源组织下的一个子项目,主要简化了Spring繁重的配置,而且SpringBoot内嵌... 查看详情

dubbo架构设计及入门案例(代码片段)

框架介绍1.1.1概述Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源JavaRPC框架,它提供了三大核心能力... 查看详情

springboot+dubbo+zookeeper快速入门案例(代码片段)

项目目录结构:第一步:创建一个SpringBoot项目,这里选择Maven项目或者SpringInitializer都可以,这里创建了一个Maven项目(SpringBoot-Dubbo),pom.xml文件如下:<?xmlversion="1.0"enco 查看详情