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的第一大机制:程序启动机…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...