Dubbo框架的Hello World

【Dubbo】Spring Boot整合Dubbo Spring Boot整合Dubbo 1.环境依赖 Dubbo是一种嵌入式的去中心化的架构,其引入的依赖: <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.8</version 阅读详情

        最近写基于 Dubbo 的 Demo,本来挺简单的一个 Demo 但是整了两个小时,而最后解决的方法是因为包名的问题。可能很多所谓的经验不过就是一个踩坑的经验。

Dubbo 介绍

       Dubbo 的作用引用 GitHub 的介绍是:Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

       Dubbo 是阿里巴巴开发的框架,后来贡献给了 Apache 基金会。其 GitHub 地址如下:

https://github.com/apache/dubbo-spring-boot-project/blob/master/README_CN.md

       Dubbo 的出现背景可以参考 Dubbo 的官网:

http://dubbo.apache.org/zh-cn/docs/user/preface/background.html

       Dubbo 的官网也提供了一个 Demo 来进行快速入门,但是该 Demo 是以配置的方式来进行开发的,而不是使用注解进行开发的。官网的 Demo 地址如下:

http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

Dubbo 的 HelloWorld

       Dubbo 的服务注册中心需要 Zookeeper 来支持,这里就不对 Zookeeper 进行介绍了。

       我们来创建两个 Spring Boot 项目,一个是 provider,另外一个是 consumer。

       provider 用来提供一个服务,并注册到 Zookeeper 中,consumer 到 Zookeeper 中找到 provider 提供的服务,并进行远程调用。

       两个项目中关于 Dubbo 的依赖是相同,具体依赖如下:

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>${dubbo.version}</version>
</dependency>

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo</artifactId>
    <version>${dubbo.version}</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>4.2.0</version>
</dependency>

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>4.2.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.14</version>
</dependency>

        这里使用的 Dubbo 的版本是 2.7.7,这个版本算是新的版本了。

provider 的代码

        创建 provider 的配置文件 application.yml,配置如下:

spring:
  application:
    name: provider

server:
  port: 8081

dubbo:
  registry:
    address: zookeeper://192.168.0.107:2181
  application:
    name: provider
  scan:
    base-packages: com.manong.dubbo.service.impl

        接着我们定义一个类文件 DemoServiceImpl.java,在该类文件中实现一个 say 方法,将该类和 say 方法抽象为一个接口 IDemoService.java,这个接口文件要提供给 consumer 进行使用。DemoServiceImpl.java 文件的代码如下:

@DubboService(version = "1.0.0", timeout = 10000, interfaceClass = IDemoService.class)
@Component
public class DemoServiceImpl implements IDemoService {

    @Override
    public String say(String name) {
        System.out.println("hi " + name + "!");

        return "hi " + name + "!";
    }
}

        可以看到,在类定义上增加了一个 @DubboService 的注解,该注解将会将该类作为服务被外部进行调用。

consumer 的代码

        consumer 的 Spring Boot 项目在创建时引入 Spring Web 的依赖,该项目作为一个 Web 项目来进行测试。它同样需要引入 Dubbo 和 Zookeeper 的依赖,依赖的配置和前面的相同。

        创建 consumer 的配置文件 application.yml,配置如下:

spring:
  application:
    name: comsumer

server:
  port: 8082

dubbo:
  application:
    name: comsumer
  registry:
    address: zookeeper://192.168.0.107:2181

        接着,将 provider 的 IDemoService.java 复制到该项目中,只是复制接口的定义(provider 和 consumer 是分别创建的,如果是聚合项目需要将接口定义再单独抽取成一个服务),并不复制接口实现类。

        然后定义一个 Controller 的类,类名是 TestController.java 文件,代码如下:

@RestController
@RequestMapping("/test")
public class TestController {

    @DubboReference(version = "1.0.0")
    IDemoService demoService;

    @RequestMapping("/say")
    public String say(String name)
    {
        return demoService.say(name);
    }
}

       这里我们通过 @DubboReference 注解将 Service 进行注入。

        这样两个项目的代码就完成了。

项目测试

        启动 Zookeeper 的服务,然后先运行 provider 的程序,待 provider 程序启动好,用 Zookeeper 的客户端连接 Zookeeper 的服务器,查看是否有 Dubbo 注册的服务。如果有 Dubbo 注册的服务,那么就启动 consumer 的项目,待 consumer 的项目启动成功后,我们打开浏览器访问 localhost:8082 来访问我们的接口,截图如下:

        可以看到,我们的服务调用成功了。

        网上关于 Dubbo 的注解的介绍更多的是旧版本的 @Service 和 @Reference,而不是本文中的 @DubboService 和 @DubboReference。不过它们的用法基本是一致的。

springboot采用yml配置整合dubbo2.7版本 1.maven引用dubbo2.7 <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.... 阅读详情

相关推荐

gRPC vs Thrift vs Dubbo:三大RPC框架在Windows下的开发环境搭建对比

本文详细对比了gRPC、Thrift和Dubbo三大RPC框架在Windows平台下的C++开发环境搭建过程。文章聚焦于使用MinGW等工具链,从依赖管理、编译配置到首个服务验证,深入剖析了各框架在Windows下的实际搭建难度、网络依赖挑战及工具链成熟度,为技术选型提供实操性指导。

weixin_29309213的博客 406

dubbo 配置

dubbo简单注册nacos使用

vily_luky的博客 994

dubbo的配置文件详解(推荐)

主要介绍了dubbo 配置文件详解(推荐),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

dubbo yml配置_spring-boot集合dubbo

前提搭建好zookeeper以及dubbo-admin(docker搭建zookeeper以及dubbo-admin )一、需要提前准备的项目以及相关依赖服务的消费者manage-service服务的提供者manage-service-client服务依赖的公共对象类以及接口manage-service-dao消费者以及提供者需要依赖的pompom.xmlmanage-service-dao创建公...

weixin_39552037的博客 532

R语言分类变量的统计描述

三篇介绍了连续变量的统计描述的R语言相关函数,计算数值的相关统计指标。本文介绍分类变量的统计描述及如何在R语言中实现。 不同于连续变量,分类变量的统计描述主要是汇总分类变量各类别例数及百分比。 1、table()函数 ...

zsc943290710的博客 1万+

stm32H743基于CubeMX配置为双ADC多通道DMA规则采样

stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。 需求: 使用stm32H743的ADC采集5路ovrc

xtqbp的博客 4364

引入dubbo项目接口_Dubbo框架的Hello World

最近写基于 Dubbo 的 Demo,本来挺简单的一个 Demo 但是整了两个小时,而最后解决的方法是因为包名的问题。可能很多所谓的经验不过就是一个踩坑的经验。Dubbo 介绍 Dubbo 的作用引用 GitHub 的介绍是:Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法...

weixin_35381903的博客 218

汽车售后诊断 ODX 和 OTX 对比分析报告

在汽车行业不断发展的当下,汽车售后诊断技术对于保障车辆性能、维护车主权益以及提升汽车品牌服务质量起着至关重要的作用。随着汽车电子化程度的不断提高,售后诊断所涉及的数据和流程愈发复杂,这就促使行业需要更加标准化、高效化的诊断技术方案。开放诊断数据交换(ODX)和开放测试序列交换(OTX)便是在这样的背景下应运而生的两种重要标准,它们为汽车售后诊断提供了强大的支持。本报告将深入剖析 ODX 和 OTX 的技术细节、应用场景、优势与挑战,并进行全面的对比,旨在为汽车行业从业者在选择和应用这两种标准时提供有价值的参

芊言凝语 1640

dubbo yml配置_Dubbo框架的Hello World

最近写基于 Dubbo 的 Demo,本来挺简单的一个 Demo 但是整了两个小时,而最后解决的方法是因为包名的问题。可能很多所谓的经验不过就是一个踩坑的经验。Dubbo 介绍 Dubbo 的作用引用 GitHub 的介绍是:Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自...

weixin_39891317的博客 495

【Allegro学习笔记】常规标贴封装创建-0402封装创建实例

摘要 本文主要介绍如何使用Allegro制作表面贴装封装。 所使用的软件 使用Allegro制作常规贴片封装主要使用的软件有Pad Designer和Allegro 1 0402类封装制作 1.1 0402类封装焊盘分析 0402封装尺寸图如图1...

Honglong 1万+

《嵌入式最全面试题-Offer直通车》目录

嵌入式领域蓬勃发展,嵌入式工程师成为众多科技企业争抢的热门人才。如果你渴望在嵌入式面试中脱颖而出,成功斩获心仪的 offer,那么《嵌入式最全面试题 - Offer直通车》将是你的绝佳选择。本专栏是优快云是热门专栏,100多篇文章,总字数过百万。每月新增订阅用户过百,现在是优惠价9.9元,后面要逐渐恢复原价,早订阅早受益。本专栏精心整理了众多超万字的精华内容,总计达数十万字的嵌入式面试题总结。涵盖从嵌入式基础知识到各大厂面试真题,从驱动开发到操作系统,从硬件到软件等各个方面。

大模型大数据攻城狮的专栏 8401

dubbo学习日志(一)--搭建简单的dubbo框架(hello world)

简单了解一下dubbo: 1:简单说dubbo是一个由阿里巴巴开发的高性能、透明化的RPC框。 2:RPC又是什么:也就是远程调用。比如服务器A要调用服务器B上的方法,不在一个机器上要怎么调用,这时我们想到的是网络。rpc就干这事,就跟我们调用本地方法一样,不像调用web接口那么麻烦。 通过百度,又了解到dubbo的特点   透明化的远程方法调用:  像调用本地方法一样调用远程方法;只需简...

飘扬的麦子 305

Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介

上一篇 《Android AVB 分析(十一)bootloader 是如何进行 verify boot 检查的?》 分析了 bootloader 中是如何调用 libavb 函数库验证 vbmeta 和 boot 等分区的。接下来就打算写一篇介绍 dm-verity 原理的文章,然后再写一篇徒手 dm-verity 实践的文章,结果偶然发现了本篇的英文原版。写得太好,我觉得自己完全没有必要再写原理了。由于原文是英文,有些英语不太好的朋友不一定能完全理解。我花了点时间,结合 AI 将英语原文翻译成中文。

洛奇看世界 3598

Dubbo学习1-Hello world

前言 互联网技术到今天已经非常成熟和稳定了,其中为了解决高并发、大规模的服务请求,出现了微服务、RPC这样的分布式架构。今天就从头开始学习RPC框架dubbo。 为什么要学Dubbo 关于分布式的解决方案有很多,光RPC框架就有很多种,甚至有人比较了RPC框架性能, 结果显示dubbo垫底,以及spring cloud这种推崇Rest Http请求代替RPC, 那为什么还要学习RPC? 首先,R...

weixin_33924312的博客 98

Flutter:如何在Android中实现串口通信调试

本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。

sg_knight的专栏 6098

MVSNet (pytorch版) 搭建环境 运行dtu数据集重建 实操教程(图文并茂、超详细)

MVSNet (pytorch版) 代码注释版 下载 (注释非常详细,代码结构有所调整,使用起来更方便) 深度学习三维重建 MVSNet-ECCV-2018 (源码、pytorch版、原文+注释、译文+批注)Meshlab查看三维点云时 ,使用技巧总结。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2938

经典Java RPC框架细讲Dubbo

即开发者无论是调用本地的还是远程的函数,本质上编写的调用代码基本上都是相同的。当服务越来越多,服务资源得不到合理的利用逐渐呈现出来(例如有的服务调用频率特别大,有的服务调用频率又特别小,此时应该协调出调用频率小的服务器资源给调用频率高的服务),此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用。...

weixin_62421895的博客 1613

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Dubbo从入门到精通:一步步构建分布式服务架构

为了应对这些挑战,微服务架构应运而生,而 Dubbo 作为国内最流行的微服务框架之一,在企业级应用中得到了广泛的应用。无论你是刚接触微服务的小白,还是有一定经验的开发者,都能通过本文快速掌握 Dubbo 的精髓。Dubbo 提供多种负载均衡策略,如轮询(Round Robin)、加权轮询(Weighted Round Robin)和最少活跃调用(Least Active)。注册中心用于管理服务提供者和服务消费者的注册与发现。通过本文的学习,你已经掌握了 Dubbo 的核心概念、配置方法以及高级使用技巧。

Leaton的博客 962

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

dubbo解决 hibernate懒加载_给他人解释什么是dubbo

小小最近开始学习dubbo了,这次进行相关的学习。简介思维导图如下什么是Dubbodubbo 是一款高性能的分布式服务框架,高性能的,透明化的RPC远程调用方案,SOA服务治理方案,与Spring 体系同时并驾崎岖于Java体系生态中。每天为上千个服务提供,使用以及应用。在上方的词语中,出现了,分布式服务,RPC远程调用执行方案,SOA服务治理方案,这里对这几个词语进行依次解释。分布式服务 包含,...

weixin_35006433的博客 216

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

dubbo learning - day 2

dubbo learning day2 for what purpose? how to achieve? simple implementation. 业务场景描述 假设我们需要构建一个sayHello的服务,这个服务只需要简单的输出“hello!”。 按照常规的设计思路,我们会为这个服务设计一个接口HelloService ,和一个实现类HelloServiceImpl。 eg. in

让我们每天一起进步 467

Netty学习笔记(一)

使用Netty,你可以简单、快速的开发出网络服务器或是客户端;Netty大大简化了网络编程的复杂度;本文介绍如何在项目中使用netty

violetgo的博客 708

dubbo学习--Helloword

按照国际惯例,我们先写个hello world示例。但是在写第一个hello world示例之前,我想有必要先给大家简单介绍些dubbo的框架原理及基本组成。 dubbo是阿里巴巴著名的开源分布式SOA治理框架,它每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。 其配置灵活性强,性能表现也相当不错,并且支持很多服务特性(如异步调用、

jasnet_u的博客 482

dubbo(一)dubbo+zookeeper 之 Hello World

以前2个项目交互,一直用的httpclient,繁琐的很. 用dubbo来做RPC确实好太多啦. 先把这个demo记录下来. 操作步骤: 1.安装zookeeper,下载dubbo-admin的war包. 2.写代码. 分为 接口,提供者,消费者 3个模块 3.测试+后台管理查看 1.安装zookeeper,下载dubbo-admin的war包. 1) zookeeper下

能写下来,理解才会更深 5264

dubbo入门之Hello World

前言:dubbo需要zookeeper相配合使用,使用dubbo之前启动zookeeper,假设zookeeper服务ip为:192.168.3.19:2181,zookeeper前面博文有讲到,可以先学习再来进行dubbo学习。dubbo官方介绍:dubbo服务治理:搭建dubbo项目:一.创建生产者1创建maven项目Dubbo_HelloWorld2.pom文件内容:&lt;project ...

Java_Mrsun的博客 584

Dubbo——Hello world

一、提出需求   某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址列表,而订单服务和用户服务分别部署在不同的机器上,此时就需要通过RPC的方式。   我们需要创建两个服务模块:订单服务(服务消费者)和用户服务(服务提供者) 模块 功能 订单服务web模块 创建订单等 用户服务service模块 查询用户地址等   测试预期结果:订单服务web模块在A服务器,用户...

如不來的博客 405
上一篇: LeetCode | 100.相同的树(C语言版)
下一篇: 鸿蒙系统开源
码农UP2U
博客等级 码龄14年 6276粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农UP2U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值