dubbo3+zookeeper/nacos+dubbo-admin

2023-10-10 08:52

本文主要是介绍dubbo3+zookeeper/nacos+dubbo-admin,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

工程结构:
在这里插入图片描述
版本信息:

jdk版本:1.8
springboot-parent版本:2.6.6
springboot版本:2.6.6
dubbo版本:3.0.7
curator版本:4.2.0
dubbo-registry-nacos版本:3.0.7

注意事项:正确的版本很重要,否则会报莫名其妙的错误!!!

  1. 本地启动zookeeper服务/nacos服务(略)
  2. 新建父工程testDubbo
    pom文件:
<?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>org.example.testDubbo</groupId><artifactId>testDubbo</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>testProvider</module><module>testConsumer</module><module>api</module></modules><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.6</version></parent><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencyManagement><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.0.7</version></dependency><!--zookeeper配置1或2都可以--><!--zookeeper配置1-->
<!--            <dependency>-->
<!--                <groupId>org.apache.dubbo</groupId>-->
<!--                <artifactId>dubbo-dependencies-zookeeper</artifactId>-->
<!--                <version>3.0.7</version>-->
<!--                <type>pom</type>-->
<!--            </dependency>--><!--zookeeper配置2-->
<!--            <dependency>-->
<!--                <groupId>org.apache.dubbo</groupId>-->
<!--                <artifactId>dubbo-registry-zookeeper</artifactId>-->
<!--                <version>3.0.7</version>-->
<!--            </dependency>--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId><version>3.0.7</version></dependency></dependencies></dependencyManagement></project>
  1. 新建子工程api
    pom文件:
<?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"><parent><artifactId>testDubbo</artifactId><groupId>org.example.testDubbo</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>api</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies></project>
 定义DTO和Provider接口:
package org.example.testDubbo.api.dto;import lombok.Data;import java.io.Serializable;
import java.util.Random;@Data
public class UserDTO implements Serializable {private Long id;private String name;private Integer age;public static UserDTO mockUser(Long id){UserDTO userDTO = new UserDTO();userDTO.setId(id);userDTO.setAge(18);userDTO.setName("张三_"+userDTO.getId());return userDTO;}
}
package org.example.testDubbo.api.provider;import org.example.testDubbo.api.dto.UserDTO;public interface UserProvider {UserDTO getById(Long id);}
  1. 新建子工程testProvider
    pom文件:
<?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"><parent><artifactId>testDubbo</artifactId><groupId>org.example.testDubbo</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>testProvider</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.example.testDubbo</groupId><artifactId>api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><!--        <dependency>-->
<!--            <groupId>org.apache.dubbo</groupId>-->
<!--            <artifactId>dubbo-dependencies-zookeeper</artifactId>-->
<!--            <type>pom</type>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.dubbo</groupId>-->
<!--            <artifactId>dubbo-registry-zookeeper</artifactId>-->
<!--        </dependency>--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency></dependencies></project>

配置文件application.yml:

dubbo:application:name: testProviderqos-port: 22221registry:#  address: zookeeper://localhost:2181address: nacos://localhost:8848group: registry_group_testDubbo_serviceprotocol:id: dubboname: dubboport: 8088scan:base-packages: org.example.testDubbo.testProvider.provider

实现provider接口:

package org.example.testDubbo.testProvider.provider;import org.apache.dubbo.config.annotation.DubboService;
import org.example.testDubbo.api.dto.UserDTO;
import org.example.testDubbo.api.provider.UserProvider;@DubboService
public class UserProviderImpl implements UserProvider {@Overridepublic UserDTO getById(Long id) {System.out.println("我是服务提供者,被调用了");return UserDTO.mockUser(id);}
}
  1. 新建子工程testConsumer
    pom文件:
<?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"><parent><artifactId>testDubbo</artifactId><groupId>org.example.testDubbo</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>testConsumer</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.example.testDubbo</groupId><artifactId>api</artifactId><version>1.0-SNAPSHOT</version></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-spring-boot-starter</artifactId></dependency><!--        <dependency>-->
<!--            <groupId>org.apache.dubbo</groupId>-->
<!--            <artifactId>dubbo-dependencies-zookeeper</artifactId>-->
<!--            <type>pom</type>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.dubbo</groupId>-->
<!--            <artifactId>dubbo-registry-zookeeper</artifactId>-->
<!--        </dependency>--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency></dependencies></project>

配置文件application.yml:

server:port: 80dubbo:application:name: testConsumerqos-port: 22222registry:
#    address: zookeeper://localhost:2181address: nacos://localhost:8848group: registry_group_testDubbo_serviceprotocol:id: dubboname: dubboport: 8088
#  consumer:
#    check: false

测试类Controller:

package org.example.testDubbo.testConsumer.controller;import org.apache.dubbo.config.annotation.DubboReference;
import org.example.testDubbo.api.dto.UserDTO;
import org.example.testDubbo.api.provider.UserProvider;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping(value = "/user")
public class UserController {@DubboReferenceprivate UserProvider userProvider;@GetMapping(value = "/getById")public UserDTO getById(@RequestParam Long id){return userProvider.getById(id);}}
  1. 部署dubbo-admin
    8.1 下载源码:https://github.com/apache/dubbo-admin.git
    8.2 由于本测试dubbo版本是3.0.7,因此我拉取了靠近该版本的git版本:2353c814
    在这里插入图片描述
    8.3 修改子工程dubbo-admin-server的配置文件:application.properties
……
admin.registry.address=zookeeper://localhost:2181
admin.config-center=zookeeper://localhost:2181
admin.metadata-report.address=zookeeper://localhost:2181admin.registry.group=registry_group_testDubbo_service
admin.config-center.group=registry_group_testDubbo_service
admin.metadata-report.group=registry_group_testDubbo_service
……

8.4 启动子工程dubbo-admin-server(默认会占用端口8080,用于ui工程访问,可修改该端口)
8.5 启动ui工程dubbo-admin-ui,启动命令:

npm run dev

启动成功后会打印访问地址:http://localhost:8082/
8.6 如需修改dubbo-admin-server端口,需要同时修改2处:
dubbo-admin-server的配置文件application.properties:

server.port=8989

dubbo-admin-ui的配置文件vue.config.js:


module.exports = {……proxy: {'/': {target: 'http://localhost:8989/',……

这篇关于dubbo3+zookeeper/nacos+dubbo-admin的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/179398

相关文章

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Spring Cloud之注册中心Nacos的使用详解

《SpringCloud之注册中心Nacos的使用详解》本文介绍SpringCloudAlibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringClo... 目录Naacos服务注册/服务发现引⼊Spring Cloud Alibaba依赖引入Naco编程s依

dubbo3 filter(过滤器)如何自定义过滤器

《dubbo3filter(过滤器)如何自定义过滤器》dubbo3filter(过滤器)类似于javaweb中的filter和springmvc中的intercaptor,用于在请求发送前或到达前进... 目录dubbo3 filter(过滤器)简介dubbo 过滤器运行时机自定义 filter第一种 @A

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1