dubbo框架技术文档-《spring-boot整合dubbo框架搭建+配置文件》框架的本地基础搭建

news2024/12/28 19:33:51

阿丹:

        目前流行的微服务更多的就是dubbo和springcould微服务。之前阿丹没有出过dubbo相关的文章,因为之前接触springcould的微服务概念比较多一点,但是相对于springcould来说,springcould服务之间的调用是大多是使用了nacos,来构造了http的请求来完成的。但是对于dubbo的服务来说就更加的灵活。所以掌握dubbo也是一个很重要的技能,本文章阿丹就带着大家从企业的项目出发搭建一个多环境运行的spring整合的dubbo框架。

        多环境就是本地环境、测试环境、生产环境。

简单介绍dubbo:

Apache Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 Dubbo 的主要特性包括:

  • 支持多种协议:Dubbo 提供了多种协议的支持,包括 HTTP、Hessian、Dubbo、RMI、Webservice、Memcached 等。
  • 高性能:Dubbo 使用 Netty 作为网络通信框架,并进行了大量的优化,使得其在网络通信方面的性能非常优秀。
  • 动态配置:Dubbo 支持动态调整配置参数,可以在不重启服务的情况下改变服务提供者或消费者的行为。
  • 自动化服务治理:Dubbo 提供了自动化服务治理的能力,包括服务注册与发现、智能路由、流量调度等。
  • 容错性:Dubbo 支持智能容错机制,可以根据不同的错误情况采取不同的应对策略。
  • 负载均衡:Dubbo 支持多种负载均衡算法,包括随机、轮询、最少活跃调用数等。
  • 可扩展性:Dubbo 设计上遵循微内核的设计理念,只提供了最基础的核心功能,其他的高级功能都通过插件的方式实现,具有很好的可扩展性。 此外,Dubbo 还提供了丰富的工具和组件,包括可视化监控中心、配置中心、API网关等,方便用户进行管理和运维。

文章内容:

        我会先将整体服务和框架搭建起来然后再将框架改成不同环境下运行的项目。并附带配置文件!!

项目结构:

同学们可以学习一下这个项目的结构,以及每个包的作用,我之前专门出了一个文章描述这个包的用处。

引入依赖:

注意:我们在企业中开发的时候在引入依赖的时候一定要谨慎!!!尤其是进行二次开发的同学们,一定要去项目中的其他模块先观察,版本以及依赖关系,不然的话在最后处理就会很麻烦!!!还可能会造成大事故!!!!

阿丹小贴士:

        不同版本之间极有可能会造成因为版本冲突而导致的程序无法启动等等问题,所以在实践本文章的小伙伴一定要在新搭建项目的时候使用IDEA中的快捷键CTRL+SHIFT+F来查找自己二开的项目中的已经使用的版本。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.adn.export</groupId>
    <artifactId>adn-exportCSV</artifactId>
    <version>1.0-SNAPSHOT</version>
<!--    指定spring版本-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.8</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
     
         <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>


        <!-- 引入 Zookeeper 依赖项 -->
        <!-- 这是 Apache Dubbo 所需的一个核心组件,用于服务注册与发现 -->
        <!-- 参考:https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-dependencies-zookeeper -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.15</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 引入 Spring Boot Web 开发所需的依赖项 -->
        <!-- 参考:https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 引入 Log4j 日志框架 -->
        <!-- 注意:请根据实际情况调整 Log4j 版本号;并注意日志框架版本与系统中已存在的日志库兼容性问题 -->
        <!-- 参考:https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>


    </dependencies>

</project>

为了便于大家理解写上了全部的注释,但是要注意根据后面的操作,这个写配置文件会进行修改。

配置文件:

        我这里的配置文件采用的是application.yml

        这里只是一个简单的示例,

# Spring Boot 的应用名称
spring:
  application:
    name: adn-exportCSV

# Web 服务端口设置
server:
  port: 9091

  # 服务器的上下文路径
  servlet:
    context-path: /

# Dubbo 配置
dubbo:
  # 标识当前节点为 Dubbo 既是服务提供者也是消费者
  server: false

  # 设置 Dubbo 注册中心,这里采用 ZooKeeper
  registry: zookeeper://127.0.0.1:2181

启动类编码:

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfiguration
public class ExportCsvApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExportCsvApplication.class,args);
    }
}

先启动zookper:

如果不会的阿丹后期会专门出一个文章给同学们提供资源。

 运行!!!

恭喜你的第一个dubbo项目就运行启动了!!! 

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

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

相关文章

Cascader 级联选择器动态加载数据的回显

如果后端没有只返回第三级的id,而是同时把第三级的名字一起返回了&#xff0c;那么就可以通过下面的方法来实现 1.在级联选择器里面加上这句代码 placeholder"请选择" 2.注册一个字符串 pleasett:"" 3.赋值 如过后端返回的有第三级的选项名 直接进行赋…

记录一个mqtt错误

在vue-admin-template 中引入mqtt 安装不报错&#xff0c;引入试过 import mqtt from mqtt import * as mqtt from mqtt/dist/mqtt.min; import {connect} from mqtt 一直报错&#xff1a; 就表示不理解&#xff0c;网上也没查到相应的资料&#xff0c;请告诉我我不是第一个遇…

pytest系列——pytest_runtest_makereport钩子函数获取测试用例执行结果

前言 pytest测试框架提供的很多钩子函数方便我们对测试框架进行二次开发&#xff0c;可以根据自己的需求进行改造。 例如&#xff1a;钩子方法&#xff1a;pytest_runtest_makereport &#xff0c;可以更清晰的了解测试用例的执行过程&#xff0c;并获取到每个测试用例的执行…

Python基础:字符串(String)详解

1. 字符串定义 在Python中&#xff0c;字符串是一种数据类型&#xff0c;用于表示文本数据。字符串是由字符组成的序列&#xff0c;可以包含字母、数字、符号和空格等字符。在Python中&#xff0c;你可以使用单引号&#xff08;&#xff09;或双引号&#xff08;"&#xf…

【Python】巧用tkinter设计秒表计时器

秒表计时器是一种用于计算时间间隔的计时器。它通常由一个开始按钮、一个停止按钮和一个重置按钮组成。 使用方法&#xff1a; 单击“开始”按钮开始计时。单击“停止”按钮停止计时。单击“重置”按钮将计时器归零。 注意事项&#xff1a; 没有对计时器误差进行校准&#…

【密码学】【多方安全计算】不经意传输(Oblivious Transfer,OT)

文章目录 不经意传输&#xff08;oblivious transfer&#xff09;定义不经意传输的实例&#xff08;1 out 2&#xff0c;二选一不经意传输&#xff09;基于RSA的1 out 2 不经意传输疑问 不经意传输&#xff08;oblivious transfer&#xff09;定义 不经意传输&#xff08;obli…

Spring之@Autowired 属性多实现和单实现源码解析

Autowired使用过程中遇到疑问&#xff0c;通过源码解析原因 一、起因1、当person只有一个实现类时&#xff0c;TestController中&#xff0c;Person属性随意取名。2、当有Person两个实现类时&#xff0c;TestController中&#xff0c;属性名称必须和实现类名一致&#xff08;ma…

HarmonyOS 位置服务开发指南

位置服务开发概述 移动终端设备已经深入人们日常生活的方方面面&#xff0c;如查看所在城市的天气、新闻轶事、出行打车、旅行导航、运动记录。这些习以为常的活动&#xff0c;都离不开定位用户终端设备的位置。 当用户处于这些丰富的使用场景中时&#xff0c;系统的位置能力…

跨境电商崛起:揭秘全球化商机

随着科技的迅猛发展&#xff0c;跨境电商正崭露头角&#xff0c;成为商业新风口。这个数字化时代为全球商家带来了前所未有的机遇&#xff0c;同时也为消费者提供更广阔的购物选择。本文将深入探讨跨境电商的崛起&#xff0c;揭示其中隐藏的全球化商机&#xff0c;以及这一趋势…

【c++】多线程大幅缩减时间

多线程在进行复杂运算时能够大量节约时间 提醒自己能够在多线程运算的时候一定要充分利用 能够省下2/3的时间 测试代码 #include<vector> #include <iostream> #include <thread> using namespace cv; using namespace std; int result1 0 ; bool thread…

希亦和海尔内衣洗衣机哪款好用点?性价比小型洗衣机测评

在最近的这两年以来&#xff0c;专门用于清洗我们内衣裤等贴身衣物的小家电——内衣洗衣机&#xff0c;非常的火爆&#xff01;如今越来越多的人开始使用上了内衣洗衣机&#xff0c;不仅省时而且还省力。但是由于市面上内衣洗衣机产品众多&#xff0c;于是我挑选了希亦和海尔两…

overleaf上武大毕业论文开题报告本地参考文献编译报错

overleaf上武大毕业论文开题报告本地参考文献编译报错 具体报错内容 BibTeX subsystem: /tmp/biber_tmp_FDeB/b2e90af6edbf2e41914433623737dc27_16.utf8, line 4989, syntax error: found “spremont:1979”, expected “,” 解决方案 1.将参考文献编译工具设置为biber …

多段图的最短路径【java】

题目描述&#xff1a; [实验题目1] 设图G(V, E)是一个带权有向图&#xff0c;如果把顶点集合V划分成k个互不相交的子集Vi (2≤k≤n, 1≤i≤k)&#xff0c;使得E中的任何一条边(u, v)&#xff0c;必有u∈Vi&#xff0c;v∈Vim (1≤i≤k, 1&#xff1c;im≤k)&#xff0c;则称图…

接口测试工具(Jmeter)必学技巧

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Cho…

案例034:基于微信小程序的课堂助手系统

文末获取源码 开发语言&#xff1a;PHP 框架&#xff1a;PHP 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序运行软件&#xff1a;微信开…

SAP MPN物料简介

MPN物料-Manufacturer Part Number (MPN) 我们将把它简称为MPN物料。所谓制造商零件号&#xff0c;指的是以制造商&#xff08;注意不是供应商&#xff09;作为区分依据&#xff0c;为事实上的同一种物料定义不同的物料号。 我们在业务逻辑中&#xff0c;一物一码是基本的业务…

FLASK博客系列5——模板之从天而降

我们啰啰嗦嗦讲了4篇&#xff0c;都是在调接口&#xff0c;啥时候能看到漂亮的页面呢&#xff1f;别急&#xff0c;今天我们就来实现。 来我们先来实现一个简单的页面。不多说&#xff0c;上代码。 app.route(/) def index():user {username: clannadhh}return <html>&…

职场经验:Python自动化生成漂亮的测试报告【干货】

运用Python的Unittest、数据驱动测试&#xff08;DDT&#xff09;、Excel、Jinja2和HTML技术&#xff0c;构建一个能够自动生成精美可视化测试报告的自动化测试框架 思路流程 封装读取数据&#xff0c;让所有数据都能够再excel中填写&#xff0c;不再填写任何一行逻辑代码 通…

C++算法 —— 贪心(5)

文章目录 1、合并区间2、无重叠区间3、用最少的箭引爆气球4、整数替换5、俄罗斯套娃信封6、可被3整除的最大和7、距离相等的条形码8、重构字符串 1、合并区间 56. 合并区间 在合并区间时&#xff0c;得先排序一下&#xff0c;方便判断。方便可以按照左或者右端点排序。很多问题…

StyleGAN 使用指南:生成更逼真的图片

StyleGAN 使用指南&#xff1a;生成更逼真的图片 提出背景&#xff1a;特征纠缠StyleGAN-v1 网络结构映射网络 Mapping network f生成网络 Synthesis network g训练技巧样式混合 mixing regularization截断 Truncation Trick 评估指标路径长度 Perceptual path length解耦&…