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


    1 dubbo xml配置

    1.1 提供者

    1.1.1 提供者接口

    图示
    在这里插入图片描述

    pom.xm

       <groupId>cn.jzhgroupId>
        <artifactId>dubbo-serviceartifactId>
        <version>1.0-SNAPSHOTversion>
    
        <properties>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
        properties>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    接口类

    public interface DemoService {
        public String test (String msg);
    }
    
    • 1
    • 2
    • 3

    1.1.2 提供者实现类

    1.1.2.1 项目结构图示

    在这里插入图片描述

    1.1.2.2 pom.xml
    
    <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.0modelVersion>
    
        <groupId>cn.jzhgroupId>
        <artifactId>dubbo-service-implartifactId>
        <version>1.0-SNAPSHOTversion>
    
        <properties>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
        properties>
    
    
        <dependencies>
            <dependency>
                <groupId>cn.jzhgroupId>
                <artifactId>dubbo-serviceartifactId>
                <version>1.0-SNAPSHOTversion>
            dependency>
    
            
            <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>dubboartifactId>
                <version>2.6.12version>
            dependency>
            
    
            
            <dependency>
                <groupId>com.101tecgroupId>
                <artifactId>zkclientartifactId>
                <version>0.10version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4jgroupId>
                        <artifactId>slf4j-apiartifactId>
                    exclusion>
                exclusions>
            dependency>
    
            
            <dependency>
                <groupId>io.nettygroupId>
                <artifactId>netty-allartifactId>
                <version>4.1.32.Finalversion>
            dependency>
            
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-frameworkartifactId>
                <version>4.0.1version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.zookeepergroupId>
                        <artifactId>zookeeperartifactId>
                    exclusion>
                exclusions>
            dependency>
    
        dependencies>
    project> 	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    1.1.2.3 实现类接口
    import cn.jzh.service.DemoService;
    public class DemoServiceImpl implements DemoService {
        @Override
        public String test (String msg) {
            return "dubbo接收信息"+msg;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1.1.2.4 配置文件
    1.1.2.4.1 xml配置

    applicationContext-dubbo.xml

    
    <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"/>
        
        <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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    常用配置文件说明:

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

    applicationContext-dubbo.xml

    
    <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"/>
        
        <dubbo:registry address="127.0.0.1:2181" protocol="zookeeper" >dubbo:registry>
        
        <dubbo:protocol name="dubbo" port="20881">dubbo:protocol>
        
        
        <dubbo:annotation package="cn.jzh.service.impl" />
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    同时提供实现类上面也要用到注解的方式,要使用来自阿里的@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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    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("启动成功");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    当开启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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    覆盖策略:

    • 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

    
    <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.0modelVersion>
    
        <groupId>cn.jzhgroupId>
        <artifactId>dubbo-consumerartifactId>
        <version>1.0-SNAPSHOTversion>
    
        <properties>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
        properties>
    
        <dependencies>
            <dependency>
                <groupId>cn.jzhgroupId>
                <artifactId>dubbo-serviceartifactId>
                <version>1.0-SNAPSHOTversion>
            dependency>
    
            
            <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>dubboartifactId>
                <version>2.6.12version>
            dependency>
            
    
            
            <dependency>
                <groupId>com.101tecgroupId>
                <artifactId>zkclientartifactId>
                <version>0.10version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4jgroupId>
                        <artifactId>slf4j-apiartifactId>
                    exclusion>
                exclusions>
            dependency>
    
            
            <dependency>
                <groupId>io.nettygroupId>
                <artifactId>netty-allartifactId>
                <version>4.1.32.Finalversion>
            dependency>
            
            <dependency>
                <groupId>org.apache.curatorgroupId>
                <artifactId>curator-frameworkartifactId>
                <version>4.0.1version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.zookeepergroupId>
                        <artifactId>zookeeperartifactId>
                    exclusion>
                exclusions>
            dependency>
        dependencies>
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    1.2.3 消费者接口和实现

    接口

    public interface ConsumerService {
        void test();
    }
    
    • 1
    • 2
    • 3

    实现类,注意此处的实现类应用的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信息"));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    server.port=8001
    
    admin.root.user.name=root
    admin.root.user.password=root
    
    • 1
    • 2
    • 3
    • 4

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

    2.3 启动服务

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

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

  • 相关阅读:
    密码学的基础:X.690和对应的BER CER DER编码
    Pop3和SMTP协议有什么关系或者区别吗?
    如何通过akshare获取ETF历史数据?
    制造企业为什么要部署数字化工厂系统
    【JavaSE终幕式】反射枚举与Lambda表达式
    【GridSearch实例】制作 KNeighborsClassifier 的MNIST数据集分类器,用GridSearch找最佳模型参数组合
    网页优化(布局优化、图片优化)
    pandas中的数据结构
    C#算法(12)—对图像像素做X/Y方向的偏移
    Unity 接入天气系统
  • 原文地址:https://blog.csdn.net/u012060033/article/details/127990127