Dubbo学习笔记(三)之Dubbo相关协议和Provider配置

一、Dubbo支持的协议

1、Dubbo协议

   优点:是用NIO和线程池进行处理,减少握手和加大并发效率

   缺点:大文件传输时,可能出现失败问题

2、Rmi协议

   优点:JDK提供的协议,不需要额外配置远程方法调用协议(TCP协议)

   缺点:偶尔会连接失败

3、Hessian协议

   优点:基于HTTP协议,http请求支持

   缺点:需要额外导入jar,并在短连接时性能低

二、Dubbo中Provider搭建

1、新建Maven Project ,里面只有一个接口(dubbo-service)

   1.1、为什么这么做

      RPC框架不希望Consummer知道具体怎么实现的,如果实现类和接口在

同一个项目中,Consummer依赖这个项目时,就会知道实现类具体实现。

 效果图:

   1.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>com.newland</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>


</project>

DomeService.java接口:

package com.newland.service;

/**
 * @ClassName DemoService
 * @Description: CSDN GHHCNGC
 * @Author gh
 * @Date 2019/9/27 9:10
 * @Version V1.0
 **/
public interface DemoService {
    String demo(String name);
}

2、新建Maven Project ,写接口的实现类(dubbo-service-impl)

2.1、效果图

2.2、具体代码

2.2.1、pom.xml

2.2.1.1、依赖接口dubbo-service

2.2.1.2、依赖dubbo,去掉老版本spring

2.2.1.3、依赖新版本spring

2.2.1.4、依赖Zookeeper客户端工具zkClient

<?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>com.newland</groupId>
    <artifactId>dubbo-service-impl</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <dependency>
            <groupId>com.newland</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>

        <!--访问Zookeeper客户端的jar包-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

    </dependencies>

</project>

2.2.2、实现接口类,并实现接口方法

2.2.2.1、DemoServiceImpl.java

package com.newland.service.impl;


import com.newland.service.DemoService;

/**
 * @ClassName DemoServiceImpl
 * @Description: CSDN GHHCNGC
 * @Author gh
 * @Date 2019/9/27 9:11 
 * @Version V1.0
 **/

public class DemoServiceImpl implements DemoService{
    /**
     *
     * @param name
     * @return
     */
    public String demo(String name) {
        return "传过来的name"+name;
    }
}

2.2.3、新建配置文件applicationContext-dubbo.xml,并配置

  2.2.3.1、<dubbo:application/> 给provider起名字,在monitor或管理工具中区别哪一个是provider

  2.2.3.2、<dubbo:registry/>配置注册中心

      2.2.3.2.1、address:注册中心的ip和端口

      2.2.3.2.2、protocol是用哪种注册中心

  2.2.3.3、<dubbo:protocol/>配置协议

      2.2.3.3.1、name使用什么协议

      2.2.3.3.2、port:consummer invoke provider时的端口号

  2.2.3.4、<dubbo:service/>注册借口

     2.2.3.4.1、ref 引用借口实现类<bean>的id值

  2.2.3.5、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">

    <!--给当前Provide自定义名字-->
    <dubbo:application name="dubbo-service"/>

    <!--配置注册中心 使用Zookeeper协议  address:-->
    <dubbo:registry address="192.168.40.1:2181" protocol="zookeeper"></dubbo:registry>

    <!--配置端口  对应图片中的第四步的 invoke name表示从注册中心中获取
           port 端口号可以随意,只要不被占用 通过20880访问计算机-->
    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>

    <!--注册功能 去registry注册 注册借口的实现类 (一接口写两个标签)(频繁使用)-->
    <dubbo:service interface="com.newland.service.DemoService" ref="demoServiceImpl"></dubbo:service>
    <bean id="demoServiceImpl" class="com.newland.service.impl.DemoServiceImpl"></bean>


</beans>

2.2.4、启动容器

    2.2.4.1、通过spring方式启动  

         2.2.4.1.1、对于applicationContext-dubbo.xml的位置没有要求

         2.2.4.1.2、DemoServiceTest.java

public class DemoServiceTest {
    public static void main(String[] args){
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-dubbo.xml");
        ac.start();//这里做的就是流程图中0.start过程
        System.out.println("start successful!");
        System.in.read();

}

    2.2.4.2、通过dubbo提供的方式启动(推荐)

          2.2.4.2.1、要求applicationContext-dubbo.xml配置文件必须放在/META-INF/spring/*.xml

public class DemoServiceTest {
    public static void main(String[] args){

        //官方推荐
        //要求配置文件必须放在/META-INF/spring/*.xml
        Main.main(args);

    }
}
 

2.2.5、启动成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值