前言:

2023-12-26 19:38:05

最近学习分布式技术:Dubbo+zookeeper,准备写一个demo用springboot整合dubbo和zookeeper。但是看了网上一些教程都是几年前的,试着跟着写了几个demo没一个跑起来,基本是maven依赖方面的问题。

版本信息:

springboot:2.7.6
Dubbo:2.7.3
zookeeper:3.8.0
jdk:1.8
idea:2021.3.2

Maven坐标:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency> <dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency> <dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency> <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>
</dependencies>

Demo项目:

项目准备:

1、点击创建一个springboot项目

2、勾选web和lombok

3、创建

4、修改IDEA的Maven配置

5、刷新Maven

6、运行测试

7、修改pom配置文件

8、刷新maven

项目结构:

src:

├─main

│ ├─java

│ │ └─com

│ │ └─example

│ │ └─dubbo

│ │ │ DubboApplication.java

│ │ │ TimeService.java

│ │ │

│ │ ├─consumer

│ │ │ │ ConsumerApplication.java

│ │ │ │

│ │ │ └─controller

│ │ │ indexController.java

│ │ │

│ │ └─provider

│ │ │ ProviderApplication.java

│ │ │

│ │ └─impl

│ │ TimeServiceImpl.java

│ │

│ └─resources

│ │ application-consumer.properties

│ │ application-provider.properties

│ │ application.properties

│ │

│ ├─static

│ └─templates

生产者:

ProviderApplication.java

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
@EnableDubbo
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class,args);
}
}

TimeServiceImpl.java


import com.example.dubbo.TimeService;
import org.apache.dubbo.config.annotation.Service; @Service //注意引入的是dubbo包下的Service
public class TimeServiceImpl implements TimeService { @Override
public String getTime() {
System.out.println("provider被调用啦!");
return "Hello,Dubbo!";
}
}

注意要将ProviderApplication.java的运行配置文件改为provider!

application-provider.properties

server.port=8082
dubbo.application.name=provider-app

消费者:

ConsumerApplication.java

import com.example.dubbo.TimeService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import java.time.format.DateTimeFormatter; @SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);
}
}

indexController.java

import com.example.dubbo.TimeService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class indexController { @Reference//Duboo包下的
private TimeService timeService; @GetMapping("/")
public String getTime(){
System.out.println("consumer被调用啦!");
return timeService.getTime();
}
}

注意要将ConsumerApplication.java的运行配置文件改为consumer!

application-consumer.properties:

server.port=8081
dubbo.application.name=consumer-app

公共配置:

application.properties:

# 换成你自己zookeeper服务的地址
dubbo.registry.address=zookeeper://localhost:2181

启动:

依次启动zookeeper、ProviderApplication.java、ConsumerApplication.java

项目地址:

百度网盘:https://pan.baidu.com/s/1dyxzUGJaiQUF0ibXGKBITA

提取码:ex2s

gitee:https://gitee.com/qinglianguzhou/dbuuo-demo.git

Spingboot整合Dubbo+zookeeper的更多相关文章

  1. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!   “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...

  2. springboot多模块开发以及整合dubbo\zookeeper进行服务管理

    之前研究了springboot单工程的使用,参考git地址:https://github.com/qiao-zhi/springboot-ssm 下面研究springboot多模块开发的过程. 1.模 ...

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

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

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

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

  5. 【java框架】SpringBoot(5)--SpringBoot整合分布式Dubbo+Zookeeper

    1.理论概述 1.1.分布式 分布式系统是若干独立计算机的集合,这些计算机对于用户来讲就像单个系统. 由多个系统集成成一个整体,提供多个功能,组合成一个板块,用户在使用上看起来是一个服务.(比如淘宝网 ...

  6. SpringBoot整合dubbo(yml格式配置)

    yml文件 如果只作为服务的消费者不用暴露端口号,扫描的包名根据自己service改 dubbo: application: name: springboot-dubbo-demo #应用名 regi ...

  7. dubbo+zookeeper+springBoot框架整合与dubbo泛型调用演示

    dubbo + zookeeper + spring Boot框架整合与dubbo泛型调用演示   By:客 授客 QQ:1033553122  欢迎加入全国软件测试交流 QQ  群:7156436 ...

  8. Springboot+dubbo+zookeeper整合

    本想自己搭建一个Spring+dubbo+zookeeper整合好的框架,想寻找个最佳实现但是遇到各种各样的问题,只好自己看看dubbo starter的源码 整理如下: 通过打上断点来看配置的对不对 ...

  9. Springboot整合Dubbo和Zookeeper

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

  10. Spring Boot 整合 Dubbo和Zookeeper

    Spring Boot 整合 Dubbo和Zookeeper Spring Boot 整合 Dubbo和Zookeeper 环境介绍 Zookeeper 安装 启动 Dubbo admin 搭建 创建 ...

随机推荐

  1. Linux下MySQL备份指定数据库命令

    比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# mysqldump -u root -p li ...

  2. 给你的模糊测试开开窍——定向灰盒模糊测试(Directed Greybox Fuzzing)综述

    ​ 本文系原创,转载请说明出处 Please Subscribe Wechat Official Account:信安科研人,获取更多的原创安全资讯 原论文:<The Progress, Cha ...

  3. LeetCode297:hard级别中最简单的存在,java版,用时击败98%,内存击败百分之九十九

    本篇概览 因为欣宸个人水平有限,在刷题时一直不敢面对hard级别的题目,生怕出现一杯茶一包烟,一道hard做一天的窘境 这种恐惧心理一直在,直到遇见了它:LeetCode297,建议不敢做hard题的 ...

  4. 二叉搜索树(Binary Search Tree,BST)

    二叉搜索树(Binary Search Tree,BST) 二叉搜索树(Binary Search Tree),也称二叉查找树或二叉排序树,是一种特殊的二叉树,它满足以下性质 对于二叉搜索树的每个节点 ...

  5. 小札 Combinatorics & Inclusion-Exclusion Principle 1

    「codeforces - 340E」Iahub and Permutations link. 把 \(1,\dots,n\) 中剩下没被固定的数的数量记作 \(s\),再把这其中不担心有会填到自己身 ...

  6. Ds100p -「数据结构百题」1~10

    1.「一本通 4.6 例 1」营业额统计 原题来自:HNOI 2002 Tiger 最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger 拿出 ...

  7. Solution -「洛谷 P6287」「COCI 2016-2017」Mag

    Description Link. 定义一条链的价值为链上点权乘积除以节链上点数,求一条价值最小的链. Solution 结论:答案链上最多包含一个 \(2\)(其余全为 \(1\)),并且不在链的两 ...

  8. MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-3

    接上文,单节点升级到80版本之后,构建新版本的80集群就水到渠成.相对简单了,详情可参见之前的集群构建博文. 本文在修改配置集群的新参数时,修改了pxc_strict_mode为默认的ENFORCIN ...

  9. 详解.NET依赖注入中对象的创建与“销毁”

    在DI容器中注册类型,DI容器就可以帮我们创建类型的实例:如果注册类型实现了IAsyncDisposable或者IDisposable接口,对象销毁时DI容器还会帮我们调用DisposeAsync或D ...

  10. python中四种方法提升数据处理的速度

    在数据科学计算.机器学习.以及深度学习领域,Python 是最受欢迎的语言.Python 在数据科学领域,有非常丰富的包可以选择,numpy.scipy.pandas.scikit-learn.mat ...