zoukankan      html  css  js  c++  java
  • dubbo快速入门demo

    参考文章 https://blog.csdn.net/abcwanglinyong/article/details/81906027

    该demo包含三个项目,分别是:

    服务提供端项目:provider

    服务消费端项目:consumer

    共用服务接口项目:api

    1、新建maven项目api

    注意将其pom.xml中的打包方式改为jar

    然后在com.dubbo.api.service包下新建DemoService接口,如下:

    package com.dubbo.service;
    public interface DemoService {
        String sayHello(String name);
    }

    项目结构如图,将api工程打成jar 安装到maven仓库

    2.dubbo服务提供者provider项目

    新建maven项目provider,并在pom.xml中添加以下依赖:

    <dependencies>
        <dependency>
            <groupId>com.dubbo.api</groupId>
            <artifactId>api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
        </dependency>
    
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.0.5.RELEASE</version>
        </dependency>
    </dependencies>

    这里引入了上面的生成的api接口依赖、dubbo依赖、zookeeper客服端依赖以及启动项目必需的依赖

    然后在com.dubbo.provider.service.impl包下新建DemoServiceImp并实现DemoService接口,如下:

    package com.dubbo.provider.service.impl;
    
    import com.dubbo.service.DemoService;
    
    public class DemoServiceImpl implements DemoService {
        public String sayHello(String name) {
            return "Hello " + name;
    
        }
    }

    然后在resources下新建provider.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-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
        <dubbo:application name="demo-provider" owner="xxy" organization="dubbox"/>
        <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
        <dubbo:registry address="zookeeper://192.168.64.123:2181"/>
        <!-- 用dubbo协议在20880端口暴露服务 -->
        <dubbo:protocol name="dubbo" port="20880" />
        <!--使用 dubbo 协议实现定义好的 api.PermissionService 接口-->
        <dubbo:service interface="com.dubbo.service.DemoService" ref="demoService" protocol="dubbo" />
        <!--具体实现该接口的 bean-->
        <bean id="demoService" class="com.dubbo.provider.service.impl.DemoServiceImpl"/>
    </beans>

    然后在java下直接新建Provider用于启动项目:

    package com.dubbo.provider.service.impl;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import java.io.IOException;
    
    public class Provider {
        public static void main(String[] args) throws IOException {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
            context.start();
            System.out.println("dubbo服务提供端已启动....");
            System.in.read(); // 按任意键退出
        }
    }

    provider项目结构如图:

    然后直接运行该main函数-dubbo服务提供者已启动!

    3.dubbo服务消费者consumer项目

    新建maven项目consumer,并在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.dubbo.consumer</groupId>
        <artifactId>consumer</artifactId>
        <version>1.0-SNAPSHOT</version>
    
    <dependencies>
        <dependency>
            <groupId>com.dubbo.api</groupId>
            <artifactId>api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.0.5.RELEASE</version>
        </dependency>
    </dependencies>
    </project>

    和provider项目添加的依赖一样。

    然后在resources下新建comsumer.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="demo-consumer" owner="xxy" organization="dubbox"/>
        <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送-->
        <dubbo:registry address="zookeeper://192.168.64.123:2181"/>
        <!--使用 dubbo 协议调用定义好的 api.PermissionService 接口-->
        <dubbo:reference id="demoService" interface="com.dubbo.service.DemoService"/>
    </beans>

    然后在java下新建Consumer.class用于启动该项目,如下:

    package com.dubbo.cusumer;
    
    import com.dubbo.service.DemoService;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import java.io.IOException;
    
    
    public class Consumer {
        public static void main(String[] args) throws IOException {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "cosumer.xml" );
            context.start();
            System.out.println("dubbo服务消费端已启动...");
            DemoService demoService = (DemoService) context.getBean("demoService");
            String hello = demoService.sayHello("world");
            System.out.println(hello);//显示调用结果
            System.in.read(); // 按任意键退出
        }
    }

    启动该项目,显示调用结果,如图:

     到这里就已经完成了dubbo的远程调用。下面介绍下dubbo-admin管理控制台

    4、dubbo-admin管理控制台

    通过dubbo-admin可以更好的管理dubbo服务。

    首先下载dubbo-admin的war包,下载地址:

    http://www.java1234.com/a/javabook/javaweb/2018/0224/10496.html
    下载完成后,将dubbo-admin-2.6.0.war复制到tomcat的webapps目录下。然后启动tomcat,访问(这里我的tomcat版本是apache-tomcat-7.0.91,8.5的我这边有问题)

    修改 dubbo.properties

    dubbo.registry.address=zookeeper://192.168.64.123:2181
    dubbo.admin.root.password=服务器账号
    dubbo.admin.guest.password=服务器密码

    http://localhost:8080/dubbo-admin-2.6.0/

    也可以将dubbo-admin-2.6.0重命名为dubbo-admin访问的时候直接访问http://localhost:8080/dubbo-admin即可

    用户名和密码都是root

    登录后就可以通过网页进行管理dubbo服务了,如图:

    5、最后看一下 zookeeper 的文件结构

    [zk: 192.168.64.123:2181(CONNECTED) 27] ls /dubbo
    [com.dubbo.service.DemoService]
    [zk: 192.168.64.123:2181(CONNECTED) 28] 
  • 相关阅读:
    Objective C 代码片段(类别)
    误释放对象
    浏览器内核信息整理
    Oracle VM Virtual 下CentOS不能自动获取IP地址
    git 命令归纳
    马蜂窝 iOS App 启动治理:回归用户体验
    马蜂窝火车票系统服务化改造初探
    让前端监控数据采集更高效
    状态机在马蜂窝机票订单交易系统中的应用与优化实践
    马蜂窝张矗:我对技术团队绩效考核管理的几点思考
  • 原文地址:https://www.cnblogs.com/maxmoore/p/12106066.html
Copyright © 2011-2022 走看看