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

正式配置前的一些说明:

  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. 总目录
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第1张图片
  2. api结构
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第2张图片
  3. consumer结构
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第3张图片
  4. provider结构
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第4张图片

 springboot项目创建

  1. 在IDEA中创建一个空项目
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第5张图片
  2. 在该空项目中创建三个model,model类型为springboot
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第6张图片
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第7张图片
    三个springboot model分别命名为api、provider、consumer,其中Develop tools选择Spring Web即可

    provider示例》》
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第8张图片
    Develop tools》》
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第9张图片
     
  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中添加依赖
     

            
            
                com.dubbo.api
                api
                0.0.1-SNAPSHOT
                compile
            
    
            
            
                com.alibaba.boot
                dubbo-spring-boot-starter
                0.2.0
            

    》》在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文件
            




    

    
    

    
    
    

    
    

    
    

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


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

       5.配置provider

        》》在provider的pom中添加依赖

        
        
            com.dubbo.api
            api
            0.0.1-SNAPSHOT
            compile
        

        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.2.0
        

 

》》在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文件
      




    
    
    

    
    
    
    
    

    
    

    
    

    
    
    

    
    

       》》为了使该配置文件生效,在 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文件如下:

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

退出并保存。

    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. 本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第11张图片
  5. 将jar包上传到linux服务器的 zookeeper文件夹下,并运行jar包
    nohup java -jar dubbo-admin-0.1.jar >dubbo-admin-logs.txt &
    #nohup命令:nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断信号。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
    #>logs.txt 表示输出文件。
    #&"符号结尾表示,让程序在后台运行。
    

     

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

最终测试

 

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

 

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

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

    3.在浏览器输入 http://服务器IP:7001/ 查看dubbo-admin控制页面,账号密码都是root
    本地【springboot+dubbo】+linux环境下的【zookeeper+dubbo-admin】配置入门【小白向,手把手教你配置】_第13张图片

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

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

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

你可能感兴趣的:(dubbo,zookeeper,dubboAdmin)