• 项目中dubbo的使用


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

      参考网站:http://dubbo.io/

    一、Dubbo-admin管理web工程配置

    复制代码
    部署dubbo-admin
        1、校验jdk安装:参考jdk安装
    java –version 
    2、安装tomcat:参考tomcat安装            
    3、yum install –y unzip
    rm –rf /usr/local/tomcat/webapp/ROOT/*
    unzip dubbo-admin-2.5.4.war –d /usr/local/tomcat/webapp/ROOT
    4、配置 hosts : vi /etc/hosts
           a、【root@localhost】 
                127.0.0.1  localhost
                127.0.0.1  root
           b、【root@lgp】 //lgp只是一个例子
                127.0.0.1  lgp
    5、启动服务
            ./usr/local/tomcat/bin/startup.sh
    复制代码

     

    二、Dubbo+Zookeeper部署

       1、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    :参考详情
    复制代码

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

    复制代码
        cd ..
        mkdir data
        mkdir logs
        touch /data/myid
        echo 1 > /home/lgp/ zookeeper-3.4.6/data/myid
       vi /etc/hosts
    复制代码

       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
    复制代码

      2、整合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

    三、Dubbo项目整合SpringMVC

      1、下载jar包

    复制代码
    maven导入所需jar包:dubbo、zookeeper、zkclient
        <dependency>
                        <groupId>com.alibaba</groupId>
                        <artifactId>dubbo</artifactId>
                        <version>2.5.3</version>
         </dependency>
    
    <!-- Zookeeper 用于分布式服务管理 -->
                    <dependency>
                         <groupId>org.apache.zookeeper</groupId>
                        <artifactId>zookeeper</artifactId>
                       <version>3.4.5</version>
                    </dependency>
                <dependency>
                        <groupId>com.101tec</groupId>
                        <artifactId>zkclient</artifactId>
                        <version>0.3</version>
                </dependency>
           <!-- Zookeeper 用于分布式服务管理 end -->
    复制代码

      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

    复制代码
    <?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="guduo-service-user" />
    
        <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" />
      <!—本机 -->
        <dubbo:protocol name="dubbo" port="20823" />
        <!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 -->
        <dubbo:monitor protocol="registry"/>
        <!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 -->
        <dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" />
        <!-- 服务接口 -->
        <dubbo:service retries="0" interface="com.guduo.service.system.UserReportService" ref="userReportService" />
    <dubbo:service retries="0" interface="com.guduo.service.system.UserSuggestionService" ref="userSuggestionService" />
    </beans>  
    复制代码

      spring-context.xml引入spring-dubbo-provider.xml

     

      5、consumer注册服务: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:application name="guduo-web-publish" />
        <!-- 使用zookeeper注册中心暴露服务地址 -->
        <!-- 注册中心地址 -->
        <dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" />
        <!-- 用户服务接口 -->
        <dubbo:reference interface="com.guduo.service.user.PmsActionService" id="pmsActionService" check="false"/>
        <dubbo:reference interface="com.guduo.service.user.PmsMenuService" id="pmsMenuService" check="false"/>
    </beans>  
    复制代码

    四、开发阶段,启动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);
                    }
                }
            }
        }
    }
  • 相关阅读:
    TC Asia Competition
    Codeforces 258 Div2
    斯坦纳树
    <算法竞赛入门经典> 第8章 贪心+递归+分治总结
    UVALive 6602 Counting Lattice Squares
    UVALive 6609 Minimal Subarray Length (查找+构建排序数组)
    vue中路由以及动态路由跳转
    sublime安装
    js数组转对象
    如何将变量做为一个对象的key,push进一个数组?
  • 原文地址:https://www.cnblogs.com/xwjBlog/p/6253049.html
Copyright © 2020-2023  润新知