企业级应用,如何实现服务化三(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);

    }
}

原文地址:https://www.cnblogs.com/itall/p/10958365.html

时间: 2024-10-21 17:20:47

企业级应用,如何实现服务化三(dubbo入门案例)的相关文章

分布式服务框架Dubbo入门案例和项目源码

本项目源代码:http://download.csdn.net/detail/fansunion/9498406 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案, 是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点.   官方网站: http://dubbo.io/ 本项目代码,根据官方提供的dubbo-ws-demo-master例子,改造而来.    官网例子

Dubbo入门案例

一.环境说明 dubbo-2.5.3 zookeeper-3.4.8 jdk-1.7 二.环境搭建 1.下载zookeeper,解压,创建zoo.cfg文件,启动 2.下载并安装jdk,配置环境变量 3.安装dubbo-admin 三.代码 1.示例工程结构 2.服务接口 3.服务提供者 4.服务提供者启动 5.服务消费者 6.消费者调用 7.防火墙配置

spring入门案例分析及原理

Springmvc执行原理: 一. 入门案例的执行流程 1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件2. 开启了注解扫描,那么HelloController对象就会被创建3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到执行的具体方法4. 根据执行方法的返回值,再根据配置的视图

企业级应用,如何实现服务化五(dubbo综合案例)

这是企业级应用,如何实现服务化第五篇.在上一篇企业级应用,如何实现服务化四(基础环境准备)中.已经准备好了zookeeper注册中心,和dubbo管理控制台.这一篇通过一个综合案例,看一看在企业级应用中,如何将dubbo整合应用起来. 1.案例架构 项目模块说明: #描述项目模块: 1.父/聚合项目:spring-dubbo-master 统一管理依赖版本信息,用于快速构建各个项目模块 2.实体类子项目:spring-dubbo-domain 用于放置实体类 3.持久层子项目:spring-du

Dubbo入门---搭建一个最简单的Demo框架

Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. 缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护 垂直应用框架(MVC) 垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且系统的体积可控,一定程度上降低了开发人员之间协同以及维护的成本,提升了开发效率. 缺点:但是在垂直架构

基于MAVEN使用IDEA创建dubbo入门项目图文教程

花了很长时间没有找到一个很详细的图文教程来学习dubbo入门框架,故记录下来. 一: 项目工程目录 简单介绍项目目录结构: 二: 创建父工程 具体操作步骤: 1,打开IDEA,按下面步骤来 File->New->Project 2, 3.等IDEA加载完成进行下一步 File -> New-> Moudle 4, 5,选择本地maven仓库 6,改名字 三: 创建dubbo-common 1,New -> File -> Moudle 2, 3, 4, 四: 创建dub

Dubbo入门简介(一)

Dubbo入门简介(一) 一.什么是Dubbo Dubbo是阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.通过扩展spring schema 和 注解标签,可以和spring无缝集成(http://blog.csdn.net/achilles12345/article/details/41789527) 核心组件: Remoting:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交

Dubbo入门实例

现在用到了分布式框架Dubbo,随笔谢谢Dubbo入门的实例 解释:注册中心,服务注册的地方,通俗的说就是服务所在的位置 我这里的是在192.168.2.168上面 需要用到的jar包 这是客服端和服务端都需要的jar包,我们新建Maven工程. 项目结构图: 服务端: 一个接口(接口中的方法在实现时方法名开始不能以get开头,莫名报错):     public interface UserService { public void daoGet(); } 实现类(这里必须要实现Serieali

谈谈Python之Django搭建企业级官网(第三篇下部)

转载请注明来源地址和原作者(CFishHome) 前沿 上一篇文章我们学习了URL与视图函数的映射.传递参数的三种方式.转换器的简单使用和include函数分层映射管理.接下来这一篇文章着重介绍Path.re_path.include.reverse.redirect函数的使用和自定义URL转换器.学完这些内容,相信我们对URL和视图都会有了一定的了解和认识.为了让每篇文章具有一定的独立性,我决定每篇文章都重新新建一个项目,便于测试和调试. 预备 首先,我们在Pycharm重新新建一个名为boo