• Dubbo项目搭建(简单部署)


    导语:Dubbo是阿里巴巴的一个分布式服务的开源框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    参考网站:http://dubbo.io/
      
    部署环境:Windows7+Eclipse+Spring+SpringMVC+Mybatis+ Maven3.2.2+Tomcat

    前言:项目梗概

    1.dubbo是用来解决分布式提供服务的,目的就是按照业务逻辑模块将一个大工程分成多个服务,可能每个服务就只为一个业务模块提供服务,这样一个大工程就可以拆分成多个小工程服务模块组装而成。由接口层Interface、服务层Provider、消费层Consumer三层,如下图:
    这里写图片描述

    2.各层的分工职责:

    接口层Interface:仅仅提供service接口,

    服务层Provider:提供真正的服务实现
       
       消费层Consumer:消费服务

    Interface层是个jar包的形式,会在Provider和Consumer层pom文件中引入。Consumer层调用Interface层的服务接口,而不会直接去调用Provider层的服务实现。真正的Provider服务实现通过在zookeeper注册暴露服务接口的方式提供服务。
      
    一、准备工作
    1、Web工程配置:
    a、校验jdk安装:参考jdk安装( java –version查看版本,建议使用1.7)
    b、安装tomcat:tar解压到文件夹
    c、yum install –y unzip
    rm –rf /usr/local/tomcat/webapp/ROOT/* (清空Root目录下的内容)
    unzip dubbo-admin-2.5.4.war –d /usr/local/tomcat/webapp/ROOT(安装dubbo-admin管理工具(直接将dubbo-admin项目放到服务器tomcat/webapps下面))
    d、配置 hosts : vi /etc/hosts (配置相应的DNS)
    a、【root@localhost】
    127.0.0.1 localhost
    127.0.0.1 root
    b、【root@lgp】 //lgp只是一个例子
    127.0.0.1 lgp
    e、启动tomcat服务
    ./usr/local/tomcat/bin/startup.sh

    2、zookeeper部署
     a、先安装单台

    yum -y install openssh-clients    :安装scp,用于不同机器上复制文件
        mkdir /home/lgp  :创建包用于存放 zookeeper
        cp –rf zookeeper-3.4.6.tar.gz /home/lgp
        cd /home/lgp
        tar -xzvf zookeeper-3.4.6.tar.gz
        cd zookeeper-3.4.6/conf/
        mv zoo_sample.cfg   zoo.cfg
        vi zoo.cfg    :参考详情
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    server.X=A:B:C # 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 这里的x是一个数字,与myid文件中的id是一致的.
    这里写图片描述

        cd ..
        mkdir data    //zk数据存储地址
        mkdir logs    //zk日志存放地址
        touch /data/myid
        echo 1 > /home/lgp/ zookeeper-3.4.6/data/myid
       vi /etc/hosts
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里写图片描述

    b、集群

    复制:对应的机器创建 /home/lgp 
          yum -y install openssh-clients
    
          修改对应 相应的myid 以及etc/hosts
    
    scp /home/lgp/zookeeper-3.4.6 192.168.1.81:/home/lgp  //跨机器复制
    
    启动服务:
        service iptables stop:分别关闭对应机器的 iptables
        cd /home/lgp/zookeeper-3.4.6/bin
        ./bin/zkServer.sh start :开启zookeeper
        ./bin/zkServer.sh status :状态查询
        ./bin/zkServer.sh stop :关闭zookeeper
    复制代码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    三、整合zookeeper

    cd /usr/local/tomcat/webapp/ROOT/WEB-INF
    vi dubbo.properties
    pwd:/usr/local/apache-tomcat-7.0.61/webapps/ROOT/WEB-INF   dubbo.properties
    
    • 1
    • 2
    • 3

    这里写图片描述

    四、Dubbo项目整合SpringMVC
    1.maven配置

    
        
            com.alibaba
            dubbo
            2.5.3
            
                
                    org.springframework
                    spring
                
            
        
        
        
            org.apache.zookeeper
            zookeeper
            3.4.5
        
        
            com.101tec
            zkclient
            0.3
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2、eclipse配置dubbo.xsd,解决标签不识别的问题

    百度云盘:https://pan.baidu.com/s/1nuIKgMd

    路径:http://code.alibabatech.com/schema/dubbo/dubbo.xsd

    这里写图片描述

    3、在.properties配置zookeeper的注册地址
    dubbo.registry.address=192.168.1.72:2181,192.168.1.73:2182,192.168.1.74:2183

    4、service提供服务:spring-dubbo-provider.xml

    
    
    
    
        
        
        
        
    
        
        
           
        
        
        
        
        
    
       
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    说明:address可以配置多个,若是zookeeper集群了,这里就应该配置多个zookeeper的地址

    dubbo:protocol标签是用来配置服务提供方和服务适用方的网络协议的,详细:dubbo支持的常见协议

    dubbo:service标签用来声明服务,timeout为超时时间

    5、spring-context.xml引入spring-dubbo-provider.xml
    这里写图片描述

    6、在provider项目pom.xml中添加

    
      
          quicksure_Server_Provider
          
              
                  ${project.build.directory}/classes
                  src/main/resources
                  true
                  
                      **/*.xml
                      **/*.properties
                  
              
              
              
                  ${project.build.directory}/classes/com/quicksure/insurance/mapper
                  src/main/java/com/quicksure/insurance/mapper
                  true
                  
                      **/*.xml
                  
              
              
              
                  ${project.build.directory}/classes/com/quicksure/insurance/velocity/template
                  src/main/java/com/quicksure/insurance/velocity/template
                  true
                  
                      **/*.xml
                  
              
              
              
                  ${project.build.directory}/classes/META-INF/spring
                  src/main/resources
                  true
                  
                      spring.xml
                  
              
          
          
              
                  
                  
                      org.apache.maven.plugins
                      maven-jar-plugin
                      2.6
                      
                          target/classes/
                          
                              
                                  com.alibaba.dubbo.container.Main
                                  
                                  
                                  false
                                  true
                                  lib/
                              
                              
                                  .
                              
                          
                      
                  
                  
                  
                      org.eclipse.m2e
                      lifecycle-mapping
                      1.0.0
                      
                          
                              
                                  
                                      
                                          org.apache.maven.plugins
                                          maven-dependency-plugin
                                          [2.0,)
                                          
                                              copy-dependencies
                                          
                                      
                                      
                                          
                                      
                                  
                              
                          
                      
                  
              
          
      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93

    7、配置服务消费方的xxx-consumer.xml

    
    
    
    
        
        
    
        
        
    
        
        
    
        
        
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    说明:这里address和提供方一样,不用过多阐述

    dubbo:prorocol内的port与服务提供方端口一致就行了

    dubbo:reference标签内的url,这个参数很重要,当一个团队有多个人在开发时,每个人都要把自己本机的服务注册到zookeeper上,若不加这个url参数的话,就会默认调一个服务,大家都会去调同一个服务,为防止这样的事情,加上url就好了,同一个zookeeper上port也不能重复,url配置模板:url=“dubbo://ip:服务端口”

    8、将消费方的xxx-consumer.xml配置进消费方的spring.xml中

    
        
    
    • 1
    • 2

    9、开发阶段启动dubbo服务,需要写一个主方法启动,但是如果打成jar包启动,dubbo会使用自己封装的启动方法去启动(也就可以将自己写的这个主方法删除了),这也是为什么会在pom.xml里面配置将spring.xml打包到classpath:spring/xxx.xml,这是dubbo封装的启动类指定路径(xxx.xml文件名没有要求)

    dubbo项目打包可以参考:dubbo打包教程

    public class Launcher {
        private static Log logger = LogFactory.getLog(Launcher.class);
    
        /**
         * @param args
         * 本地启动所需的主方法
         */
        public static void main(String[] args) {
          getLocalip();
          logger.info("---****Provider 启动****-----");
          ClassPathXmlApplicationContext context = 
                  new ClassPathXmlApplicationContext("classpath:spring.xml");
          context.start();
          System.out.println("Provider Server Started!");
          try{
              System.in.read();
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    五、dubbo项目部署

    1、先将interface接口层打包成jar,直接打包到相应的maven本地库下

    命令:mvn clean install

    2、将provider服务提供项目打包成jar,然后将该项目所需的第三方依赖jar包手动copy到一个新建的lib文件夹(这个文件是在provider项目的pom.xml内指定了第三方jar包的获取路径),把provider项目jar包和lib文件夹放在同一目录下

    启动:

    a、若是本机上的话,cmd命令:Java -jar xxx.jar

    b、Linux下,命令:nohup java -jar xxx.jar & (这是可在后台执行的,即使Ctrl+C也不会影响程序的后台运行)

    3、将consumer项目打成war包,然后放在tomcat内启动就行了

    Linux下命令:ps -ef | grep tomcat

    kill -9 pid

    ./startup.sh

    六、开发阶段,启动Dubbo服务

    建议放在”src/test”目录下面

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * 
     * @描述: 启动Dubbo服务用的MainClass.
     * @作者: 刘广平
     * @创建时间: 2016-9-5,下午9:47:55 .
     * @版本: 1.0 .
     */
    public class DubboProvider {
    
        private static final Log log = LogFactory.getLog(DubboProvider.class);
    
        public static void main(String[] args) {
            try {
                ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");
                context.start();
            } catch (Exception e) {
                log.error("== DubboProvider context start error:",e);
            }
            synchronized (DubboProvider.class) {
                while (true) {
                    try {
                        DubboProvider.class.wait();
                    } catch (InterruptedException e) {
                        log.error("== synchronized error:",e);
                    }
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    jdk下载地址
    tomcat下载地址
    dubbo-admin-2.5.4.war下载地址

  • 相关阅读:
    Linux 上的 .NET 如何自主生成 Dump
    markdown语法整理
    微软微服务构建框架Dapr基础入门教程
    【mycat】mycat安装
    GD32 看门狗
    新版Logcat体验与分享—NEW Logcat in Android Studio Dolphin
    K8S安装过程十一:istio 服务网格与 Ingress 部署
    Spring 接口日志切片记录
    vulnhub靶场之CONTAINME: 1
    Vue 项目快速上手
  • 原文地址:https://blog.csdn.net/m0_54883970/article/details/126358021