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.调用接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/82166.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24届近5年上海理工大学自动化考研院校分析

今天学姐给大家带来的是上海理工大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、上海理工大学 学校简介 上海理工大学&#xff08;University of Shanghai for Science and Technology&#xff09;是一所以工学为主&#xff0c;工学、理学、经济学、管理学、文…

php实现登录的例子

界面&#xff1a; 登录界面login.html代码&#xff1a; <!DOCUMENT html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"…

【word密码】word设置只读,如何取消?

Word文件打开之后发现是只读模式&#xff0c;那么我们如何取消word文档的只读模式呢&#xff1f;今天给大家介绍几种只读模式的取消方法。 属性只读 有些文件可能是在文件属性中添加了只读属性&#xff0c;这种情况&#xff0c;我们只需要点击文件&#xff0c;再次查看文件属…

sd-roop换脸插件安装

安装步骤 首先看官方教程 sd-webui-roop插件&#xff0c; 如下&#xff1a; 执行 pip install insightface0.7.3在web-ui 界面&#xff0c;插件菜单&#xff0c;从网址安装 https://github.com/s0md3v/sd-webui-roopweb-ui 界面重启如果遇到 NoneType object has no attribu…

状态模式——对象状态及其转换

1、简介 1.1、概述 在软件系统中&#xff0c;有些对象也像水一样具有多种状态&#xff0c;这些状态在某些情况下能够相互转换&#xff0c;而且对象在不同的状态下也将具有不同的行为。为了更好地对这些具有多种状态的对象进行设计&#xff0c;可以使用一种被称为状态模式的设…

基于边缘无线协同感知的低功耗物联网LPIOT技术:赋能智慧园区方案以及数字工厂领域

回到2000年左右&#xff0c;物联网的底层技术支撑还是“ZigBee”&#xff0c;虽然当时ZigBee的终端功耗指标其实也并不庞大&#xff0c;但是&#xff0c;“拓扑复杂导致工程实施难度大”、“网络规模小导致的整体效率低下”都成为限制其发展的主要因素。 LPWAN&#xff0c;新一…

基于kettle实现pg数据定时转存mongodb

mogodb 待创建 基于kettle实现pg数据定时转存mongodb_kettle 实时迁移 mongodb_呆呆的私房菜的博客-CSDN博客

Redis安装以及配置隧道连接(centOs)

目录 1.centOs安装Redis 2. Redis 启动和停⽌ 3. 操作Redis 2.Xshell配置隧道 1.centOs安装Redis #使⽤yum安装Redis yum -y install redis 2. Redis 启动和停⽌ #查看是否启动 ps -ef|grep redis#启动redis: redis-server /etc/redis.conf &#停⽌Redis redis-cli sh…

项目出bug,找不到bug,如何拉回之前的版本

1.用gitee如何拉取代码 本文为转载于「闪耀太阳a」的原创文章原文链接&#xff1a;https://blog.csdn.net/Gufang617/article/details/119929145 怎么从gitee上拉取代码 1.首先找到gitee上想要拉取得代码URL地址 点击复制这里的https地址 1 ps:&#xff08;另外一种方法&…

linux onlyOffice docker 离线部署

文章目录 前言1. 安装Docker容器2. 拉取镜像3. 验证 前言 docker 离线安装onlyoffice&#xff0c;如在线安装可直接跳过导出导入镜像步骤&#xff0c;拉取后直接运行。 1. 安装Docker容器 下载文件 wget https://download.docker.com/linux/static/stable/x86_64/docker-19…

x86 kgdb deug调试分析

本文主要是收集&#xff0c;以下文章写得很好&#xff0c;我二次整理一下。 如果要手动livedb. 1. call kdbg_arch_late() 2. kgd_set_hw_break(addr,8,1); 3. kgdb_correct_hw_break();// enable bp to cpu regs -------------------------------分割线----------------…

使用Automatic1111在本地PC上运行SDXL 1.0

这是我们部署Stable Diffusion的第三篇文章了&#xff0c;前两篇文章都详细介绍了Automatic1111的stable-diffusion-webui的安装&#xff0c;这次主要介绍如何使用SDXL 1.0模型。 获取项目 在本地获取Automatic1111’s WebUI项目&#xff0c;下载完成后应该是这个样子的 下载检…

(十二)大数据实战——hadoop集群之HDFS高可用自动故障转移

前言 本节内容主要介绍一下hadoop集群下实现HDFS高可用的自动故障转移&#xff0c;HDFS高可用的自动故障转移主要通过zookeeper实现故障的监控和主节点的切换。自动故障转移为 HDFS 部署增加了两个新组件&#xff1a;ZooKeeper 和 ZKFailoverController &#xff08;ZKFC&…

Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)

1.简介 在实际工作中&#xff0c;我们经常会听到数据库的性能和稳定性等等&#xff0c;这些有时候也需要测试工程师去评估和测试&#xff0c;因此这篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家&#xff0c;希望对各位小伙…

干货分享|Elsevier投稿进度查询功能正式上线,随时获取投稿状态!

想必广大科研学者们都经历过每天登录系统查看投稿进度的煎熬过程&#xff0c;为了方便广大科研人随时获取投稿状态&#xff0c;2023年8月&#xff0c;Elsevier【微信端投稿进度查询功能】正式上线&#xff01; 无论你是通讯作者还是共同作者&#xff0c;只需一次查询&#xff…

实现vuex数据持久化处理

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 前言&#xff1a; 方案一 localStorage 介绍 值 示例 JSON.stringify() 介绍 语法 参数 返…

AVS3:跨多通道预测PMC

前面的文章中介绍了TSCPM&#xff0c;它是AVS3中用于intra模式的跨通道预测技术&#xff0c;它利用线性模型根据亮度重建像素预测色度像素&#xff0c; 跨通道预测技术用于去除不同通道间的冗余信息&#xff0c;TSCPM可以去除Y-Cb、Y-Cr通道间的冗余&#xff0c;然而却忽略了…

【css】组合器

组合器是解释选择器之间关系的某种机制。在简单选择器器之间&#xff0c;可以包含一个组合器&#xff0c;从而实现简单选择器难以达到的效果。 CSS 中有四种组合器&#xff1a; 后代选择器 (空格)&#xff1a;匹配属于指定元素后代的所有元素&#xff0c;示例&#xff1a;div …

CTF流量题解http1.pcapng

使用Wireshark工具打开流量文件http1.pcapng&#xff0c;如下图所示。 在过滤检索栏输入http&#xff0c;wireshark自动进行过滤。 选中其中一条记录后&#xff0c;wireshark 下方显示若干信息。 Frame 81: 925 bytes on wire (7400 bits), 925 bytes captured (7400 bits) …

【设计模式——学习笔记】23种设计模式——中介者模式Observer(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入案例一普通实现中介者模式 案例二 介绍基础介绍登场角色尚硅谷 《图解设计模式》 案例实现案例一&#xff1a;智能家庭类图实现 案例二&#xff1a;登录页面逻辑实现说明类图实现 总结文章说明 案例引入 案例一 普通实现 在租房过程中&#xff0c;客户可能…