本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】

1 篇文章 0 订阅
1 篇文章 0 订阅

正式配置前的一些说明:

  1. 笔者是在本地windows环境下基于springboot框架创建的dubbo项目,作为入门版本比较简单,IDE为IDEA。
  2. linux环境为阿里云的乌班图,安装的是standalone(单机版)的zookeeper和dubbo-admin(使用jar包,只需有java环境可以不安装tomcat)
  3. 本文所用代码github链接:https://github.com/15930599706/dubbo-Zookeeper-DubboAdmin

 项目目录结构:

  1. 总目录
  2. api结构
  3. consumer结构
  4. provider结构

 springboot项目创建

  1. 在IDEA中创建一个空项目
  2. 在该空项目中创建三个model,model类型为springboot


    三个springboot model分别命名为api、provider、consumer,其中Develop tools选择Spring Web即可

    provider示例》》

    Develop tools》》

     
  3. 配置 api
    该部分是存放所有公共接口的模块,服务提供方与服务消费方均依赖此模块
    》》在com.dubbo.api.api下创建service包,在service包中创建CostService.java文件:
    package com.dubbo.api.api.service;
    
    public interface CostService {
        Integer add(int cost);
    
    }

    》》在application.properties文件中指定服务器端口为8061
     

    server.port=8061
    

     

  4. 配置consumer
    该部分是消费服务的消费方所在的模块
    》》在consumer的pom中添加依赖
     

            <!--引入api模块-->
            <dependency>
                <groupId>com.dubbo.api</groupId>
                <artifactId>api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <scope>compile</scope>
            </dependency>
    
            <!--引入dubbo环境-->
            <dependency>
                <groupId>com.alibaba.boot</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>0.2.0</version>
            </dependency>

    》》在com.dubbo.consumer.consumer中创建service包,再在该包下创建ProductService.java
     

    package com.dubbo.consumer.consumer.service;
    
    import org.springframework.stereotype.Service;
    
    @Service
    public interface ProductService {
        Integer getCost(int a);
    }
    

    》》在service包下创建 impl 包 ,再在该包下创建ProductServiceImpl.java
     

    package com.dubbo.consumer.consumer.service.impl;
    
    
    import com.dubbo.api.api.service.CostService;
    import com.dubbo.consumer.consumer.service.ProductService;
    import com.alibaba.dubbo.config.annotation.Reference;
    import org.springframework.stereotype.Service;
    
    @Service("productService")
    public class ProductServiceImpl implements ProductService {
        /**
         * 使用dubbo的注解 com.alibaba.dubbo.config.annotation.Reference。进行远程调用service
         */
        @Reference
        private CostService costService;
        @Override
        public Integer getCost(int a) {
            return costService.add(a);
        }
    }
    

    》》在com.dubbo.consumer.consumer中创建controller包,再在该包下创建ProductController.java

    package com.dubbo.consumer.consumer.controlller;
    
    import com.dubbo.consumer.consumer.service.ProductService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class ProductController {
        @Autowired
        private ProductService productService;
        //resuful分格
        @RequestMapping(value = "/add/{money}")
        public String getCost(@PathVariable Integer money){
            return "该产品总共消费 :"+productService.getCost(money);
        }
    }
    

    》》在application.properties文件中指定服务器端口为8062
     

    server.port=8062

         》》在resources目录下创建dubbo-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://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的url地址,这里才可以使用dubbo标签 -->

    <!-- 该标签必须保证每个项目的名称不同,用来服务治理用的,就是应用(项目)的名称 -->
    <dubbo:application name="demo-consumer" owner="zgy" organization="dubbo_zgy"/>

    <!-- 配置zookeeper注册中心 -->
    <!-- aliyunLinux中的zookeeper端口为2181 -->
    <dubbo:registry address="zookeeper://47.98.40.227:2181" protocol="zookeeper" />

    <!-- 关闭所有服务的自动检查 -->
    <!-- <dubbo:consumer check="false"/> -->

    <!-- 配置服务消费者,引用远程服务,本标记相当于创建了一个bean,所以在类中可以通过注解自动注入 -->
    <dubbo:reference id="costService" interface="com.dubbo.api.api.service.CostService"/>
</beans>

     》》为了使该配置文件生效,在 ConsumerApplication.java中添加注解:
            


@ImportResource(value = {"classpath:dubbo-consumer.xml"})

       5.配置provider

        》》在provider的pom中添加依赖

        <!--引入api模块-->
        <dependency>
            <groupId>com.dubbo.api</groupId>
            <artifactId>api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>

        <!--引入dubbo环境-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

 

》》在com.dubbo.provider.provider下创建service包,再在该包下创建impl包,在impl包中创建CostServiceImpl.java文件
       

package com.dubbo.provider.provider.service.impl;

import com.dubbo.api.api.service.CostService;

import com.alibaba.dubbo.config.annotation.Service;

@Service
public class CostServiceImpl implements CostService {
    private final Integer totalCost = 1000;
    @Override
    public Integer add(int cost) {
        return totalCost + cost;
    }
}

 

》》在application.properties文件中指定服务器端口为8063
 

server.port=8063

       》》在resources目录下创建dubbo-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的url地址,这里才可以使用dubbo标签 -->
    <!--定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="demo-provider" owner="demo_zgy" organization="dubbo_zgy" />

    <!-- 配置zookeeper注册中心,用到的vm是Linux_redis -->
    <!--aliyunLinux的 docker 中的zookeeper端口为2182-->
    <!--    <dubbo:registry address="zookeeper://47.98.40.227:2182" protocol="zookeeper" />-->
    <!-- aliyunLinux中的zookeeper端口为2181 -->
    <dubbo:registry address="zookeeper://47.98.40.227:2181" protocol="zookeeper" />

    <!-- 群集用这个 -->
    <!-- <dubbo:registry protocol="zookeeper" address="192.168.149.129:2181,192.168.149.129:2182,192.168.149.129:2183" /> -->

    <!-- 使用dubbo协议 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!--使用 dubbo 协议实现定义好的 Service Api 接口-->
    <!-- 配置dubbo服务:
    参数interface:就是指向接口的全路径
    参数ref:指向接口实现类的对象,所以我们必须有实现类的bean对象
    参数registry:N/A 不将该服务注册到注册中心

    就是将服务发布到注册中心去,将服务暴露出去,而提供者的服务已经独立成单独的项目了,
    所以这里暴露的地址是独立的接口项目打的jar包的地址。
  -->
    <dubbo:service interface="com.dubbo.api.api.service.CostService" ref="costService" protocol="dubbo" />

    <!--具体实现该接口的 bean-->
    <bean id="costService" class="com.dubbo.provider.provider.service.impl.CostServiceImpl"/>
</beans>

       》》为了使该配置文件生效,在 ConsumerApplication.java中添加注解:


@ImportResource(value = {"classpath:dubbo-provider.xml"})

   至此,本地dubbo项目已经创建完成,下一部分是 阿里云Linux中环境的配置

linux环境下的【zookeeper+dubbo-admin】配置

>zookeeper

  1. 在/root 目录下创建zookeeper文件夹(创建目录随意,这里以/root为例)
  2. mkdir zookeeper
    #进入zookeeper目录
    cd zookeeper
    #使用wget命令下载(没有wget,使用yum安装即可) zookeeper包
    wget http://apache.fayea.com/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 
    #解压
    tar zvxf zookeeper-3.4.14.tar.gz
    

     

  3.  在zookeeper目录下创建 data文件夹
     

    mkdir data

     

 

    4.进入/zookeeper/apache-zookeeper-3.5.6-bin/conf 目录下,将zoo_sample.cfg改名为 zoo.cfg并增加 data 的路径

 

 

cd apache-zookeeper-3.5.6-bin/conf 
#文件改名
mv zoo_sample.cfg zoo.cfg
#用vi编辑zoo.cfg文件
vi zoo.cfg

 

    添加data路径后,zoo.cfg文件如下:

退出并保存。

    5.启动zookeeper

       在zookeeper的 /bin 目录中 启动zookeeper
        ./zkServer.sh start

      使用./zkServer.sh status命令,如果控制台输出为

     

   就表示zookeeper配置成功了 

#zookeeper 其他的一些常用命令
查看zookeeper状态:./zkServer.sh status
停止zookeeper:./zkServer.sh stop
重启zookeeper:./zkServer.sh restart

>dubbo-admin

  1. https://github.com/apache/dubbo-admin.git下载dubbo-admin到windows环境,并解压
  2. 使用maven打包dubbo-admin
    mvn clean package
  3. 打包完成后,在 dubbo-admin-distribution/target 目录下 找到打好的jar包
    这一步如果有问题,可以下载我上传的jar包,在我上传的资源中可以找到
    //download.csdn.net/download/weixin_43681666/12032008
  4. 将jar包上传到linux服务器的 zookeeper文件夹下,并运行jar包
    nohup java -jar dubbo-admin-0.1.jar >dubbo-admin-logs.txt &
    #nohup命令:nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断信号。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
    #>logs.txt 表示输出文件。
    #&"符号结尾表示,让程序在后台运行。
    

     

  5. 使用ps + 管道符命令查看jar包是否运行成功,使用kill -9 进程号,可以杀死后台进程
    ps -ef|grep dubbo-admin-0.1.jar.jar
  6. 最后,如果你使用的是虚拟机,需要关闭防火墙或者打开2181(dubbo) 和 7001(dubbo) 端口,如果和我一样使用的是阿里云linux,需要设置安全组,打开对应端口
    可以在windows的cmd中使用 telnet 命令测试端口是否能够正常访问:
    telnet ip地址 端口号 

最终测试

 

      1.在IDEA中运行api,provider,consumer项目

 

      2.在浏览器中输入http://localhost:8062/add/100 ,其中100为传入的参数

      

    3.在浏览器输入 http://服务器IP:7001/ 查看dubbo-admin控制页面,账号密码都是root
    

登陆成功后,点击 服务查询,找到我们provider提供的服务:

至此,我们整个的项目就完成配置了,恭喜你! 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值