阿丹:
目前流行的微服务更多的就是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
<?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
这里只是一个简单的示例,
html
# 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
启动类编码:
java
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项目就运行启动了!!!