zoukankan      html  css  js  c++  java
  • 企业级应用,如何实现服务化三(dubbo入门案例)

      今天是六一儿童节,从千里之外的广州,回到了贵州老家,真好!好山好水好心情,好了接着写点东西。这是企业级应用,如何实现服务化系列的第三篇。在上一篇:企业级应用,如何实现服务化二(dubbo架构)中,认识了dubbo的整体架构,和dubbo四大特点:连通性、健壮性、伸缩性、升级性。下面先来实现一个入门级的demo,直观感受一下。

    1.案例说明

    通过一个简单的案例,演示dubbo入门使用。案例中只有服务提供者,服务消费者。

    2.案例实现

      2.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>com.anan</groupId>
        <artifactId>dubbo-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <packaging>jar</packaging>
    
        <properties>
            <!--spring 版本-->
            <spring.version>5.0.2.RELEASE</spring.version>
            <!--dubbo版本-->
            <dubbo.version>2.7.0</dubbo.version>
        </properties>
    
        <dependencies>
            <!--spring依赖包-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!--dubbo依赖-->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
        </dependencies>
    </project>

      2.3.服务端开发

        2.3.1.service接口

    package com.anan.dubbo.service;
    
    /**
     * 服务接口
     */
    public interface HelloService {
    
        /**
         * 问好
         */
        String sayHello(String name);
    }

        2.3.2.service接口实现

    package com.anan.dubbo.service.impl;
    
    import com.anan.dubbo.service.HelloService;
    
    /**
     * 服务接口实现
     */
    public class HelloServiceImpl implements HelloService{
    
        /**
         * 问好
         *
         * @param name
         */
        public String sayHello(String name) {
            return "hello,"+name+"!";
        }
    }

      2.4.配置服务提供者

    <?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.xsd
           http://dubbo.apache.org/schema/dubbo
           http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
        <!--提供方应用信息,用于计算依赖关系-->
        <dubbo:application name="provider-hello-world-app"  />
    
        <!--使用multicast广播注册中心暴露服务地址-->
        <dubbo:registry address="multicast://224.1.1.1:6666"/>
    
        <!--用dubbo协议在20880端口暴露服务-->
        <dubbo:protocol name="dubbo" port="20880"/>
    
        <!--声明需要暴露的服务接口-->
        <dubbo:service interface="com.anan.dubbo.service.HelloService" ref="helloService"/>
    
        <!--和本地bean一样实现服务-->
        <bean id="helloService" class="com.anan.dubbo.service.impl.HelloServiceImpl"/>
    
    </beans>

      2.5.配置服务消费者

    <?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.xsd
           http://dubbo.apache.org/schema/dubbo
           http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
        <!--消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样-->
        <dubbo:application name="consumer-hello-world-app"  />
    
        <!--使用multicast广播注册中心暴露发现服务地址-->
        <dubbo:registry address="multicast://224.1.1.1:6666"/>
    
        <!--生成远程服务代理,可以和本地bean一样使用helloService-->
        <dubbo:reference id="helloService" interface="com.anan.dubbo.service.HelloService" />
    
    </beans>

      2.6.测试

        2.6.1.启动服务提供者Provider

    package com.anan.dubbo.provider;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * 服务提供者
     */
    public class Provider {
    
        public static void main(String[] args) throws Exception{
            // 加载spring配置文件,创建spring容器
            ApplicationContext context =
                    new ClassPathXmlApplicationContext("classpath:provider.xml");
    
            // 阻塞:等待输入,可按任意键退出
            System.in.read();
        }
    }

        2.6.2.启动服务消费者Consumer

    package com.anan.dubbo.consumer;
    
    import com.anan.dubbo.service.HelloService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * 服务消费者
     */
    public class Consumer {
    
        public static void main(String[] args) {
            // 加载spring配置文件,创建spring容器
            ApplicationContext context =
                    new ClassPathXmlApplicationContext("classpath:consumer.xml");
    
            // 获取远程服务代理
            HelloService helloService = (HelloService)context.getBean("helloService");
            //System.out.println(helloService.getClass());
    
            // 执行远程方法
            String result = helloService.sayHello("anan");
            System.out.println(result);
    
    
        }
    }
  • 相关阅读:
    中国年薪 ¥30 万和美国年薪$ 10 万的生活水平异同
    汽车之家CMDB设计思路 – 汽车之家运维团队博客
    平民软件 | 中间件
    FIT2CLOUD
    ZeroBrane Studio
    新炬网络-领先数据资产运营商 | 数据资产管理 | 数据库运维 | 自动化运维
    中国(南京)软件开发者大会
    夏仲璞 | 全球软件开发大会北京站2016
    Nginx下流量拦截算法 | 夏日小草
    docker~dockertoolbox的加速器
  • 原文地址:https://www.cnblogs.com/itall/p/10958365.html
Copyright © 2011-2022 走看看