Dubbo(1)------搭建环境并使用

Dubbo(1)------搭建环境并使用

前言

Dubbo是阿里巴巴公司开源的一个优秀的RPC服务框架,它可以和Spring无缝集成.对其作用相信很多java开发者都有所了解,所以我们直接来开始使用.

正文

1. 了解架构,搭建环境

在Dubbo的官方有这样一个图:

在这里插入图片描述

以上是Dubbo的架构图,上图各节点的解释如下:

节点角色说明
Provider暴露服务的服务提供方
Consumer调用远程服务的服务消费方
Registry服务注册与发现的注册中心
Monitor统计服务的调用次数和调用时间的监控中心
Container服务运行容器

根据以上的图,我们知道,要使用Dubbo,就要先启动一个Registry,启动一个Monitor.参考Dubbo的官方,推荐我们使用Zookeeper来作为注册中心.

2. 安装启动注册中心

我们可以去Zookeeper的官网去下载对应的版本:Zookeeper下载

在这里我们使用3.4.13版本的zookeeper,直接在本机windows中使用即可.

下载Zookeeper后解压会得到如下的文件:

在这里插入图片描述

bin目录下就是各种启动命令.

需要注意的是,如果第一次启动会报错,这是因为在conf目录中没有找到zookeeper的配置文件,我们打开conf目录,发现里面有一个zoo_samole.cfg文件,复制改名为zoo.cfg即可,再次启动就可以正常运行:

在这里插入图片描述

如果有需要,也可以修改zookeeper配置文件中的一些参数:

dataDir参数代表zookeeper的临时文件的存放目录,默认是/tmp/zookeeper,可以自定义存储目录.

3. 安装、启动监控中心

启动了注册中心,我们接着来构建和启动注册中心,其实监控中心是可选,如果不使用我们也可以正常的运行dubbo完成服务的发布,在这里我们安装启动作为了解.

首先我们去Dubbo的github仓库中下载项目:incubator-dubbo-ops,下载完成后,进入该项目的dubbo-admin目录中,执行maven命令:mvn clean package,执行成功后就会在target文件夹中得到一个dubbo-admin-0.0.1-SNAPSHOT的jar,这个jar就是我们dubbo的控制台.在cmd窗口中执行java命令,以jar的方式来启动该项目.

在这里插入图片描述

启动完成后我们在浏览器中访问:http://localhost:7001/,注意,这个端口号是在dubbo-admin项目的配置文件中指定的,如果想更换,要在打包前修改配置文件.

下面就是我们dubbo-admin控制台的管理WEB页面:

在这里插入图片描述

第一次访问的时候会提示要求输入账号和密码,直接使用root登陆即可.

上面就是我们的控制台,我们可以在该页面管理和查看我们的dubbo服务,2.7版本以后的dubbo控制台有所改变,这个我们在后面再细说.

4. 编写服务提供者

经过以上的步骤,我们的注册中心和监控中心就搭建好了,下面我们来写一个服务提供者,用于提供服务接口给其他的项目使用.

  1. 新建一个maven项目,添加maven依赖

    		<properties>
            	<dubbo.version>2.7.1</dubbo.version>
        	</properties>        
    		<dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-dependencies-zookeeper</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
            </dependency>
    
  2. 编写服务接口和实现类:

    接口:

    /**
     * 用户接口定义
     */
    public interface UserService {
    
        User getUserByName(String name);
    }
    

    实现类:

        public User getUserByName(String name) {
            User user = new User();
            user.setName(name);
            user.setGender("男");
            user.setAddress("纯阳宫101号");
            return user;
        }
    

    还有接口中使用到的实体类User

    public class User {
    
        private String name;
    
        private String address;
    
        private String gender;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", address='" + address + '\'' +
                    ", gender='" + gender + '\'' +
                    '}';
        }
    }
    
  3. 配置该服务,注册到注册中心

    因为dubbo的jar中依赖了spring的相关jar,我们可以使用spring的方式来配置我们的服务,在上面2步的基础上,我们在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://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="user-provider"></dubbo:application>
    
        <!--指定注册中心的位置-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
    
        <!--指定通信协议和端口号-->
        <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    
        <!--暴露服务-->
        <dubbo:service interface="com.xiaojian.service.UserService" ref="orderService"></dubbo:service>
    
        <!--指定服务的实现-->
        <bean id="orderService" class="com.xiaojian.service.impl.UserServiceImpl"></bean>
    </beans>
    

    以上文件中详细写明了暴露服务的相关配置,依次配置好以后,我们编写一个启动类,加载配置文件.

    public class ProviderApp {
    
        public static void main(String[] args) throws IOException {
            ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("provider.xml");
            applicationContext.start();
            System.in.read();
        }
    }
    

    服务启动以后,我们就可以在管理中心查看到我们暴露的服务了:

    在这里插入图片描述

5. 编写服务消费者

完成了服务的发布以后,我们需要一个消费者来使用这个服务.

  1. 创建maven工程,引入依赖:

    		<properties>
            	<dubbo.version>2.7.1</dubbo.version>
        	</properties>        
    		<dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-dependencies-zookeeper</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
            </dependency>
    

    和前面的服务提供者的依赖是一样的.

  2. 编写业务类,并且引入服务提供者暴露服务的接口和相关的javaBean

    实现类:

    @Service
    public class OrderServiceImpl  implements OrderService{
    
        @Autowired
        private UserService userService;
    
        public void createOrder() {
            User user = userService.getUserByName("剑小纯");
            System.out.println(user);
        }
    }
    

    接口:

    public interface OrderService {
    
        void createOrder();
    }
    
  3. 创建配置文件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://dubbo.apache.org/schema/dubbo" xmlns:context="http://www.springframework.org/schema/context"
           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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--指定消费者的应用名-->
        <dubbo:application name="order-consumer"></dubbo:application>
    
        <!--指定注册中心的地址-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
    
        <!--声明需要调用的远程服务的接口,会生成远程服务的代理-->
        <dubbo:reference interface="com.xiaojian.service.UserService" id="userService"></dubbo:reference>
    
        <!--开启spring注解扫描-->
        <context:component-scan base-package="com.xiaojian.service.impl"></context:component-scan>
    </beans>
    
  4. 编写启动类,测试服务的调用:

    public class AppApplication {
        public static void main(String[] args) throws IOException {
            System.out.println("容器启动...");
            ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml");
            applicationContext.start();
           //UserService userService = (UserService) applicationContext.getBean("userService");
            OrderService orderService = applicationContext.getBean(OrderService.class);
            orderService.createOrder();
            System.out.println("远程调用结束...");
    
            System.in.read();
        }
    }
    

    测试可以发现,服务是可以使用的:

    在这里插入图片描述

    我们打开dubbo的管理中心,也可以看到服务的消费者和提供者:

    在这里插入图片描述

至此,我们的远程服务的暴露和使用就彻底完成了,虽然是一个普通的小demo,但是也涵盖了dubbo的使用流程,对于我们熟悉dubbo还是很有帮助的.

6. 配置监控中心

在dubbo的使用中,除了可以在dubbo的服务管理页面来查看和管理我们的服务,还可以使用监控中心来查看各类服务的调用情况,在dubbo的incubator-dubbo-ops-master的项目中,为我们提供了一个简单的监控中心:dubbo-monitor-simple,我们可以为我们的服务来配置使用这个监控中心.

  1. dubbo-monitor-simple项目使用maven命令打包

    打包成功以后再target目录下我们会得到两个文件:

    dubbo-monitor-simple-2.0.0dubbo-monitor-simple-2.0.0-assembly.tar

  2. dubbo-monitor-simple-2.0.0-assembly.tar解压,进入解压后的文件夹,找到conf目录,修改该目录下的dubbo配置文件,主要是修改其中的注册中心的IP地址:dubbo.registry.address,该文件中可以指定监控中心的通信端口,默认是7070.

  3. 进入bin目录,运行start.bat文件,启动监控中心:

    在这里插入图片描述

  4. 打开浏览器访问:http://localhost:8080/,就可以看到监控中心的页面了:

    在这里插入图片描述

  5. 在服务的提供者和消费者的配置文件中配置监控中心的地址:

    <!--配置监控中心-->
        <dubbo:monitor protocol="registry"></dubbo:monitor>
        <!--<dubbo:monitor address="127.0.0.1:7070"></dubbo:monitor>-->
    

    配置好以后重启服务提供者和消费者,监控中心的配置就完成了.

监控中心配置完成以后,服务的调用情况等信息都可以在监控中心进行查看,可以很直观的对我们的每一个服务进行调优分析.

总结

dubbo的简单使用就说到这里,其他具体的详细使用可以在dubbo的官方文档中去查看,同样有中文版的文档,很是方便.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值