dubbo之整合SpringBoot
目录
zookeeper安装
1.拉取ZooKeeper镜像
2.新建文件夹
3.挂载本地文件夹并启动服务
4.查看容器
5.进入容器(zookeeper)
Dubbo Admin安装
1.下载dubbo-admin
2.zip包解压
3.修改配置文件
4.打包项目
5.启动jar
6.访问
构建项目
api模块
1.创建实体类
2.创建测试接口
生产者模块
1.导入依赖
2.添加配置
3.编写启动类
4.添加mapper接口
5.实现接口
6.编写controller接口
7.调用接口
消费者模块
1.导入依赖
2.添加配置
3.编写启动类
4.调用生产者接口
5.调用接口
zookeeper安装
在docker下安装zookeeper
1.拉取ZooKeeper镜像
# 查看本地镜像
docker images
# 拉取ZooKeeper镜像最新版本
docker pull zookeeper:latest
2.新建文件夹
mkdir zookeeper
3.挂载本地文件夹并启动服务
docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v /root/docker/zookeeper:/data --name zookeeper --restart always zookeeper
-d :表示在一直在后台运行容器
-e TZ="Asia/Shanghai" :指定上海时区
-p 2181:2181 :对端口进行映射,将本地2181端口映射到容器内部的2181端口
-v :将本地目录(文件)挂载到容器指定目录;
--name :设置创建的容器名称
--restart always :始终重新启动zookeeper
4.查看容器
docker ps
5.进入容器(zookeeper)
docker exec -it zookeeper bash //只登录容器,不登录 zkCli
./bin/zkCli.sh //执行脚本新建一个Client,即进入容器
Dubbo Admin安装
1.下载dubbo-admin
进入github,搜索dubbo-admin:https://github.com/apache/dubbo-admin

2.zip包解压

3.修改配置文件
D:\idealTestProjects\dubbo\dubbo-admin-develop\dubbo-admin-server\src\main\resources目录下,修改application.properties 配置文件

找到下面配置的注册中心的地址,修改为zookeeper注册中心的IP和端口,也可以自定义访问端口号

4.打包项目
进入到D:\idealTestProjects\dubbo\dubbo-admin-develop\dubbo-admin-distribution目录下,按住shift+右键,打开power shell,执行清除并打包命令
mvn clean package -Dmaven.test.skip=true
都success后就成功了

5.启动jar
在目录D:\idealTestProjects\dubbo\dubbo-admin-develop\dubbo-admin-distribution\target下,执行下面的命令启动dubbo-admin

java -jar .\dubbo-admin-0.5.0-SNAPSHOT.jar
6.访问
浏览器输入:43.139.136.235:6097,用户名密码都是root


构建项目
api模块
项目结构:

1.创建实体类
@Data
public class User implements Serializable {private Long id;private String username;private String password;
}
注意:实体来要添加Serializable,否则会序列化报错
2.创建测试接口
public interface UserService {User selectUserById(Long id);
}
生产者模块
创建springboot项目:dubbo-develop-provider

1.导入依赖
<dependencies><dependency><groupId>com.lgcgk</groupId><artifactId>dubbo-develop-api</artifactId><version>1.0-SNAPSHOT</version></dependency><!--dubbo 与 spring-boot 整合包--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><!--springboot 启动核心包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--springboot rest --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!---dubbo 与 zookeeper整合包 --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-zookeeper</artifactId></dependency><!--mysql相关的驱动--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.0</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency></dependencies><build><resources><resource><!-- 描述存放资源的目录,该路径相对POM路径--><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
2.添加配置
server:port: 6050spring:application:name: dubbo-samples-prividerdatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/dubbo-sql?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=trueusername: rootpassword: 123456
mybatis-plus:type-aliases-package: com.lgcgk.provider.entitymapper-locations: com/lgcgk/provider/mapper/*.xmldubbo:application:name: ${spring.application.name}registry:address: zookeeper://127.0.0.1:2181timeout: 200000protocol:name: dubboport: 20890scan:base-packages: com.lgcgk.provider.service.impl
dubbo配置:服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
dubbo.protocol.name:dubbo服务名称
dubbo.protocol.port:dubbo服务端口
dubbo.registry.timeout:请求zookeeper超时时间
3.编写启动类
@EnableDubbo
@SpringBootApplication
@MapperScan("com.demo.provider.mapper")
public class ProviderApp {public static void main(String[] args) {SpringApplication.run(ProviderApp.class,args);System.out.println("生产者启动完毕");}
}
dubbo必须配置注解@EnableDubbo
@EnableDubbo:整合了三个注解@EnableDubboConfig、@DubboComponentScan、@EnableDubboLifecycle
1.@EnableDubboConfig:将用于解析配置相关的类注册到spring容器
2.@DubboComponentScan:用于指定@Service扫描路径
3.@EnableDubboLifecycle:注册了两个监听器到spring容器
4.添加mapper接口
public interface UserMapper {User selectUserById(Long id);
}
xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.lgcgk.provider.mapper.UserMapper"><select id="selectUserById" resultType="com.lgcgk.api.entity.User">select * from user where id = #{id}</select>
</mapper>
5.实现接口
@DubboService
@AllArgsConstructor
public class UserServiceImpl implements UserService {UserMapper userMapper;public User selectUserById(Long id) {User user = userMapper.selectUserById(id);return user;}
}
1.@DubboService
在类上加入@DubboService注解,表示该Bean以ServiceBean形式注册到Spring容器中,以便后续创建Dubbo Service
2.@AllArgsConstructor
是lombok中的注解,作用在类上;使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数;@Autowired和@resource可以用它来代替
6.编写controller接口
@RestController
@RequestMapping("/provider")
@AllArgsConstructor
public class UserController {UserService userService;@GetMapping("/selectUserById/{id}")public User selectUserById(@PathVariable("id")Long id){return userService.selectUserById(id);}}
7.调用接口

消费者模块

1.导入依赖
<dependencies><!--dubbo-samples-springcloud-api 项目 依赖--><dependency><groupId>com.lgcgk</groupId><artifactId>dubbo-develop-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-zookeeper</artifactId></dependency></dependencies>
2.添加配置
server:port: 6051
spring:application:name: dubbo-samples-consumerdubbo:application:name: ${spring.application.name}registry:address: zookeeper://127.0.0.1:2181timeout: 200000protocol:name: dubbo-consumer
3.编写启动类
@SpringBootApplication
@EnableDubbo
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class,args);}
}
4.调用生产者接口
@RestController
@RequestMapping("/consumer")
@Slf4j
public class ConsumerUserController {@DubboReference( protocol = "dubbo", loadbalance = "random")UserService userService;@RequestMapping("/selectUserById/{id}")public User getUser(@PathVariable("id") Long id) {User user = userService.selectUserById(id);log.info("response from provider: {}", user);return user;}}
@DubboReference:表名该类为Dubbo Reference,在需要调用的服务接口上使用即可直接调用远程服务。
protocol:调用的服务名
loadbalance:dubbo提供了4种负载均衡策略
1.random:基于权重随机算法
2.roundrobin:基于加权轮询算法
3.leastactive:基于最少活跃调用数算法
4.consistenthash:基于 hash 一致性
5.调用接口

相关文章:
dubbo之整合SpringBoot
目录 zookeeper安装 1.拉取ZooKeeper镜像 2.新建文件夹 3.挂载本地文件夹并启动服务 4.查看容器 5.进入容器(zookeeper) Dubbo Admin安装 1.下载dubbo-admin 2.zip包解压 3.修改配置文件 4.打包项目 5.启动jar 6.访问 构建项目 api模块 1.创建…...
UE 5 GAS 在项目中处理AttributeSet相关
这一篇文章是个人的实战经验记录,如果对基础性的内容不了解的,可以看我前面一篇文章对基础的概念以及内容的讲解。 设置AttributeSet 使用GAS之前,首先需要设置参数集AS,这个是用于同步的一些参数,至于如何设置GAS&a…...
JDBC数据库连接
目录 引言 一,基本概念 二,常用操作步骤 三,连接操作 引言 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种 关系数据库提供统一访问,它由一组用Java语言编写的类和接口…...
gitee分支合并
合并dev分支到master(合并到主分支) git checkout master git merge dev //这里的dev表示你的分支名称 git push //推送到远程仓库 效果如下图 不报错就表示推送成功了,希望能帮助各位小伙伴...
Python小白入门:文件、异常处理和json格式存储数据
这里写自定义目录标题 所用资料 一、从文件中读取数据1.1 读取整个文件1.2 文件路径1.3 逐行读取1.4 创建一个包含文件各行内容的列表1.5 使用文件的内容1.6 包含一百万位的大型文件1.7 圆周率值中包含你的生日吗练习题 二、写入文件2.1 写入空文件2.2 写入多行2.3 附加到文件练…...
16bit、8 通道、500kSPS、 SAR 型 ADC——MS5188N
MS5188N 是 8 通道、 16bit 、电荷再分配逐次逼近型模数 转换器,采用单电源供电。 MS5188N 拥有多通道、低功耗数据采集系统所需的所有 组成部分,包括:无失码的真 16 位 SAR ADC ;用于将输入配 置为单端输入࿰…...
Chapter 12: Regular expressions | Python for Everybody 讲义笔记_En
文章目录 Python for Everybody课程简介Regular ExpressionsRegular ExpressionsCharacter matching in regular expressionsExtracting data using regular expressionsCombining searching and extractingEscape characterSummaryBonus section for Unix / Linux usersDebugg…...
Android javaMail mergeDebugJavaResource FAILED解决
Java mail 引入这两个jar之后 implementation com.sun.mail:android-mail:1.6.7implementation com.sun.mail:android-activation:1.6.7build直接报错 > Task :app:mergeDebugJavaResource FAILED Execution failed for task :app:mergeDebugJavaResource. > A failure o…...
【ArcGIS Pro二次开发】(57):地图系列
在ArcGIS Pro中,有一个地图系列,可以在一个布局中导出多个地图。 在SDK中为ArcGIS.Desktop.layout.MapSeries类和映射系列导出选项,可以以支持多页导出。 MapSeries类提供了一个静态CreateSpatialMapSeries方法,该方法使用指定的…...
秋招打卡015(20230811)
文章目录 前言一、今天学习了什么?二、动态规划之股票问题1、总结2、题目 三、SQL总结 前言 提示:这里为每天自己的学习内容心情总结; Learn By Doing,Now or Never,Writing is organized thinking. 提示:…...
如何使用Word转PDF转换器在线工具?在线Word转PDF使用方法
Word转PDF转换器在线,是一种方便快捷的工具,可帮助您在不需要下载任何软件的情况下完成此任务。无论您是需要在工作中共享文档,还是将文件以PDF格式保存以确保格式不变,都可以依靠这款在线工具轻松完成转换。那么如何使用Word转PD…...
自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅰ]
分类目录:《自然语言处理从入门到应用》总目录 会话缓存记忆ConversationBufferMemory 本节将介绍如何使用对话缓存记忆ConversationBufferMemory。这种记忆方式允许存储消息,并将消息提取到一个变量中,我们首先将其提取为字符串:…...
Camunda 7.x 系列【7】Spring Boot 集成 Camunda 7.19
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. Camunda Platform Run3. Spring Boot 版本兼容性4. 集成 Spring Boot5. 启动项目…...
24华东交通软件工程837考研题库
1.Jackson设计方法是由英国的M.Jackson所提出的。它是一种面向( )的软件设 计方法。 A.对象 B.数据流 C.数据结构 D.控制结构 答案:C 2.软件设计中,Jackson方法是一种面向…...
nginx 以及nginx优化
目录 nginx功能介绍 静态文件服务 反向代理 动态内容处理 SSL/TLS 加密支持 虚拟主机支持 URL 重写和重定向 缓存机制 日志记录 可扩展性和灵活性 nginx的主要应用场景 nginx常用命令 nginx另外一种安装方式 nginx常用的信号符: nginx配置文件详解 n…...
cesium学习记录04-坐标系
一、地理坐标系和投影坐标系的关系 地理坐标系 (Geographic Coordinate System, GCS) 定义:地理坐标系是一个基于三维地球表面的坐标系统。它使用经度和纬度来表示地点的位置。 特点: 使用经纬度来定义位置。 基于特定的地球参考椭球体。 适用于全球范…...
P5737 【深基7.例3】闰年展示
题目描述 输入 x , y x,y x,y,输出 [ x , y ] [x,y] [x,y] 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。 输入格式 输入两个正整数 x , y x,y x,y,以空格隔开。 输出格式 第一行输出一个正整数…...
Nacos的安装使用教程Linux
在 Linux 操作系统上安装和使用 Nacos 与 Windows 类似,以下是详细的步骤教程。我们将使用 Nacos 的 Standalone 模式进行安装和使用。请注意,对于生产环境,建议使用集群模式来实现高可用性和可扩展性。 步骤 1:准备环境 Java 安…...
数据结构-学习
参考: 数据结构-学习笔记_蓝净云_蓝净云的博客-CSDN博客...
【MFC】05.MFC六大机制:程序启动机制-笔记
MFC程序开发所谓是非常简单,但是对于我们逆向人员来说,如果想要逆向MFC程序,那么我们就必须了解它背后的机制,这样我们才能够清晰地逆向出MFC程序,今天这篇文章就来带领大家了解MFC的第一大机制:程序启动机…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
Git 命令全流程总结
以下是从初始化到版本控制、查看记录、撤回操作的 Git 命令全流程总结,按操作场景分类整理: 一、初始化与基础操作 操作命令初始化仓库git init添加所有文件到暂存区git add .提交到本地仓库git commit -m "提交描述"首次提交需配置身份git c…...
uniapp获取当前位置和经纬度信息
1.1. 获取当前位置和经纬度信息(需要配置高的SDK) 调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...
ffmpeg(三):处理原始数据命令
FFmpeg 可以直接处理原始音频和视频数据(Raw PCM、YUV 等),常见场景包括: 将原始 YUV 图像编码为 H.264 视频将 PCM 音频编码为 AAC 或 MP3对原始音视频数据进行封装(如封装为 MP4、TS) 处理原始 YUV 视频…...
自定义线程池1.2
自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...
VSCode 没有添加Windows右键菜单
关键字:VSCode;Windows右键菜单;注册表。 文章目录 前言一、工程环境二、配置流程1.右键文件打开2.右键文件夹打开3.右键空白处打开文件夹 三、测试总结 前言 安装 VSCode 时没有注意,实际使用的时候发现 VSCode 在 Windows 菜单栏…...
