精华内容
下载资源
问答
  • dubbo简单配置

    2016-11-11 14:40:33
    1.下载zookeeper-3.4.5.tar.gz,并解压到本地。...2.配置zookeeper: 在zookeeper文件夹下打开conf,创建zoo.cfg,内容如下: tickTime=200000 initLimit=10 syncLimit=5 dataDir=D:\\zk\\tmp\\zookeeper da

    dubbo模块结构图:




    1.下载zookeeper-3.4.5.tar.gz,并解压到本地。

    我的本地地址为:

    D:\zookeeper-3.4.5

    2.配置zookeeper:

    在zookeeper文件夹下打开conf,创建zoo.cfg,内容如下:

    tickTime=200000
    initLimit=10
    syncLimit=5
    dataDir=D:\\zk\\tmp\\zookeeper
    dataLogDir=D:\\zk\\logs\\zookeeper

    clientPort=8083


    1.tickTime:Client-Server通信心跳时间
    Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
    tickTime=2000

    2.initLimit:Leader-Follower初始通信时限
    集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
    initLimit=5

    3.syncLimit:Leader-Follower同步通信时限
    集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
    syncLimit=2 

    4.dataDir:数据文件目录
    Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
    dataDir=/home/michael/opt/zookeeper/data

    5.clientPort:客户端连接端口
    客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
    clientPort=8083

    6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
    这个配置项的书写格式比较特殊,规则如下:
    server.N=YYY:A:B

    server.1=itcast05:2888:3888
    server.2=itcast06:2888:3888
    server.3=itcast07:2888:3888

    7.ZK为什么设置为奇数个?
    zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1;同理你多列举几个:2 -> 0; 3 -> 1; 4 - >1; 5 -> 2; 6 -> 2会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所以为了更加高效,何必增加那一个不必要的zookeeper呢。



    3.启动zookeeper:

    在zookeeper文件夹下打开bin目录,双击zkServer.cmd.

    如果双击后出现闪退现象,请在zkServer.cmd末尾行加上pause阻止cmd退出,并查看原因。


    服务消费方和服务提供方引入dubbo,并防止引用dubbo自己的低版本spring,pom如下:

    <!-- dubbo配置开始(并去掉spring低版本依赖开始 ) -->
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>dubbo</artifactId>
    			<version>2.5.3</version>
    			<exclusions>
    				<exclusion>
    					<groupId>org.springframework</groupId>
    					<artifactId>spring</artifactId>
    				</exclusion>
    				<exclusion>
    					<artifactId>netty</artifactId>
    					<groupId>org.jboss.netty</groupId>
    				</exclusion>
    			</exclusions>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.zookeeper</groupId>
    			<artifactId>zookeeper</artifactId>
    			<version>3.4.6</version>
    		</dependency>
    		<dependency>
    			<groupId>com.github.sgroschupf</groupId>
    			<artifactId>zkclient</artifactId>
    			<version>0.1</version>
    		</dependency>
    		<!-- dubbo配置结束 -->



    dubbo服务提供方配置:

    在服务方工程的applicationContext.xml所在resource资源下创建dubbo-provider.xml,内容如下:

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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://code.alibabatech.com/schema/dubbo          
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
        <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="tdemo" />
    
        <!-- 使用zookeeper注册中心暴露服务地址 -->
        <dubbo:registry address="zookeeper://127.0.0.1:8083" />
    
        <!-- 用dubbo协议在20880端口暴露服务 -->
        <dubbo:protocol name="dubbo" port="20880" />
        
        <!-- 服务提供方 -->
        <dubbo:service interface="com.tanlei.service.TestDubboService" ref="testDubboService" />      
    </beans>

    然后在applicationContext.xml中引入dubbo-provider.xml,如下:

    <!-- 引入dubbo配置文件 -->
    <import resource="dubbo-provider.xml"></import>


    dubbo服务消费方配置:

    在消费方工程的applicationContext.xml所在resource资源下创建dubbo-consumer.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: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://code.alibabatech.com/schema/dubbo          
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
       <dubbo:application name="CognosPro"></dubbo:application>
       <!-- 使用zookeeper注册中心暴露服务地址 -->  
       <dubbo:registry address="zookeeper://127.0.0.1:8083" />
         <!-- 要引用的服务 -->  
       <dubbo:reference interface="com.tanlei.service.TestDubboService" id="testDubboService"></dubbo:reference>      
    </beans> 


    然后在applicationContext.xml中引入dubbo-consumer.xml,如下:

    <!-- 引入dubbo配置文件 -->
    <import resource="dubbo-consumer.xml"></import>


    如何提供service?

    我们将接口做为一个jar工程,该jar工程只提供接口和实体类:


    pom如下,说明是一个jar工程:

    <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.tanlei</groupId>
    	<artifactId>testservice</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>testservice</name>
    	<description>测试</description>
    	<packaging>jar</packaging>
    
    </project>

    然后在服务提供方,我这里是tdemo中引入该jar工程,pom如下:


    接口具体实现也在该服务提供方:



    服务消费方引入jar工程testservice,pom如下:


    服务消费方试用testservice的接口:


    访问上面的接口,如果访问成功,说明基本调用成功。

    展开全文
  • Dubbo简单配置使用

    千次阅读 2016-05-24 16:34:10
    在Maven的pom.xml文件中添加dubbo依赖 com.github.sgroschupf zkclient org.apache.zookeeper zookeeper com.alibaba dubbo spring org.springframework

    添加依赖


    在Maven的pom.xml文件中添加dubbo依赖

    <span style="font-size:14px;"><dependency>
    			<groupId>com.github.sgroschupf</groupId>
    			<artifactId>zkclient</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.zookeeper</groupId>
    			<artifactId>zookeeper</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>dubbo</artifactId>
    			<exclusions>
    				<exclusion>
    					<artifactId>spring</artifactId>
    					<groupId>org.springframework</groupId>
    				</exclusion>
    			</exclusions>
    		</dependency></span>


    服务提供者

    定义服务接口: (该接口需单独打包,在服务提供方和消费方共享)

    DemoService.java

    package com.alibaba.dubbo.demo;
    
    public interface DemoService {
     
        String say(String name);
     
    }

    服务提供方实现接口:(对服务消费方隐藏实现)

    package com.alibaba.dubbo.demo.provider;
     
    import com.alibaba.dubbo.demo.DemoService;
    @Service
    public class DemoServiceImpl implements DemoService {
     
        public String say(String name) {
            return "Hello " + name;
        }
     
    }

    服务提供者xml配置文件

    Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载

    module-provider.xml
    1.配置Spring注解识别器
    <context:component-scan base-package="com.alibaba.dubbo.demo.provider" />

    2. 配置dubbo注解识别处理器,不指定包名的话会在spring bean中查找对应实例的类配置了dubbo注解的
    <dubbo:annotation package="com.bjhy.platform.statics.provider" />

    3.配置应用名(提供方应用信息,用于计算依赖关系)
     <dubbo:application name="platform-demo"  />

    4. 配置注册中心,通过group指定注册中心分组,可通过register配置是否注册到该注册中心以及subscribe配置是否从该注册中心订阅
    可以使用multicast广播注册中心暴露服务地址
    <dubbo:registry address="multicast://224.5.6.7:1234" />
    也可以使用zookeeper分布式应用程序协调服务
    <dubbo:registry protocol="zookeeper" address="192.168.0.2:1111" />

    5. 配置服务协议,不指定或者指定非法IP的情况下会绑定在0.0.0.0
     <!-- 用dubbo协议在20880端口暴露服务 -->

    加载Spring配置

    import org.junit.runner.RunWith;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath*:META-INF/spring/module-*.xml")
    public class Provider{
    
    	public static void main(String[] args) throws Exception {
    		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:META-INF/spring/module-*.xml");
    		context.start();
    		System.out.println("服务已启动****");
    		System.in.read();
    	}
    	
    }

    服务消费者 xml配置文件

    module-consumer.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: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://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
         
        <context:component-scan base-package="com.alibaba.dubbo.demo.consumer" />
        <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
        <dubbo:application name="consumer-app"  />
     
       <!-- 使用zookeeper广播注册中心暴露发现服务地址 -->
       <dubbo:registry protocol="zookeeper" address="192.168.0.2:1111" />
     
     
    </beans>

    加载Spring配置,通过使用Spring IoC依赖注入 例如:
    @Autowired
    private DemoService demoService 
    
     demoService.say("xiaowen")
    当然DemoService服务接口,消费者需定义与服务提供方一样的接口,这样远程服务代理才能发现该接口。






    展开全文
  • 2、dubbo简单配置

    2020-09-26 17:27:30
    示例: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" ... xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xsi:schemaLocation="http://w

    示例:

    <?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:dubbo="http://dubbo.apache.org/schema/dubbo"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">  
        <dubbo:application name="hello-world-app"  />  
        <dubbo:registry address="multicast://224.5.6.7:1234" />  
        <dubbo:protocol name="dubbo" port="20880" />  
        <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />  
        <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />  
    </beans>
    

    自定义参数配置:

    <dubbo:protocol name="jms">
        	<dubbo:parameter key="queue" value="your_queue" />
         </dubbo:protocol>
    

    在这里插入图片描述

    XML配置

      dubbo:protocol:协议配置,用于配置提供服务的协议,协议由提供方定义,dubbo、rmi
      dubbo:service:服务配置,用于配置暴露的服务,一个服务可以指定多个协议,也可以指定多个服务注册中心。
      dubbo:reference:引用配置,用于配置一个远程代理服务,可以指定多个服务注册中心。
      dubbo:application:应用配置,用于配置应用信息,提供方和消费方都可以使用。
      dubbo:module:模块配置,用于配置模块。
      dubbo:registry:注册配置,用于配置连接注册中心。
      dubbo:monitor:监控统计 ,用于配置连接监控中心相关信息。
      dubbo:provider:提供方配置,用于配置ServcieConfig和ProtocolConfig的缺省值。
      dubbo:consumer:消费方配置,用于配置ReferenceConfig的缺省值
      dubbo:method:方法配置,可以指定方法级别的配置。
      dubbo:argument:指定方法参数配置。

    属性配置

      加载方式:自动加载classpath:dubbo.properties
      规则:标签名.属性名=xxx
      示例:
        dubbo.registry.address=multicast://224.0.0.1:1234–>
        <dubbo:registry address=“multicast://224.0.0.1:1234”></dubbo:registry>

        dubbo.protocol.rmi.port=1234–>
        <dubbo:protocol id=“rmi” name=“rmi” port=“1234” />
      参数优先级,从高到低
        JVM(-Ddubbo.protocol.port=2181)–>dubbo.xml–>classpath:dubbo.properteis(可以通过JVM Ddubbo.properties.file设置配置路径)

    API配置

      提供者:设置ApplicationConfig、RegistryConfig、ProtocolConfig、ServiceConfig

    //应用配置信息
    	ApplicationConfig applicationConfig = new ApplicationConfig();
    	applicationConfig.setName("provider");
    		
    	//注册中心信息
    	RegistryConfig registryConfig = new RegistryConfig();
    	registryConfig.setAddress("multicast://224.0.0.1:1234");
    	//注册中心不存在是否抛出异常
    	registryConfig.setCheck(true); 
    		
    	//服务提供者协议配置
    	ProtocolConfig protocolConfig = new ProtocolConfig();
    	//设置协议名称
    	protocolConfig.setName("dubbo");
    	protocolConfig.setPort(2181);
    		
    	//方法配置设置
    	List<MethodConfig> methodConfigs = new ArrayList<MethodConfig>();
    	MethodConfig methodConfig = new MethodConfig();
    	methodConfig.setName("hello");
    	//执行时间
    	methodConfig.setTimeout(1000);
    	
    	methodConfigs.add(methodConfig);
    				
    	//服务提供者暴露服务配置
    	ServiceConfig<IHelloWorld> serviceConfig = new ServiceConfig<IHelloWorld>();
    	serviceConfig.setInterface(IHelloWorld.class);
    	serviceConfig.setRef(new HelloWorldImpl());
    	serviceConfig.setApplication(applicationConfig);
    	serviceConfig.setRegistry(registryConfig);
    	serviceConfig.setProtocol(protocolConfig);
    	serviceConfig.setMethods(methodConfigs);
    		
    	//暴露及注册服务
    	serviceConfig.export();
    

      消费者:ApplicationConfig、RegistryConfig、ReferenceConfig

    //应用信息
    ApplicationConfig applicationConfig = new ApplicationConfig();
    applicationConfig.setName("consumer");
    		
    //连接注册中心配置
    RegistryConfig registryConfig = new RegistryConfig();
    registryConfig.setAddress("multicast://224.0.0.1:1234");
    registryConfig.setPort(2181);
    		
    //引用远程服务配置
    ReferenceConfig<IHelloWorld> referenceConfig = new ReferenceConfig<IHelloWorld>();
    referenceConfig.setApplication(applicationConfig);
    referenceConfig.setRegistry(registryConfig);
    referenceConfig.setInterface(IHelloWorld.class);
    referenceConfig.setId("helloWorld");
    		
    IHelloWorld helloWorld = referenceConfig.get();
    helloWorld.hello();
    

      点对点直连
        //这里设置的是服务提供方中协议配置的url,path默认是接口类的全名

    referenceConfig.setUrl("dubbo://127.0.0.1:2181/com.dubbo.api.IHelloWorld");
    
    展开全文
  • Dubbo 服务配置

    2021-04-25 22:23:40
    Dubbo 服务配置简介 前言 大家好,今天开始给大家分享 — Dubbo 专题之 Dubbo 服务配置。那么怎么理解服务配置呢?我们在前面的《Dubbo 服务注册与发现》章节中讨论了服务注册与发现,其中当我们需要对外暴露一个 ...

    Dubbo 服务配置简介

    前言

    大家好,今天开始给大家分享 — Dubbo 专题之 Dubbo 服务配置。那么怎么理解服务配置呢?我们在前面的《Dubbo 服务注册与发现》章节中讨论了服务注册与发现,其中当我们需要对外暴露一个 Dubbo 服务时需要指定:应用名称、端口、协议、注册中心地址、延迟暴露等配置属性,那么这些配置属性就是我们所说的服务配置。通过服务配置我们可以改变一些特性,例如:使用不同的通讯协议、切换序列化方式、是否延长暴露服务、调用服务超时时间等等。这里会主要介绍下相关的配置方式具体的详细配置属性可以参考:配置参考手册

    1. Dubbo 服务 XML 配置

    下面我们来使用 XML 方式来暴露和引用 Dubbo 服务。

    java源码目录结构:

    |–serviceconfig

    ​ |–api 暴露服务的接口定义

    ​ |–consumer 消费者服务

    ​ |–provider 服务提供者

    idea1

    resources目录结构:

    |–serviceconfig

    ​ |–consumer 消费者配置文件

    ​ |–spring

    ​ |–provider 服务提供者配置文件

    ​ | --spring

    idea2

    消费者配置文件dubbo-consumer-xml.xml如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
           xmlns="http://www.springframework.org/schema/beans"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
           http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    		<!--配置Dubbo应用名称-->
        <dubbo:application name="demo-consumer" logger="log4j" />
    		<!--配置Dubbo zookeeper注册中心地址-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    		<!--配置引用Dubbo服务名称-->
        <dubbo:reference id="bookFacade" check="false" interface="com.muke.dubbocourse.serviceconfig.api.BookFacade"></dubbo:reference>
    
    </beans>
    

    消费者启动类:com.muke.dubbocourse.serviceconfig.consumer.XmlApplication

    服务提供者配置文件dubbo-provider-xml.xml如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
           xmlns="http://www.springframework.org/schema/beans"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
           http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    		<!--配置Dubbo应用名称-->
        <dubbo:application name="demo-provider" metadata-type="remote"/>
    		<!--配置Dubbo zookeeper注册中心地址-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    		<!--配置Spring容器Bean-->
        <bean id="bookFacade" class="com.muke.dubbocourse.serviceconfig.provicer.BookFacadeImpl"/>
        <!--暴露本地服务为Dubbo服务-->
        <dubbo:service interface="com.muke.dubbocourse.serviceconfig.api.BookFacade" ref="bookFacade"/>
    
    </beans>
    

    服务提供者启动类:com.muke.dubbocourse.serviceconfig.provider.XmlApplication

    从上面的消费者和提供者配置文件可以看出我们可以通过 xml 的方式来配置服务提供者以及消费者引用远程服务等更多详细配置信息可以参考:配置参考手册

    2. Dubbo 服务属性配置

    Dubbo 中提供了dubbo.properties属性文件来配置服务。作为一个默认的配置,他与配置文件和 JVM 配置的优先级顺序为:JVM参数(-D开头的JVM配置参数) > XML 配置(上面已经讨论) >dubbo.properties默认配置。Dubbo 可以自动加载classpath根目录下的dubbo.properties,但是你同样可以使用 JVM 参数来指定路径:-Ddubbo.properties.file=xxx.properties。那么下面我们做一个简单的例子:

    • 消费者配置文件dubbo-consumer-properties.xml中我们取消了注册中心地址配置,而是在dubbo.properties配置注册中心地址如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
             xmlns="http://www.springframework.org/schema/beans"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
             http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
      		 <!--引用Dubbo应用名称-->
          <dubbo:application name="demo-consumer" logger="log4j" />
          <!--引用Dubbo服务-->
          <dubbo:reference id="bookFacade" check="false" interface="com.muke.dubbocourse.serviceconfig.api.BookFacade"></dubbo:reference>
      
      </beans>
      

      消费者对应启动类com.muke.dubbocourse.serviceconfig.consumer.PropertiesApplication主要这个启动类:

      public class PropertiesApplication {
      
          public static void main(String[] args) {
      
      //我们指定JVM参数 dubbo.properties.file 配置Dubbo属性配置文件地址        System.setProperty("dubbo.properties.file","/Users/liyong/work/workspace/course/src/main/resources/serviceconfig/dubbo.properties");
      
              ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("serviceconfig/consumer/spring/dubbo-consumer-properties.xml");
      
              context.start();
      
              BookFacade bookFacade = context.getBean("bookFacade", BookFacade.class);
      
              System.out.println("Result=>"+ bookFacade.queryAll());
      
          }
      
      }
      
    • 提供者配置文件dubbo-provider-properties.xml中我们不做任何修改:

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
             xmlns="http://www.springframework.org/schema/beans"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
             http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
      
         <!--Dubbo服务引用名称-->
          <dubbo:application name="demo-provider" metadata-type="remote"/>
      
         <!--注册中心地址-->
          <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
      
         <!--本地Spring容器bean-->
          <bean id="bookFacade" class="com.muke.dubbocourse.serviceconfig.provider.BookFacadeImpl"/>
      
          <!--暴露本地服务为Dubbo服务-->
          <dubbo:service interface="com.muke.dubbocourse.serviceconfig.api.BookFacade" ref="bookFacade"/>
      
      </beans>
      

      提供者对应启动类com.muke.dubbocourse.serviceconfig.provider.PropertiesApplication

    • dubbo.properties配置如下:

      dubbo.registry.address=zookeeper://127.0.0.1:2181
      

    分析:从上面配置文件可以看出我们在消费端配置文件dubbo-consumer-properties.xml中没有配置注册中心地址,只有在dubbo.properties配置了注册中心地址,也就说明我们指定的dubbo.properties配置文件生效。服务配置加载顺序遵循:JVM参数(-D开头的JVM配置参数) > XML 配置(上面已经讨论) >dubbo.properties默认配置。

    3. Dubbo 服务 API 配置

    在 Dubbo 中除了使用 XML 和属性配置外我们也可以直接使用 API 配置的方式。什么意思呢?也就是说我们可以直接使用硬编码的形势来指定相关配置。举个例子:

    • 编写消费者入口类:com.muke.dubbocourse.serviceconfig.consumer.JavaApiApplication

      public class JavaApiApplication {
      
          public static void main(String[] args) {
      
              BookFacade bookFacade = ref();
      
              System.out.println("Result=>" + bookFacade.queryAll());
      
          }
      
          private static BookFacade ref() {
      
              // 当前应用配置
              ApplicationConfig application = new ApplicationConfig();
              application.setName("yyy");
      
              // 连接注册中心配置
              RegistryConfig registry = new RegistryConfig();
              registry.setAddress("zookeeper://127.0.0.1:2181");
              registry.setUsername("aaa");
              registry.setPassword("bbb");
      
              // 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接
      
              // 引用远程服务
              ReferenceConfig<BookFacade> reference = new ReferenceConfig<>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
              reference.setApplication(application);
              reference.setRegistry(registry); // 多个注册中心可以用setRegistries()
              reference.setInterface(BookFacade.class);
              reference.setVersion("1.0.0");
      
              // 和本地bean一样使用bookFacade
              BookFacade bookFacade = reference.get(); // 注意:此代理对象内部封装了所有通讯细节,对象较重,请缓存复用
      
              return bookFacade;
      
          }
      
      }
      

      从上面代码我们可以看出通过Java API的方式配置注册中心配置、Dubbo应用配置、远程服务引用配置获取一个BookFacade的远程引用代理对象。

    • 服务消费者入口类:com.muke.dubbocourse.serviceconfig.provider.JavaApiApplication

      public class JavaApiApplication {
      
          public static void main(String[] args) throws IOException {
      
              export();
      
              //使服务Hold住
              System.in.read();
      
          }
      
          /**
           *
           * 暴露服务
           *
           * @author liyong
           * @date 10:49 PM 2020/10/24
           * @param
           * @exception
           * @return void
           **/
          private static void export() {
      
              BookFacadeImpl bookFacade = new BookFacadeImpl();
      
              // 当前应用配置
              ApplicationConfig application = new ApplicationConfig();
              application.setName("course");
      
              // 连接注册中心配置
              RegistryConfig registry = new RegistryConfig();
              registry.setAddress("zookeeper://127.0.0.1:2181");
              registry.setUsername("aaa");
              registry.setPassword("bbb");
      
              // 服务提供者协议配置
              ProtocolConfig protocol = new ProtocolConfig();
              protocol.setName("dubbo");
              protocol.setPort(12345);
              protocol.setThreads(200);
      
              // 注意:ServiceConfig为重对象,内部封装了与注册中心的连接,以及开启服务端口
      
              // 服务提供者暴露服务配置
              ServiceConfig<BookFacade> service = new ServiceConfig<>(); // 此实例很重,封装了与注册中心的连接,请自行缓存,否则可能造成内存和连接泄漏
              service.setApplication(application);
              service.setRegistry(registry); // 多个注册中心可以用setRegistries()
              service.setProtocol(protocol); // 多个协议可以用setProtocols()
              service.setInterface(BookFacade.class);
              service.setRef(bookFacade);
              service.setVersion("1.0.0");
      
              // 暴露及注册服务
              service.export();
      
          }
      
      }
      

    从上面代码我们可以看出通过Java API 的方式配置注册中心配置、服务协议、Dubbo 应用配置、暴露和注册bean服务。

    4. Dubbo 服务注解配置

    注解配置也是我们最常用的一种方式,它是通过使用**@DubboService**(@Service)暴露服务、@DubboReference(@Reference)引用远程 Dubbo 服务。下面我们举一个例子:

    • 消费者服务入口类:com.muke.dubbocourse.serviceconfig.consumer.AnnotationApplication

      @EnableDubbo(scanBasePackages = "com.muke.dubbocourse.serviceconfig.provider")//激活Dubbo功能并且扫描com.muke.dubbocourse.serviceconfig.provider理解中Dubbo自己的注解
      @PropertySource("classpath:/serviceconfig/consumer/spring/dubbo-consumer.properties")//加载dubbo-consumer.properties配置文件
      @ComponentScan(value = {"com.muke.dubbocourse.serviceconfig.consumer"})//扫描Spring容器中的bean
      public class AnnotationApplication {
      
          public static void main(String[] args){
      
              // 创建 BeanFactory 容器
              AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
              // 注册 Configuration Class(配置类) -> Spring Bean
              applicationContext.register(AnnotationApplication.class);
      
              // 启动 Spring 应用上下文
              applicationContext.refresh();
      
              //从容器中获取引用
              BookFacade bookFacade = applicationContext.getBean(BookFacade.class);
      
              System.out.println("AnnotationApplication Result is =>" + bookFacade.queryAll());
      				//关闭容器
              applicationContext.close();
      
          }
      }
      
    • 服务提供者入口类:com.muke.dubbocourse.serviceconfig.provider.AnnotationApplication

      @EnableDubbo(scanBasePackages = "com.muke.dubbocourse.serviceconfig.provider")//开启Dubbo功能且扫描com.muke.dubbocourse.serviceconfig.provider包路径中Dubbo相关注解
      @PropertySource("classpath:/serviceconfig/provider/spring/dubbo-provider.properties")
      public class AnnotationApplication {
      
          public static void main(String[] args) throws IOException {
      
              // 创建 BeanFactory 容器
              AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
              // 注册 Configuration Class(配置类) -> Spring Bean
              applicationContext.register(AnnotationApplication.class);
      
              // 启动 Spring 应用上下文
              applicationContext.refresh();
      
              //Hold住进程
              System.in.read();
      
          }
      }
      

    从上面的例子中可以看到我们使用 Dubbo 提供的注解大大减少了我们的配置工作量。同时我们在选择服务配置方式时,需要根据我们的业务场景去综合考虑使用哪一种配置方式更适合我们团队开发。

    5. 小结

    在本小节中我们主要学习了 Dubbo 中的4种服务配置方式,分别从 XML 配置、属性配置、API 配置、注解配置中可以看出 Dubbo 在不断的简化和优化 Dubbo 的复杂的配置,使我们更容易去集成和使用 Dubbo。

    本节课程的重点如下:

    1. 理解 Dubbo 中4种服务配置方式

    2. 了解什么是 XML 配置

    3. 了解什么是属性配置

    4. 了解什么是 API 配置

    5. 了解什么是注解配置

    作者

    个人从事金融行业,就职过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就职于某银行负责统一支付系统建设。自身对金融行业有强烈的爱好。同时也实践大数据、数据存储、自动化集成和部署、分布式微服务、响应式编程、人工智能等领域。同时也热衷于技术分享创立公众号和博客站点对知识体系进行分享。

    博客地址:http://youngitman.tech

    微信公众号:
    在这里插入图片描述

    知识星球:

    在这里插入图片描述

    展开全文
  • Dubbo学习-dubbo自定义配置标签

    千次阅读 2018-04-15 00:55:21
    使用过dubbo的朋友都知道,dubbo有很多自定义的配置标签,比如&lt;dubbo:service /&gt;、&lt;dubbo:reference /&gt;等。那么这些自定义是怎么实现的呢? dubbo是运行在spring容器中,dubbo配置...
  • dubbo使用配置

    2019-05-22 16:12:44
    在如今设备配置已经到达极限的时候,则需要进行分布式进行处理,将一些应用功能分开管理,但是又必须得互相有沟通,可以通过简单的接口暴露和RPC引用远程服务,通过配置URL地址进行调用,通过F5等硬件进行负载...
  • dubbo 简单实例

    2017-07-04 17:22:32
    Dubbo实战(三)多注册中心配置dubbo 简单运行实现。maven管理jar
  • Dubbo——配置

    2021-04-19 15:12:29
    配置XML配置常见配置不同粒度配置的覆盖关系动态配置中心属性配置映射规则重写与优先级API配置注解配置服务提供方Service注解暴露服务(2.7.7版本之后,使用@DubboService注解)增加应用共享配置指定Spring扫描路径...
  • dubbo配置简单介绍

    2018-03-08 17:35:47
    一、dubbo常用配置&lt;dubbo:service/&gt; 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。 eg、&lt;dubbo:service ref="...
  • Dubbo基本用法-Dubbo Provider配置

    千次阅读 2018-10-15 09:14:26
    Dubbo基本用法-Dubbo Provider配置 ...
  • dubbo简易监控中心也是dubbo服务应用。 为什么叫“简易”?这是阿里巴巴定义的,意思是功能不多但够用,可以自己扩展。 1、下载dubbo源码,要与使用的dubbo版本一致。 ...
  • Dubbo配置文件简单说明

    千次阅读 2018-11-09 11:35:25
    Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo配置即可,Dubbo基于Spring的Schema扩展进行加载。 Dubbo配置说明 xml配置 所有配置项可分为三大类: 服务发现:...
  • Dubbo配置 配置原则 首先,从Dubbo支持的配置来源说起,默认有四种配置来源: JVM System Properties,-D 参数 Externalized Configuration,外部化配置(如dubbo.xml) ServiceConfig、ReferenceConfig 等编程接口...
  • Dubbo简单配置

    2020-04-30 21:00:28
    Dubbo简单配置 新增一个父项目,并在父项目中添加依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.8</version>....
  • 在本系列教程中, 我们会... 所有的Dubbo服务接口都可以直接通过配置对外暴露, 但用户不需要额外编写服务暴露的代码, 因为这些都被Dubbo框架隐藏了, 用于降低框架使用门槛, 用户只需要专注以下内容: • 关注业...
  • 服务的暴露与消费过程Dubbo配置解析过程xml 配置的解析过程注解的解析过程@EnableDubboConfig 的过程@DubboComponentScan 的过程service 注解reference 注解Dubbo 的服务暴露过程 Dubbo配置解析过程 dubbo 的...
  • dubbo应用配置

    2016-07-06 12:40:31
    jap+web web+web 简单例子
  • dubbo安装配置说明

    2015-06-12 11:09:12
    dubbo本地环境的简单搭建,包括zookeeper,provider,cunsumer,monitor的配置亲测没问题
  • 上一节完成了在Linux服务器上面部署Dubbo服务和批处理命令介绍,这节将介绍安装Dubbo官方提供的这个简易版监控中心,这个监控中心负责服务调用次数和调用时间的监控。虽然监控中心是官方提供简易版本,但是也基本上...
  • dubbo简单认识

    2020-07-16 16:23:29
    dubbo简单认识 了解dubbo Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常...
  • dubbo官方文档 dubbo是基于rpc的微服务架构 RPC远程过程调用 : Remote Procedure Call Protocol 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定...
  • Dubbo

    2021-02-24 14:57:10
    Dubbo简单使用
  • dubbo配置和使用

    2019-07-15 10:44:17
    dubbo配置和使用为什么使用dubbo?/duddo是为了解决什么问题?什么是dubbodubbo能做什么?Dubbo有哪些协议?dubbo架构调用过程使用方法 为什么使用dubbo?/duddo是为了解决什么问题? 随着互联网的不断发展,...
  • dubbo简单配置

    2018-05-24 21:25:42
    &lt;bean id="myProvider" class="Provider"...dubbo:application name="dubbo-j1801-test-provider"/&gt; &lt;!-- 注册中心的地址及端口 --&gt; &l

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,300
精华内容 20,920
关键字:

dubbo简单配置