当前位置: 首页 > news >正文

Dubbo入门案例

Dubbo

学习地址:Dubbo3 简介_w3cschool;

01-Dubbo入门案例

​ 我们先来新建一个Dubbo的小案例来体验一下Dubbo的使用,我们先来创建一个springboot的项目。

1.1-zookeeper下载启动

​ 在编写我们的入门案例之前,我们需要先去下载一个注册中心,我们这里选择zookeeper,接下来介绍windows和Linux下载zookeeper。我们先去到清华大学镜像网址:Index of /apache/zookeeper (tsinghua.edu.cn);选择自己需要的对应版本。

​ zookeeper的详解可以去看看这篇文章:Zookeeper——简介 & 下载 & Linux下配置安装启动 & 解读相关配置参数_linux启动zk是什么用-CSDN博客;

1.1.1-Linux系统下载

​ 在Linux下执行如下命令【注:这里根据自己的版本进行下载和解压】

wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz

在这里插入图片描述
可以看到我们现在下载成功了,下载成功后对其进行解压,执行如下命令

tar -xzvf apache-zookeeper-3.7.2-bin.tar.gz

​ 解压成功后,我们可以选择给zookeeper重新命名一下:

mv apache-zookeeper-3.7.2-bin zookeeper-3.7.2

​ 进入到zookeeper的安装路径,使用mkdir zkData命令创建zkData的目录,这个目录是专门用来存放 zookeeper 相关的数据节点信息,创建完成后,进入到zookeeper的配置文件

vim conf/zoo_sample.cfg

​ 将dataDir的目录改为我们刚刚创建的目录

在这里插入图片描述

​ 我们将配置文件修改后,我们将配置文件复制一份,并改名为zoo.cfg,命令如下

cp zoo_sample.cfg zoo.cfg

修改完成后我们就可以启动zookeeper了,进入到zookeeper的bin目录下【注:必须得进到bin目录下】,使用如下命令启动zookeeper

./zkServer.sh start

​ 使用ps -ef|grep zookeeper命令就可以看到如下内容,说明我们zookeeper启动成功了

在这里插入图片描述

1.2-父模块-DubboDemo

创建一个父模块,DubboDemo

在这里插入图片描述

在这里插入图片描述

创建之后,将如下内容粘贴如pom.xml中,如果自己导入pom依赖注意版本兼容的问题

<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId><artifactId>DubboDemo</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>provider</module><module>consumer</module><module>provider-server</module></modules><!-- Spring Boot的父依赖,定义了Spring Boot版本和其他依赖的版本管理 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version></parent><!-- 依赖管理 --><dependencies><!--导入依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><!--zkclient--><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><!--解决日志冲突--><!--引入zookeeper--><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version></dependency><!--解决 java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/TreeCacheListener--><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>2.8.0</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.14</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><!-- 构建配置 --><build><plugins><!-- Spring Boot的Maven插件,用于打包成可执行的jar文件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties></project>

​ 创建完父项目后,可以把父项目中的src模块删掉

1.3-接口模块-provider-server

​ 在父项目下创建provider-server模块,并定义service层的接口,如下图所示

在这里插入图片描述

​ 创建完provider-server之后,我们需要把该模块打包到本地,先在pom文件中添加如下构建信息,

<?xml version="1.0" encoding="UTF-8"?>
<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"><parent><artifactId>DubboDemo</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><packaging>pom</packaging><!-- 这里的groupId和artifactId填写自己的包名和组名 --><groupId>com.lhl</groupId><artifactId>provider-server</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

1.4-提供者模块-provider

​ 在父项目下新建子模块provider,如图所示,这个controller包入门案例不必理会。

在这里插入图片描述

provider的pom文件需要依赖我们刚刚打包的provider-server,这是我的依赖如下【可以不一样】

	<dependency><groupId>com.lhl</groupId><artifactId>provider-server</artifactId><version>1.0-SNAPSHOT</version></dependency>

​ 添加application.yml文件内容如下:

server:port: 8081
dubbo:application:# 注册的应用名name: dubbo-springboot-provider-8082protocol:# 协议名称name: dubbo# port -1表示端口号随机port: -1registry:# zookeeper地址address: zookeeper://自己zookeeper地址:2181
zookeeper:#zookeeper请求超时时间request-timeout: 10000

HelloServiceImpl具体代码如下

// 注意:这个Service要选择dubbo包下的,这个Service的意思是将这个service实现注册到dubbo中
@Service
public class HelloServiceImpl implements HelloService {@Overridepublic String sayHello() {return "hello8081";}
}

ProviderApplication类具体代码如下:

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

1.5-消费者模块-consumer

​ consumer的目录如下:

在这里插入图片描述

​ 在父模块下同样创建consumer模块,同样添加如下依赖

	<dependency><groupId>com.lhl</groupId><artifactId>provider-server</artifactId><version>1.0-SNAPSHOT</version></dependency>

​ 添加application.yml配置文件

server:port: 8080
dubbo:application:# 注册的应用名name: dubbo-springboot-consumerprotocol:# 协议名称name: dubbo# port -1表示端口号随机port: -1registry:# zookeeper地址address: zookeeper://159.75.134.127:2181
zookeeper:request-timeout: 10000

HelloController的内容如下:

@RestController
public class HelloController {// 这个注解是用来获取远程实现类的@ReferenceHelloService helloService;@RequestMapping("/hello")public String sayHello(){return helloService.sayHello();}
}

1.6-启动项目验证

​ 最后我们先运行provider模块,启动完成后,我们再启动consumer模块,最后我们在访问127.0.0.1:8080/hello,控制台打印hello8081,入门案例完成。如图所示

在这里插入图片描述

相关文章:

  • 本地搭建OnlyOffice在线文档编辑器结合内网穿透实现远程协作
  • 在线订餐革命:Spring Boot 点餐系统
  • 静电势能(electrostatic potential energy)和电势(electric potential)
  • 戴尔笔记本电脑——重装系统
  • 进阶SpringBoot之 Dubbo 及 Zookeeper 安装
  • vant van-pull-refresh + van-list实现list列表支持搜索和下拉刷新
  • centos7如何连接网络 centos7wifi连接
  • 决策树算法在机器学习中的应用
  • WebGL复杂几何体与模型加载
  • Entity Framework扩展高级查询功能
  • 炉石传说辅助攻略—VMOS云手机助攻:国服回归任务要点,哪个辅助更好?
  • Elasticsearch 中 Painless 脚本详解
  • Python3爬虫教程-HTTP基本原理
  • 【MySQL】基础入门篇
  • [WMCTF2020]Make PHP Great Again 2.01
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Apache的基本使用
  • es的写入过程
  • JS+CSS实现数字滚动
  • springboot_database项目介绍
  • VuePress 静态网站生成
  • 程序员该如何有效的找工作?
  • 机器学习 vs. 深度学习
  • 聊一聊前端的监控
  • 浏览器缓存机制分析
  • 入手阿里云新服务器的部署NODE
  • 通信类
  • 温故知新之javascript面向对象
  • 在Unity中实现一个简单的消息管理器
  • 自定义函数
  • 最简单的无缝轮播
  • Android开发者必备:推荐一款助力开发的开源APP
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # Kafka_深入探秘者(2):kafka 生产者
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #QT(一种朴素的计算器实现方法)
  • (12)Linux 常见的三种进程状态
  • (4)(4.6) Triducer
  • (ros//EnvironmentVariables)ros环境变量
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (全注解开发)学习Spring-MVC的第三天
  • (十一)手动添加用户和文件的特殊权限
  • (转) ns2/nam与nam实现相关的文件
  • (转)ObjectiveC 深浅拷贝学习
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ..回顾17,展望18
  • .gitattributes 文件
  • .gitignore文件设置了忽略但不生效
  • .Net 6.0--通用帮助类--FileHelper
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core 版本不支持的问题
  • .NET gRPC 和RESTful简单对比