springboot第七章 结合Dubbo

news2024/11/24 14:37:42

实现Dubbo分布式框架,需要公共接口maven项目,需要服务提供者springboot项目,需要服务消费者springboot项目。

因为公共接口只有数据类和接口,后期提供者和消费者需要根据maven唯一坐标来导入公共接口项目的jar包,因此公共接口项目是java-maven项目。
服务提供者需要配置 暴露服务,声明服务,故使用springboot+Dubbo 服务消费者需要配置
使用服务,声明服务,故使用springboot+Dubbo

公共接口maven项目

不添加任何jar包,只定义Service公共接口和数据类。
在这里插入图片描述

服务提供者

服务提供者只需要实现接口的实现类,暴露服务即可。
1、导入依赖的jar包
公共接口的jar包
spring-boot-starter 起步依赖
dubbo-spring-boot-starter 起步依赖
dubbo-dependencies-zookeeper 注册中心相关的依赖

问题1:使用dubbo分布式框架需要dubbo,spring-context,netty,javassist,json依赖,日志依赖
解释1:导入dubbo-spring-boot-starter相当于导入了dubbo依赖,spring框架依赖,javassist依赖,netty依赖,fastjson依赖
日志依赖在导入注册中心的时候导入。

在这里插入图片描述
问题2:使用注册中心,需要导入有关注册中心的jar包
解释2:Apache Curator是Apache ZooKeeper的Java / JVM客户端库,Apache ZooKeeper是一种分布式协调服务。它包括一个高级API框架和实用程序,使Apache ZooKeeper更容易和更可靠。它还包括常见用例和扩展(如服务发现和Java 8异步DSL)的配方。
在这里插入图片描述
导入了日志。
2、编写实现类。
在实现类上暴露服务@DubboService(interfaceClass=接口.class,timeout=5000,version=1.0),在springboot的核心配置文件中指明组件扫描器扫描的路径dubbo.scan.base-package=com.wll.service

没有结合springboot时,只写@Service,并在xml包中配置组件扫描器<component-scan base-pacakage=“service包”/

3、声明服务,声明注册中心,定义端口号
在springboot核心配置文件中声明服务,dubbo.application.name=stuservice-provider,声明注册中心 dubbo.registry.address=zookeeper://localhost:2181

没有结合springboot时,只写<dubbo:application name=“服务名称”/> <dubbo:registry address=“zookeeper://localhost:2181”/>

为了避免端口号冲突,server.port=8081
4、在启动类上加上注解@EnableDubbo
注意没有结合springboot时,@Service本身就是@Component,但是DubboService并不是,他只是暴露服务,没有创建Bean对象,将对象放进spring容器中的能力,因此需要加上组件扫描器的使用

@Component <componen-scan
@DubboService @DubboComponentScan
创建bean对象,将对象放入spring容器中

@EnableDubbo是复合注解
在这里插入图片描述
他里面的@DubboComponentScan,同Component组件能力相同。
@EnableDubbo做了两件事,一个是初始化Dubbo核心组件,加载Dubbo配置到内存。另一个是注册BeanPostProcessor,用来扫描@Service和@Reference注解。

服务消费者

1、导入相关的jar包
公共接口的jar包
spring-boot-starter 起步依赖
dubbo-spring-boot-starter 起步依赖
dubbo-dependencies-zookeeper 注册中心相关的依赖
2、编写调用类,调用提供者的类中方法
调用类中有公共接口的成员方法,通过@DubboReference注解给成员变量赋值

@RestController
public class ConsumerController {
    @DubboReference(version="1.0")
    private StuService stuService;
    @GetMapping("/query")
    public Student queryStudentById(Integer id){
        return stuService.queryStudentById(id);
    }
}

在这里插入图片描述
注意这里使用的@DubboReference(interfaceClass = StudentService.class,version = "1.0")是引用远程服务,将服务注入给接口,这个@DubboReference内部的属性要与提供者@DubboService内部的内容对应,不能缺胳膊少腿,如@DubboService中定义版本号为1.0,@DubboReference也必须定义,否则,无法注入。
3、编写springboot核心配置文件
为了避免端口号冲突,server.port=8082
指定服务名称spring.application.name=consumer-application,指定注册中心dubbo.registry.address=zookeeper://localhost:2181

4、在启动类上加上@EnableDubbo注解
@EnableDubbo做了两件事,一个是初始化Dubbo核心组件,加载Dubbo配置到内存。另一个是注册BeanPostProcessor,用来扫描@Service和@Reference注解。

消费者远程调用提供者的方法

开启注册中心
zkServer.cmd
运行提供者启动main方法
运行消费者启动main方法

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python简单教程(第01章---第04章)

Python简单教程 1. Python综述1.1 python是什么1.2 python的发展1.3 python的特点 2.Python3安装2.1 python3 和 python2的区别2.2 python3环境的安装&#xff08;以windows为例&#xff09;2.3 Anaconda 安装&#xff08;可选&#xff09; 3. Python基本语法3.1 编码3.2 标识符…

内网渗透之横向移动 委派-非约束委派约束委派资源委派

0x01 横向移动-非约束委派 原理&#xff1a; 机器A&#xff08;域控&#xff09;访问具有非约束委派权限的机器B的服务&#xff0c;会把当前认证用户&#xff08;域管用户&#xff09;的的TGT放在ST票据中&#xff0c;一起发送给机器B&#xff0c;机器B会把TGT存储在lsass进程…

tomcat乱码解决方案

2.将里面的java.util.logging.ConsoleHandler.encoding 的值改为GBK。如下图&#xff1a;

电影推荐算法

模型训练 下载数据集&#xff0c;解压到项目目录下的./ml-1m文件夹下。数据集分用户数据users.dat、电影数据movies.dat和评分数据ratings.dat。 ** 数据集分析 ** user.dat&#xff1a;分别有用户ID、性别、年龄、职业ID和邮编等字段。 数据集网站地址为http://files.group…

数智未来,因你而来 | 昇腾AI创新大赛2023全新启动

在5月6日-7日举行的昇腾AI开发者峰会2023上&#xff0c;昇腾AI创新大赛2023正式启动。大赛旨在鼓励全产业开发者基于昇腾AI技术和产品&#xff0c;打造软/硬件解决方案、探索模型算法&#xff0c;加速AI与行业融合&#xff0c;促进开发者能力提升。 会上&#xff0c;中国工程院…

【vite+vue3.2 项目性能优化实战】使用vite-plugin-cdn-import进行CDN加速优化项目体积

CDN&#xff08;Content Delivery Network&#xff09;即内容分发网络&#xff0c;是一种通过在全球范围内分布式部署服务器来加速网络内容传输的技术。CDN加速的原理是&#xff0c;当用户请求访问某个资源时&#xff0c;CDN会根据用户的地理位置和网络状况&#xff0c;自动选择…

【内置函数】——高级编程——如桃花来

目录索引 1. hasattr()&#xff1a;2. getattr()&#xff1a;有&#xff1a;没有则报错&#xff1a; 3. setattr()&#xff1a;4. delattr():5. issubclass():6. isinstance():判断前面是不是属于后面的类型&#xff1a;判断前面是不是属于后面的类型之一&#xff1a;判断前面是…

百度网盘密码数据兼容处理

文章目录 一、问题描述二、代码实现1. 配置类2. 数据库配置3. config 配置类4. AOP 通知类5. 数据层6. 业务层7. 实体类 三、测试及结果 一、问题描述 需求&#xff1a; 对百度网盘分享链接输入密码时尾部多输入的空格做兼容处理。 分析&#xff1a; ① 在业务方法执行之前对所…

目标检测YOLO(V1、V2、V3)入门

one-stage和two-stage的区别 YOLO常见的指标 YOLO V1 yolo v1架构解读 yolo v1损失函数 NMS非极大值抑制 yolo v1版本的问题 重叠在一起的物体不好分类&#xff0c;只是一个单分类问题多标签问题&#xff08;狗和哈士奇&#xff09; v2和v1的区别 v2网络结构 batch normaliz…

【iOS】---pthread,NSThread

在iOS中多线程开发有四种方式&#xff0c;在之前我们浅浅了解了一下GCD&#xff0c;这期来看看pthread和NSThread pehread pthread简介 pthread 是一套通用的多线程的 API&#xff0c;可以在Unix / Linux / Windows 等系统跨平台使用&#xff0c;使用 C 语言编写&#xff0c;…

Redis持久化之RDB高频问题

1、RDB是如何应用的&#xff1f; 因为记录的是操作命令&#xff0c;而不是实际的数据&#xff0c;所以&#xff0c;用 AOF 方法进行故障恢复的时候&#xff0c;需要逐一把操作日志都执行一遍。如果操作日志非常多&#xff0c;Redis 就会恢复得很缓慢&#xff0c;影响到正常使用…

ApacheBench网站压力测试

ApacheBench &#xff08;简称ab&#xff09;是一个指令列程式&#xff0c;可用于网站压力测试&#xff0c;亦可用于发起CC攻击&#xff0c;请不要滥用哦。ApacheBench &#xff08;简称ab&#xff09;是一个指令列程式&#xff0c;可用于网站压力测试。如果已经安装过Apache&a…

Linux基本指令----上

Linux基本指令----上 ls指令pwd指令cd指令touch指令mkdir指令rmdir指令&&rm指令man指令cp指令mv指令cat指令echo指令more指令less指令head指令tail指令结语 ls指令 语法&#xff1a; ls [选项] [目录或文件] 功能&#xff1a; 对于目录&#xff0c;该命令列出该目录下…

Spring Boot集成ShardingSphere实现按月数据分片及创建自定义分片算法 | Spring Cloud 44

一、前言 在前面我们通过以下章节对数据分片有了基础的了解&#xff1a; Spring Boot集成ShardingSphere实现数据分片&#xff08;一&#xff09; | Spring Cloud 40 Spring Boot集成ShardingSphere实现数据分片&#xff08;二&#xff09; | Spring Cloud 41 Spring Boot集…

【Windows】高效的本地文件搜索工具《Everything》

&#x1f433;好用高效的本地文件搜索工具《Everything》 &#x1f9ca;一、什么是Everything&#x1f9ca;二、为什么选择Everything&#x1f9ca;三、下载Everything&#x1f9ca;四、Everything为什么高效 &#x1f9ca;一、什么是Everything Everything是一个运行于Window…

单片机GD32F303RCT6 (Macos环境)开发 (五)—— IAP代码架构工程

IAP代码架构工程 1、IAP一般分两个工程&#xff0c;一个Bootloader工程&#xff0c;一个Application工程。 这两个工程的差异后面会讲。 IAP架构工程的好处在于产品上线以后&#xff0c;想要升级的话&#xff0c;不用借助烧录器&#xff0c;就可以完成产品的软件升级。 2、Boo…

轻量级团队协作工具推荐,提高效率从选择开始

首先不得不夸一句&#xff1a;爱用Zoho工具的人&#xff0c;都十分自律和高效&#xff0c;因为Zoho旗下有多种简单好用的团队协作工具。 1、Zoho Projects项目管理工具 项目任务进度和团队沟通与协作管理软件Zoho Projects是一款基于web的软件。专为团队协作而设计&#xff0c;…

手写卡尔曼滤波

形象图 里面的my_Kalman.ipynb 和ppt就是了&#xff0c;其他的是原始资料和 辅助函数 链接&#xff1a;https://pan.baidu.com/s/1J1nA–oqoj8OvgbrA3LfbQ?pwd1264 提取码&#xff1a;1264 import numpy as np import matplotlib.pyplot as plt from matplotlib.animation i…

物理验证LVS对bulk(体)的理解和处理技巧

对于物理验证中的LVS&#xff0c;需要对各种物理器件进行SpiceVsGDS的比对&#xff0c;基于现在流行的std-cell的库的设计方法&#xff0c;LVS需要对CMOS器件多相应的处理&#xff0c;这里会涉及到一些具体的物理库的知识和小的技巧&#xff0c;这里结合具体的物理设计和CDL形态…

网络安全战略:如何应对不断变化的威胁环境?

网络安全一直是大家所关注的重点。在如今的数字化时代&#xff0c;网络安全问题日益严峻&#xff0c;网络攻击者使用更加复杂和高级的攻击方式&#xff0c;企图从各种角度入侵和危害我们的计算机网络。因此&#xff0c;我们必须制定一套完善的网络安全战略&#xff0c;以便更好…