zoukankan      html  css  js  c++  java
  • 160719、Spring + Dubbo + zookeeper (linux) 框架搭建

    转载一篇博客,写得不错(至少我参考一下搭建成功了)

    转载地址:http://my.oschina.net/wangt10/blog/522799

    dubbo简介

    节点角色说明:

    Provider: 暴露服务的服务提供方。

    Consumer: 调用远程服务的服务消费方。

    Registry: 服务注册与发现的注册中心。

    Monitor: 统计服务的调用次调和调用时间的监控中心。

    Container: 服务运行容器。

    调用关系说明:

    0. 服务容器负责启动,加载,运行服务提供者。

    1. 服务提供者在启动时,向注册中心注册自己提供的服务。

    2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

    3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。



    四个步骤

    1 搭建zookeeper消息中心

    2 搭建dubbo服务端代码

    3 写dubbo客户端代码

    4 dubbo提供的dubbo-admin-2.5.4.war 管理控制台

    一: 搭建zookeeper 消息中心

    1 下载zookeeper安装文件

        zookeeper-3.3.6.tar.gz

    2  执行命令 tar zxvf zookeeper-3.4.6.tar.gz 解压,
    3 到 zookeeper-3.3.6/conf 目录下

    把zoo_sample.cfg 复制一份为zoo.cfg,作为默认配置文件

    4 配置说明

    tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
    dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
    clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

    我的配置: 端口2181是默认配置

    5 在zookper-3.3.6/bin目录下执行

    ./zkServer.sh start 启动zookeeper

    6 验证zookeeper是否启动

    使用netstat -lpn | grep 2181 

    如果有端口号, 说明已经启动

    ps: 因为我linux 是装在虚拟机里面, zookeer在虚拟机里,  DubboServer , DubboClient , DubboAdmin 都是在windows上, 注意要开放linux的2181端口

    二 DubboServer 工程

    DubboServer段是一个web工程,服务提供者, 我这里是dubbo和spring结合搭建.

    spring的搭建过程,可参见  springmvc + mybatis配置

    我这里仅是搭建spring和dubbo的例子,使用的最少的配置

    1 测试代码编写

    2 dubbo的xml文件配置
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
    http://code.alibabatech.com/schema/dubbo
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <dubbo:application name="wt-dubbo-server"  />
    <!-- 消息中心地址 -->
    <dubbo:registry address="zookeeper://192.168.20.129:2181" check="false"/>
    <dubbo:protocol name="dubbo" port="20880" serialization="hessian2" />
    <!-- 声明接口 -->
    <dubbo:service interface="com.DubboServer" ref="dubboServer" />
    </beans>

    3 导出接口层的jar

    把server层的代码导出jar, 后面放到dubboClient中!!

    然后启动项目

    三 DubboClient工程

    dubboClient可以是web工程也可以是普通的javaproject.

    我也是用的spring集成,但是使用的是junit进行测试, 

    1 dubboclient端代码

    2 dubbo的xml配置
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
    http://code.alibabatech.com/schema/dubbo
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <dubbo:application name="dys-client"  />
    <!-- 消息中心地址 -->
    <dubbo:registry address="zookeeper://192.168.20.129:2181" check="false"/>
    <!-- 声明接口 -->
    <dubbo:reference id="dubboServer" interface="com.DubboServer" />
    </beans>
    3 测试运行client端代码(zookeeper 和 dubboServer端已经启动)

    运行成功!

    四 dubbo-admin-2.5.4.war 管理控制台

    把这个war包放到tomcat的webapps目录下 

    1 修改tomcat的端口号不要和其他服务冲突.

    2 修改 WEB-INF 下的dubbo.properties文件

    dubbo.registry.address=zookeeper://192.168.20.129:2181
    dubbo.admin.root.password=root
    dubbo.admin.guest.password=guest


    3 启动tomcat,访问.

    点击 服务治理--提供者 可看到如下,    还有一些其他的信息,再查阅吧,暂时我也不是很清楚

  • 相关阅读:
    java执行构造器和初始化字段的顺序
    java语言中的varargs
    对Java语言的byte类型变量进行无符号提升
    VisualStudio 切换帐号 (原帐号已过期且无法登录时用)
    C/C++ 的关系运算符采用短路运算
    实现std::string的ltrim、rtrim和trim方法
    Excel 用于批量把单元格设置为"文本格式保存的数字"的宏
    为什么要用webUI?
    CEF3中js调用delphi内部方法
    2016-1-1最新版本的linphone-android在mac上编译通过,同时建立了IDEA工程
  • 原文地址:https://www.cnblogs.com/zrbfree/p/5689147.html
Copyright © 2011-2022 走看看