zoukankan      html  css  js  c++  java
  • dubbo发布web服务实例

    dubbo角色与调用执行过程

    dubbo节点角色说明:
    provider: 暴露服务的服务提供方
    consumer: 调用远程服务的服务消费方
    registry: 服务注册于发现的注册中心
    monitor: 统计服务的调用次数和调用时间的监控中心
    container:服务运行容器

    dubbo调用关系说明:
    1、服务容器负责启动,加载,运行服务提供者
    2、服务提供者在启动时,向注册中心注册自己提供的服务
    3、服务消费者在启动时,向注册中心订阅自己所需的服务
    4、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
    5、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果的调用失败,则选择另一台调用
    6、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

    注册中心:
    zookeeper(建议使用2.3.3以上版本)
    dubbo未对zookeeper服务端做任何侵入修改,只需安装原生的zookeeper服务器即可.所有注册中心逻辑适配都在调用zookeeper客户端时完成

    zookeeper注册中心安装


    笔者环境:
    a)虚拟机centos
    IP地址:[192.168.1.107]

    b)zookeeper
    zk版本: [zookeeper-3.4.6]
    1、修改/etc/hosts文件添加host"192.168.1.107 zk-provider" 如下
    [root@localhost local]# vim /etc/hosts
    [root@localhost local]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.1.107 zk-provider
    2、解压zookeeper-3.4.6到/usr/local/
    [root@localhost zookeeper-3.4.6]# pwd
    /usr/local/zookeeper-3.4.6
    3、在/usr/local/zookeeper-3.4.6目录下创建目录:
    [root@localhost zookeeper-3.4.6]# mkdir logs
    [root@localhost zookeeper-3.4.6]# mkdir data
    4、将/usr/local/zookeeper-3.4.6/conf目录下的zoo_sample.cfg复制一份,命名为zoo.cfg
    [root@localhost conf]# pwd
    /usr/local/zookeeper-3.4.6/conf
    [root@localhost conf]# cp zoo_sample.cfg zoo.cfg
    5、修改zoo.cfg文件内容如下:
    [root@localhost conf]# cat zoo.cfg
    tickTime=2000
    #initLimit这个配置项是用来配置zookeeper接口客户端
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper-3.4.6/data
    dtaLogDir=/usr/local/zookeeper-3.4.6/logs
    clientPort=2181
    server.1=zk-provider:2888:3888
    说明:server.1=zk-provider:2888:3888等同于server.1=192.168.1.107:2888:3888
    6、在/usr/local/zookeeper-3.4.6/data下创建myid文件,输入当前服务机器所对应的编号
    [root@localhost data]# pwd
    /usr/local/zookeeper-3.4.6/data
    [root@localhost data]# ls
    myid
    [root@localhost data]# cat myid
    1
    [root@localhost data]#
    7、将zookeeper配置到环境变量
    [root@localhost data]# vim /etc/profile

      在文件末尾增加

    # zookeeper env
    export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
    export PATH=$ZOOKEEPER_HOME/bin:$PATH

      保存退出,使配置生效

    [root@localhost data]# source /etc/profile
    8、在防火墙打开要用到得到端口2181、2888、3888
    [root@localhost data]# vim /etc/sysconfig/iptables
      在COMMIT之前增加如下:
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
      重启防火墙
    [root@localhost data]# service iptables restart
    [root@localhost data]# service iptables status
    9、启动zookeeper
    [root@localhost zookeeper-3.4.6]# /usr/local/zookeeper-3.4.6/bin/zkServer.sh start
    JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    # 查看状态
    [root@localhost zookeeper-3.4.6]# zkServer.sh status
    JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
    Mode: standalone
    # 查看输出的服务信息
    [root@localhost zookeeper-3.4.6]# tail -500f /usr/local/zookeeper-3.4.6/bin/zookeeper.out
    10、配置zookeeper随机启动
    [root@localhost zookeeper-3.4.6]# vim /etc/rc.local
    # 增加如下命令
    /usr/local/zookeeper-3.4.6/bin/zkServer.sh start
    
    
    dubbo服务发布与调用
    1、服务发布
    <?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="ws-server-user" />
    
        <!-- 使用zookeeper注册中心暴露服务地址 -->
        <dubbo:registry protocol="zookeeper" address="192.168.1.107:2181" />
    
        <!-- 用dubbo协议在20880端口暴露服务 -->
        <dubbo:protocol name="dubbo" port="20880" />
    
        <bean id="userFacade" class="com.ws.server.UserFacadeImpl" />
        <!-- 用户服务接口 -->
        <dubbo:service interface="com.ws.facade.UserFacade" ref="userFacade" />
    
    </beans>  
    
    
    2、服务调用
    <?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="ws-client-invoke-user" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <!-- 注册中心地址 --> <dubbo:registry protocol="zookeeper" address="192.168.1.107:2181" /> <!-- 用户服务接口 --> <dubbo:reference interface="com.ws.facade.UserFacade" id="userFacadeClient" check="false"/> </beans>
    
    
    实例demo: http://files.cnblogs.com/files/dennisit/dubbo-ws.zip

    转载请注明出处:[http://www.cnblogs.com/dennisit/p/4542901.html]
  • 相关阅读:
    锁:synchronized原理
    锁:synchronized与Lock的区别
    锁:java内存模型JMM(JMM)
    spring:Beanfactory和ApplicationContext、BeanFactory 和 FactoryBean
    锁:synchronized(synchronized保证三大特性、synchronized的特性)
    JS类的继承
    JS类—class
    json数据格式
    软件工程的bug
    软件工程的历史
  • 原文地址:https://www.cnblogs.com/dennisit/p/4542901.html
Copyright © 2011-2022 走看看