dubbo以xml方式操作和新版dubbo-admin安装

news2025/7/21 21:55:57

文章目录

  • 1 dubbo xml配置
    • 1.1 提供者
      • 1.1.1 提供者接口
      • 1.1.2 提供者实现类
        • 1.1.2.1 项目结构图示
        • 1.1.2.2 pom.xml
        • 1.1.2.3 实现类接口
        • 1.1.2.4 配置文件
          • 1.1.2.4.1 xml配置
          • 1.1.2.4.2 结合注解方式
        • 1.1.2.5 启动类
          • 1.1.2.5.1 直接读取配置文件
          • 1.1.2.5.2 Main.main启动
      • 1.1.3 其他方式配置
    • 1.2 消费者
      • 1.2.1 项目结构图
      • 1.2.2 pom.xml
      • 1.2.3 消费者接口和实现
  • 2 dubbo-admin
    • 2.1 下载获取
    • 2.2 配置打包
    • 2.3 启动服务

1 dubbo xml配置

1.1 提供者

1.1.1 提供者接口

图示
在这里插入图片描述

pom.xm

   <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

接口类

public interface DemoService {
    public String test (String msg);
}

1.1.2 提供者实现类

1.1.2.1 项目结构图示

在这里插入图片描述

1.1.2.2 pom.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>cn.jzh</groupId>
    <artifactId>dubbo-service-impl</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>
        <dependency>
            <groupId>cn.jzh</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.12</version>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.6.RELEASE</version>
        </dependency>-->

        <!-- 访问zookeeper客户端 jar包 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- io/netty/channel/EventLoopGroup -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.32.Final</version>
        </dependency>
        <!-- org/apache/curator/RetryPolicy -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>
</project> 	

1.1.2.3 实现类接口

import cn.jzh.service.DemoService;
public class DemoServiceImpl implements DemoService {
    @Override
    public String test (String msg) {
        return "dubbo接收信息"+msg;
    }
}

1.1.2.4 配置文件

1.1.2.4.1 xml配置

applicationContext-dubbo.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 给当前应用起个名字 -->
    <dubbo:application name="dubbo-server"/>
    <!-- 配置注册中心 zookeeper的注册地址和端口-->
    <dubbo:registry address="127.0.0.1:2181" protocol="zookeeper"></dubbo:registry>
    <!-- 配置端口 服务调用和提供的真实端口 调用时的端口号 -->
    <dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
    <!-- 注册功能 注册接口 -->
    <dubbo:service interface="cn.jzh.service.DemoService" ref="demoServiceImpl"></dubbo:service>
    <bean id="demoServiceImpl" class="cn.jzh.service.impl.DemoServiceImpl"></bean>
</beans>

常用配置文件说明:

  • <dubbo:service/>:服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
  • <dubbo:reference/>:引用配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心
  • <dubbo:protocol/>:协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
  • <dubbo:application/>:应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者
  • <dubbo:module/>:模块配置,用于配置当前模块信息,可选
  • <dubbo:registry/>:注册中心配置,用于配置连接注册中心相关信息
  • <dubbo:monitor/>:监控中心配置,用于配置连接监控中心相关信息,可选
  • <dubbo:provider/>:提供方配置,当 ProtocolConfigServiceConfig 某属性没有配置时,采用此缺省值,可选
    provider是原始的服务提供方式:配置参数超级多,比较繁琐,学习成本大
    service是在provider的基础上给了很多默认值,用户使用时只需配置少量必需的值,大大降低学习成本
  • <dubbo:consumer/>:消费方配置,当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
    referenceconsumer基础上发展来的,consumer也是原始的服务提供方式
  • <dubbo:method/>:方法配置,用于ServiceConfigReferenceConfig 指定方法级的配置信息
  • <dubbo:argument/>:参数配置,用于指定方法参数配置
1.1.2.4.2 结合注解方式

applicationContext-dubbo.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 给当前应用起个名字 -->
    <dubbo:application name="dubbo-server"/>
    <!-- 配置注册中心 zookeeper的注册地址和端口-->
    <dubbo:registry address="127.0.0.1:2181" protocol="zookeeper" ></dubbo:registry>
    <!-- 配置端口 服务调用和提供的真实端口 调用时的端口号 -->
    <dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
    
    <!-- 或者使用dubbo的注解方式 -->
    <dubbo:annotation package="cn.jzh.service.impl" />
</beans>

同时提供实现类上面也要用到注解的方式,要使用来自阿里的@Service注解

import cn.jzh.service.DemoService;
import com.alibaba.dubbo.config.annotation.Service;

@Service
public class DemoServiceImpl implements DemoService {
    @Override
    public String test(String msg) {
        return "dubbo接收信息"+msg;
    }
}

1.1.2.5 启动类

1.1.2.5.1 直接读取配置文件
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-dubbo.xml");
        context.start();
        System.out.println("启动成功");
    }
}

当开启zookeeper服务后,再启动服务,在打印出启动成功后,就直接关闭,如果想一直启动,就要换个能一直启动而不会关闭的启动方式
注意:启动的时候需要启动zookeeper不然不会启动成功

1.1.2.5.2 Main.main启动

由于直接读取配置文件启动服务,服务会很快关闭,此处就使用dubbo官方推荐的com.alibaba.dubbo.container.Main.main()方法启动

注意:用此种方法启动,需要把配置文件applicationContext-dubbo.xml放在resource文件夹的META-INF/spring/*.xml 里面去
在这里插入图片描述
启动参考示例:

import com.alibaba.dubbo.container.Main;
public class App {
    public static void main(String[] args) {
        //官方推荐
        //要求配置文件必须在 META-INF/spring/*.xml 里面去
        Main.main(args);
    }
}

1.1.3 其他方式配置

上面示例是xml配置的,还有dubbo.properties方式配置
如果公共配置很简单,没有多注册中心,多协议等情况,或者想多个 Spring 容器想共享配置,可以使用 dubbo.properties 作为缺省配置。
Dubbo将自动加载 classpath 根目录下的 dubbo.properties,可以通过JVM启动参数 -Ddubbo.properties.file=xxx.properties 改变缺省配置位置。

dubbo.properties配置样例

# 应用名
dubbo.application.name=dubbodemo-provider
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 广播的注册中心样例
# dubbo.registry.address=multicast://224.5.6.7:1234
# 调用协议地址
dubbo.protocol.name=dubbo
dubbo.protocol.port=28080

覆盖策略:

  • JVM启动-D参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口
  • XML次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。
  • Properties最后,相当于缺省值,只有 XML没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。

注意:

  1. 如果 classpath 根目录下存在多个 dubbo.properties,比如多个 jar 包中有 dubbo.propertiesDubbo会任意加载,并打印 Error 日志,后续可能改为抛异常。
  2. 协议的 id 没配时,缺省使用协议名作为 id

1.2 消费者

1.2.1 项目结构图

在这里插入图片描述

1.2.2 pom.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>cn.jzh</groupId>
    <artifactId>dubbo-consumer</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>cn.jzh</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.12</version>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.6.RELEASE</version>
        </dependency>-->

        <!-- 访问zookeeper客户端 jar包 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- io/netty/channel/EventLoopGroup -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.32.Final</version>
        </dependency>
        <!-- org/apache/curator/RetryPolicy -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>

1.2.3 消费者接口和实现

接口

public interface ConsumerService {
    void test();
}

实现类,注意此处的实现类应用的alibaba里面的包

import cn.consumber.service.ConsumerService;
import cn.jzh.service.DemoService;
import com.alibaba.dubbo.config.annotation.Reference;

public class ConsumerServiceImpl implements ConsumerService {
    @Reference
    private DemoService demoService;
    @Override
    public void test() {
        //调用provider种提供的功能
        System.out.println(demoService.test("测试Dubbo信息"));
    }
}

2 dubbo-admin

2.1 下载获取

dubbo-admin获取地址:https://github.com/apache/dubbo-admin/tree/master,直接获取master分支,下载zip包
在这里插入图片描述

最新版本的dubbo-admin当中采用了前后端分离的的设计模式,所以要求要有java的环境,还得搭建node.js的运行环境,在service开启服务后,还需在dubbo-admin-ui中开启前端的代码

2.2 配置打包

idea打开服务即可
需要在dubbo-admin-service当中配置zookper地址

zookeeper配置
admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
admin.metadata-report.address=zookeeper://127.0.0.1:2181

nacos配置
#admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
#admin.config-center=nacos://127.0.0.1:8848?group=dubbo
#admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo

配置默认端口,不配置的话默认是8080容易发生冲突,username,password既为登录账号密码

server.port=8001

admin.root.user.name=root
admin.root.user.password=root

打包的话,需要在最顶层的服务打包,这样会把下面全部给打包了,然后在把dubbo-admin-server对应的服务启动即可
在这里插入图片描述

2.3 启动服务

启动服务需要先启动zookeeper服务,不然启动失败

启动后直接访问:http://127.0.0.1:8080/
示例图示
在这里插入图片描述
如果把服务关闭了,需要等待10秒,这是一个优雅关机策略

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

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

相关文章

最新持续更新Crack:LightningChart 行业使用大全

LightningChart .NET 和 JavaScript 解决方案旨在通过彻底的图表优化、最小的延迟和流畅的呈现来满足行业最苛刻的数据可视化要求。LightningChart .NET 和 JavaScript 直观的 API 使用户能够使用适用于任何桌面、移动和平板设备的鼠标和触摸屏交互功能轻松操作最复杂的图表。 …

JSP JAVA javaweb企业仓库库存管理系统(仓库进销存管理系统ssm库存管理系统仓库管理系统)

JSP 企业仓库库存管理系统&#xff08;仓库进销存管理系统ssm库存管理系统仓库管理系统&#xff09;

【附源码】计算机毕业设计JAVA疫情下的进出口食品安全信息管理系统

【附源码】计算机毕业设计JAVA疫情下的进出口食品安全信息管理系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

Django Cookie 与 Session 对比

文章目录原理比较语法比较Cookie 示例创建 Cookie更新 Cookie删除 CookieSession 示例创建 session查询 session删除一组键值对删除 session参考文档本文通过示例演示 Django 中如何创建、查询、删除 Cookie 与 Session。 原理比较 在Web开发中&#xff0c;使用 session 来完成…

无线监控摄像头使用什么样的物联网卡?

无线监控摄像头使用什么样的物联网卡&#xff1f; 随着安全行业的发展和进步&#xff0c;无线监控摄像头的种类越来越多&#xff0c;但主要的网络形式大致可以分为两种形式&#xff0c;一种是连接WiFi使用远程监控&#xff0c;另一种是插入物联网卡的远程监控。随着物联网的快…

初阶数据结构学习记录——열 二叉树(3)链式

链式二叉树是由指针形成的二叉树&#xff0c;之前写的二叉树是由数组组成的&#xff0c;链式由链表来做。链式二叉树每个节点有两个指针&#xff0c;指向两边。以往二叉树&#xff0c;栈&#xff0c;队列等等都需要增删查改&#xff0c;但链式二叉树则不是这样&#xff0c;是因…

深入理解java虚拟机:虚拟机字节码执行引擎(1)

文章目录1. 概述2. 运行时栈帧结构2.1 局部变量表2.2 操作数栈2.3 动态连接2.4 方法返回地址2.5 附加信息1. 概述 代码编译的结果是从 本地机器码 转变为 字节码 &#xff0c;是存储格式发展的一小步&#xff0c;却是编程语言发展的一大步。 执行引擎 是Java虚拟机最核心的组…

pmp是什么意思啊?

PMP是一个证书&#xff0c;项目管理类的专业认证考试&#xff0c;从国外引进大陆已经很多年了&#xff0c;反响也不错。 以前&#xff0c;大陆每年报考PMP的人很少&#xff0c;那时的思维观念&#xff0c;更多的认为有了这个PMP证书&#xff0c;代表着你很上进&#xff0c;学习…

Terraform 初始化慢~配置本地离线源

解决Terraform初始化慢~配置本地离线源 - 知乎 这里不再介绍Terraform是啥了&#xff0c;可以参考最近上线的课程。直奔主题&#xff0c;配置一个离线的源。需要手动或者terraform init一次下载&#xff0c; 然后缓存。后续直接使用缓存。 本次实践使用的是Linux/Mac 系统&am…

【App自动化测试】(十二)App异常弹框处理

目录1. app弹框异常处理——递归方式1.1 黑名单弹框异常处理逻辑1.2 实现代码1.3 方法缺点2. app弹框异常处理——装饰器版本2.1 装饰器的优势2.2 实现代码前言&#xff1a; 本文为在霍格沃兹测试开发学社中学习到的一些技术写出来分享给大家&#xff0c;希望有志同道合的小伙伴…

计算机毕业设计之java+ssm交通信息网上查询系统

项目介绍 随着交通交通管理需求和在线交通管理渗透率的提升&#xff0c;中国交通管理在线市场将释放巨大潜力&#xff0c;交通管理系统的建设和发展成为业界广泛关注的重点&#xff0c;本文将对此进行分析&#xff0c;以期为我国交通管理电子商务的发展提供参考。交通管理业对…

石化能源行业工业互联网智能工厂解决方案

随着时代的发展&#xff0c;中国的工业企业逐渐进入了一个“新常态”&#xff1a;生产效率提升&#xff0c;非计划停运或检修造成的生产损失更为昂贵&#xff1b;高盈利的要求&#xff0c;需要更加关注能源使用效率&#xff1b;法律法规对于人员安全及环保合规要求更为严格&…

基于ffmpeg开发的多音频文件音量均衡程序

前言 audio_balance ✨ 基于ffmpeg开发的多音频文件音量均衡程序 ✨ 项目地址 GitHub&#xff1a;https://github.com/Ikaros-521/audio_balance gitee&#xff1a;https://gitee.com/ikaros-521/audio_balance 使用说明 Python&#xff1a;3.9 程序依赖 ffmpeg实现。请先安…

Centernet 生成高斯热图

写在前面的话 最近学校阳了&#xff0c;宿舍给封了&#xff0c;宿舍网络不好远程跑不了实验&#xff0c;随缘写一下对CenterNet源码的一个解读&#xff0c;之前写论文的那段时间留下来的工作&#xff0c;respect&#xff01; 这个文章主要是对CenterNet中生成高斯核的部分代码…

皕杰报表之语义层

1 语义层定义 语义层——是处于数据源与报表之间的一个概念&#xff0c;是用户和数据库之间的一个代码翻译层&#xff0c;通俗的讲是将数据库中的比较凌乱、复杂的数据对象&#xff08;例如&#xff1a;存储在table中的各个字段的记录&#xff09;按预先定义好的规则&#xff…

权限管理框架Shiro renren-security权限管理结构

权限管理框架Shiro&#xff1a; 一直在做项目&#xff0c;由于是二次开发的项目&#xff0c;今天才发现自己连权限控制都没有搞懂。二次开发的是基于renren开源的一个项目。 链接&#xff1a;https://gitee.com/renrenio/renren-security 这个项目主要使用shiro权限管理框架来…

31、Java高级特性——Math类、Random类、String类、StringBuffer类、StringBuilder类

目录 一、Math类 1、Math类中的方法 1.1 圆周率&#xff1a;PI 1.2 绝对值&#xff1a;abs() 1.3 返回最小近似值:ceil() 1.4 返回最大近似值 1.5 四舍五入&#xff1a;round() 1.6 最大值和最小值&#xff1a;max()/min() 1.7 求指定次幂 &#xff1a;po…

Java面向对象16:接口的定义与实现

普通类&#xff1a;只有具体的实现 抽象类&#xff1a;具体的实现和规范&#xff08;抽象方法&#xff09;都有 接口&#xff1a;只有规范&#xff01;自己无法写方法&#xff0c;专业的约束&#xff0c;约束和实现分离&#xff1a;面向接口编写&#xff08;大佬把接口定义好…

vue3 响应式 API 之 ref

ref 是最常用的一个响应式 API&#xff0c;它可以用来定义所有类型的数据&#xff0c;包括 Node 节点和组件。 没错&#xff0c;在 Vue 2 常用的 this.$refs.xxx 来取代 document.querySelector(‘.xxx’) 获取 Node 节点的方式&#xff0c;也是使用这个 API 来取代。 类型声明…

[附源码]计算机毕业设计JAVA乒乓球俱乐部管理系统

[附源码]计算机毕业设计JAVA乒乓球俱乐部管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…