springboot第七章 结合Dubbo

实现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方法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GraphHopper调研笔记

一、 GraphHopper GraphHopper是一种快速且内存有效的Java导航引擎&#xff0c;默认使用OSM和GTFS数据&#xff0c;也可导入其他的数据源。支持CH&#xff08;Contraction Hierarchies&#xff09;、A*、Dijkstra算法。 1、应用介绍 graphhopper有以下几种常见的地图应用&am…

25000 字详解 23 种设计模式(多图 + 代码)

25000 字详解 23 种设计模式&#xff08;多图 代码&#xff09; 目录 创建型模式结构型模式行为型模式总结 前言 一直想写一篇介绍设计模式的文章&#xff0c;让读者可以很快看完&#xff0c;而且一看就懂&#xff0c;看懂就会用&#xff0c;同时不会将各个模式搞混。 设计…

前端项目的通用优化策略

一、虚拟滚动 当我们开发的时候&#xff0c;遇到大数据加载&#xff0c;页面卡顿的问题应该如何处理&#xff1f;大多数情况下&#xff0c;我们都是尽量通过分页的方式处理这类问题&#xff0c;但是总有一些特殊的情况我们必须把数据全部加载到前端进行处理。我曾经遇到过一个…

MySQL入门

创建数据库 用CREATE DATABASE关键字&#xff08;也可以小写但建议关键字用大写方便区分&#xff09;创建一个名为“mydatabase”的数据库。 CREATE DATABASE mydatabase; 如果名称和关键字相撞&#xff0c;可以用Esc键下面的反引号括起来&#xff08;关键字会显示蓝色&#…

kafka安装及配置

1. 下载 下载地址&#xff1a;Apache Kafka 我这里下载的是 3.2.1 版本。 2. 上传并解压 上传到 linux 下的 /home/software/ 目录下&#xff0c;然后解压 kafka_2.13-3.2.1.tgz 包到/usr/local/ cd /home/software tar -zxvf kafka_2.13-3.2.1.tgz -C /usr/local # -C 选…

处理日期和时间的 chrono 库

C11 中提供了日期和时间相关的库 chrono&#xff0c;通过 chrono 库可以很方便地处理日期和时间&#xff0c;为程序的开发提供了便利。chrono 库主要包含三种类型的类&#xff1a;时间间隔duration、时钟clocks、时间点time point。 1. Ratio 时间精度(节拍) std::chrono::ra…

【PHP在线定制商城网站源码V3.0】开源的DIY在线定制商城系统+在线礼品定制

源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/87637177 PHP在线定制商城网站源码&#xff0c;免费开源、免费下载。本商城基于mycncart开发。安装成功后即可浏览&#xff0c;你可以在后台->安装扩展功能上传安装插件&#xff0c;在代码调整中点击刷…

zlmediakit 新增可以使用硬件加速的转码http api接口方法

根据项目需求&#xff0c;我们需要使用硬件解码的方式进行网络摄像头数据帧的解析&#xff0c;给到算法模块使用 1、通过ffmpeg命令实验&#xff0c;ffmpeg -i IPC_URL -f rtsp rtsp://*/live 该命令默认是使用cpu进行解码的&#xff0c;我们需要使用GPU进行解码。 2、ffmpe…

如何进行DNS优化

在互联网时代&#xff0c;网站的访问速度直接影响着用户体验和转化率。而DNS(Domain Name System)作为域名解析系统&#xff0c;负责将域名转换为IP地址&#xff0c;是网站访问速度的重要因素之一。因此&#xff0c;DNS优化成为了提升网站速度的重要手段之一。 DNS优化到底是什…

API接口的对接流程和注意事项

一、对接API数据接口的步骤通常包括以下几个部分&#xff1a; 了解API&#xff1a;首先需要详细了解API的基本信息、请求格式、返回数据格式、错误码等相关信息。可以查看API的官方文档或者使用API探索工具。同时&#xff0c;还需要明确数据请求的频率和使用权限等限制。 ​​测…

leetcode:环形链表(详解)

前言&#xff1a;内容包括-题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读&#xff0c;拓展问题 题目&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&…

C语言:指针求解鸡兔同笼问题

题目&#xff1a;鸡兔同笼问题 要求&#xff1a;使用自定义函数void calc(int h, int f,int *c,int *r) 求解鸡兔同笼问题。 h 表示总的头数&#xff0c;f 表示总的脚数。 例子&#xff1a; 输入&#xff1a; 5 16 输出&#xff1a; 2 3 分析&#xff1a; 在该代码中&a…

WxGL应用实例:绘制高精度的3D太阳系模型

文章目录 1 坐标系的选择1.1 黄道坐标系1.2 三维空间直角坐标系 2 使用JPL星历表计算轨道2.1 日期时间2.2 特定时刻天体的位置2.3 天体运行轨道 3 太阳系模型3. 1 太阳和八大行星全家福3.2 时间、距离和半径的缩放3.3 黄道坐标系模型 天何所沓&#xff1f;十二焉分&#xff1f;…

AI歌手——超简单一键运用ACE Studio来训练模拟真人唱歌

目录 1.安装ACE Studio 2.打开ACE Studio 3.导入midi或音频 4.调试音频 5.调整人物音色音高 6.调整歌词 7.自动添加呼吸​编辑 8.成品演示&#xff08;周杰伦の稻香——鲤阮&#xff09; 1.安装ACE Studio 安装地址 ACE Studio | Create Limitless Vocals with AI (t…

RK3568平台开发系列讲解(Linux内存篇)Linux内存管理框架

🚀返回专栏总目录 文章目录 一、内核态内存分配二、用户态内存分配三、内存篇章更新哪些内容沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们一起将整个内存管理的体系串起来。 对于内存的分配需求,可能来自内核态,也可能来自用户态。 一、内核态内存分配…

年后准备进腾讯的可以看看....

大家好~ 最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;今天特意分享一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友想去腾讯的可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的软件测试技术栈&#xff0c;非常珍贵&#xff0c;肝完进大厂&a…

Eplan2022 复制已有的宏文件生成新的原理图宏文件

下图所示为wago的787-722稳压电源&#xff0c;我们可以从官网下载到相应的eplan宏文件并导入数据源库。但是能下载到eplan宏文件的只是少部分公司的部件。那么没有宏文件的部件该怎么办&#xff1f; 接下来以明纬开关电源 NDR-120-24为例&#xff0c;创建一个宏文件。选择【主数…

基于springboot的医院信管系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

晶振概述及工作原理

晶振在电路板中随处可见&#xff0c;只要用到处理器的地方就必定有晶振的存在&#xff0c;即使没有外部晶振&#xff0c;芯片内部也有晶振。 晶振概述 晶振一般指晶体振荡器。晶体振荡器是指从一块石英晶体上按一定方位角切下薄片&#xff08;简称为晶片&#xff09;&#xf…

tensorflow GPU训练环境布置

tensorflow GPU训练环境布置 一、显卡驱动安装1.1 如何处理**Failed to initialize NVML: Driver/library version mismatch的问题**1.2 卸载旧的版本1.3 驱动安装 1.3.1 利用apt 安装1.3.2 手动安装 二、安装CUDA2.1 确定CUDA版本2.2 下载文件1. 找匹配版本2. 选合适的平台 2…