dubbo3+zookeeper+dubbo-admin

news2024/9/30 5:25:57

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

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

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

  1. 本地启动zookeeper服务(略)
  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>

            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-dependencies-zookeeper</artifactId>
                <version>3.0.7</version>
                <type>pom</type>
            </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>
    </dependencies>

</project>

配置文件application.yml:

dubbo:
  application:
    name: testProvider
    qos-port: 22221
  registry:
    address: zookeeper://localhost:2181
    group: registry_group_testDubbo_service
  protocol:
    id: dubbo
    name: dubbo
    port: 8088
  scan:
    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 {

    @Override
    public 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>
    </dependencies>

</project>

配置文件application.yml:

server:
  port: 80

dubbo:
  application:
    name: testConsumer
    qos-port: 22222
  registry:
    address: zookeeper://localhost:2181
    group: registry_group_testDubbo_service
  protocol:
    id: dubbo
    name: dubbo
    port: 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 {

    @DubboReference
    private 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:2181

admin.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/',
    ……

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

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

相关文章

智慧楼宇3D数据可视化大屏交互展示实现了楼宇能源的高效、智能、精细化管控

智慧园区是指将物联网、大数据、人工智能等技术应用于传统建筑和基础设施&#xff0c;以实现对园区的全面监控、管理和服务的一种建筑形态。通过将园区内设备、设施和系统联网&#xff0c;实现数据的传输、共享和响应&#xff0c;提高园区的管理效率和运营效益&#xff0c;为居…

[开源]MIT协议,开源论坛程序,拥有友好的用户界面和操作体验

一、开源项目简介 尤得一物是一个开源论坛程序&#xff0c;提供丰富的功能&#xff0c;可以作为管理或分享文章的论坛博客&#xff0c;也可以在此基础上进行自定义开发。 二、开源协议 使用MIT开源协议 三、界面展示 四、功能概述 尤得一物是一个开源论坛程序&#xff0c;…

什么是轴电流?轴电流对轴承有什么危害?

根据同步发电机结构及工作原理&#xff0c;由于定子铁芯组合缝、定子硅钢片接缝&#xff0c;定子与转子空气间隙不均匀&#xff0c;轴中心与磁场中心不一致等&#xff0c;机组的主轴不可避免地要在一个不完全对称的磁场中旋转。这样&#xff0c;在轴两端就会产生一个交流电压。…

电动机监控系统在企业降碳过程中的作用-安科瑞黄安南

1.前言 据《2017-2022年中国电力工业产业专项调查及十三五市场商机分析报告》显示&#xff0c;从我国目前全社会用电结构来看&#xff0c;工商业用户耗电量约占 80%&#xff0c;其中电机耗电约占工业用电的 75%&#xff0c;全国总耗电的 60%&#xff0c;是用户终端耗电占比较大…

阿里云/腾讯云国际站代理:阿里云实名账号和亚马逊云,挑战依然巨大

阿里云国际代理商开户去哪里&#xff0c;认准小狐狸云&#xff0c;是阿里云国际站生态合作伙伴。与阿里云、华为云、aws长期战略合作计划&#xff01;阿里云国际站代理商专业云服务商&#xff01;支持 usdt充值美金&#xff0c;支持阿里云服务器不限制地区购买&#xff0c;云数…

arcgis地形分析全流程

主要内容&#xff1a;DEM的获取与处理、高程分析、坡度分析、坡向分析、地形起伏度分析、地表粗糙度分析、地表曲率分析&#xff1b; 主要工具&#xff1a;镶嵌至新栅格、按掩膜提取、投影栅格、坡度、坡向、焦点统计 一 DEM的获取与处理 1.1 DEM是什么&#xff1f; DEM(D…

「滚雪球学Java」教程导航帖(更新中)

作者&#xff1a;bug菌 博客&#xff1a;CSDN | 掘金 | infoQ | 51CTO 等 简介&#xff1a;CSDN/阿里云/华为云/腾讯云/51CTO博客专家&#xff0c;博客之星Top30&#xff0c;掘金年度人气作者Top40&#xff0c;51CTO年度>博主Top12&#xff0c;掘金/InfoQ/51CTO等社区优质创…

01.ChatGPT原理剖析

目录 ChatGPT初体验对ChatGPT的误解ChatGPT的本质模型的训练 ChatGPT的关键技术监督学习预训练&#xff08;Pre-train&#xff09;GPT系列的历史预训练的好处 强化学习 ChatGPT带来的研究问题 部分截图来自原课程视频《2023李宏毅最新生成式AI教程》&#xff0c;B站自行搜索 Ch…

虹科方案 | 汽车CAN/LIN总线数据采集解决方案

全文导读&#xff1a;现代汽车配备了复杂的电子系统&#xff0c;CAN和LIN总线已成为这些系统之间实现通信的标准协议&#xff0c;为了开发和优化汽车的电子功能&#xff0c;汽车制造商和工程师需要可靠的数据采集解决方案。基于PCAN和PLIN设备&#xff0c;虹科提供了一种高效、…

day30

今日内容概要 继承(面向对象中得核心) 单继承 多继承 单继承下的属性查找 多继承下的属性查找 super和mro的使用 多态和鸭子类型 继承&#xff08;核心&#xff09; 面向对象的三大特征&#xff1a;封装、继承、多态 1.什么是继承 继承就是一种新建类的方式&#xff0…

Bootstrap的宽度和高度的设置(相对于父元素的宽度和高度、相对于视口的宽度和高度)

在Bootstrap中&#xff0c;宽度和高度的设置分为两种情况&#xff0c;一种是相对于父元素的宽度和高度设置&#xff0c;以百分比来表示&#xff1b;另一种是相对于视口的宽度和高度设置&#xff0c;单位为vw(视口宽度)和vh(视口高度)。 01-相对于父元素的宽度和高度设置 示例…

Ubuntu磁盘满了,导致黑屏

前言 &#xff08;1&#xff09;最近要玩Milk-V Duo&#xff0c;配置环境过程中&#xff0c;发现磁盘小了。于是退出虚拟机&#xff0c;扩大Ubuntu大小&#xff0c;重新开机&#xff0c;发现无法进入Ubuntu界面。 &#xff08;2&#xff09;查了很久&#xff0c;后面发现是磁盘…

软件测试之压力测试详解

压力测试 压力测试是一种软件测试&#xff0c;用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力&#xff0c;并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试&#xff0c;并评估软件在极端…

外汇天眼:外汇投资小白必读! 4大外汇交易常见提问释疑

近年来外汇市场急速发展&#xff0c;加上科技不断进步&#xff0c;只要通过手机就能随时随地进行交易&#xff0c;因此吸引愈来愈多投资人参与&#xff0c;无论目的是资产多元配置还是避险&#xff0c;都进一步增加市场的流动性与热络程度。因此考虑想要投资外汇&#xff0c;很…

VUE(递归)语法没错,但报 ESLint: ‘formatToTree‘ is not defined.(no-undef)

原因&#xff1a;ESLint(JavaScript 检查器)不允许有未定义的函数&#xff0c;但在递归语法中&#xff0c;自身需要调用自身&#xff0c;则嵌套在里面的函数就会被认为是没定义。 解决办法&#xff1a; 在项目根目录下找到.eslintrc.js文件&#xff0c;文件路径如下图&#xff…

红队专题-Cobalt strike从小白到飞升手册

红队专题 招募六边形战士队员Cobalt strike渗透测试先进威胁战术介绍使用注意事项 架构Listener(监听器)Foreign Listeners &#xff08;外部监听器&#xff09;Pivot Listeners BeaconBeacon 的安全特性stager下载stagestage准备check in从Team Server下载任务返回任务结果 Be…

springboot家乡特色推荐系统springboot28

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

《计算机网络:自顶向下方法》第六章--链路层和局域网

网络层提供了任意两台主机之间的通信服务。在两台主机之间&#xff0c;数据报跨越一系列通信链路传输&#xff0c;&#xff08;一些是有线链路&#xff0c;一些是无线链路&#xff09;从源主机开始&#xff0c;通过一系列分组交换机到达目的主机 链路层中有两种不同类型的链路…

当 AI 成为“逆子”;强化学习之父联手传奇程序员丨 RTE 开发者日报 Vol.62

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…

MongoDB-介绍与安装部署

介绍与安装部署 1.MongoDB简介a) 体系结构b) 数据模型c) MongoDB的特点c.1) 高性能c.2) 高性可用性c.3) 高拓展性c.4) 丰富的查询支持 2.单机部署a) Windows系统中的安装启动b) Shell连接(mongo命令)c) Linux系统中的安装启动和连接 1.MongoDB简介 MongoDB是一个开源、高性能、…