• 搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下)


    1.zookeeper注册中心的配置安装

     1.1 下载zookeeper包(zookeeper-3.4.6.tar.gz),ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字   服务、分布式同步、组服务等。

    1.2  将下载的包解压,然后在.zookeeper-3.4.6conf路径下找到:zoo_sample.cfg文件,这个是配置的实例文件,参考这个文件建立zoo.cfg文件  

    # The number of milliseconds of each tick//ZK中的一个时间单元2000ms
    tickTime=2000
    # The number of ticks that the initial
    # synchronization phase can take//Leader允许Follower在initLimit时间内完成初始化工作。
    initLimit=10
    # The number of ticks that can pass between
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.\就是把内存中的数据存储成快照文件snapshot的目录
    dataDir=E:\dubbo\zookeeperB\data
    # the port at which the clients will connect
    clientPort=2181

    1.3 然后点击E:softwarezookeeper-3.4.6in路径下面的zkServer.cmd启动zookeeper

    2.dubboadmin监控中心的安装配置

    首先下载tomacat,安装配置(略)
    下载dubbo-admin包(dubbo-admin-2.8.4.war)
    找到 tomcat安装路径下的 .webappsROOT目录,然后清空里面的所有文件
    将dubbo-admin包(dubbo-admin-2.8.4.war)解压到此文件中
    在解压的文件中找到WEB-INF文件夹下的dubbo.properties文件,然后进行配置,默认属性配置如下:
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    dubbo.admin.root.password=root
    dubbo.admin.guest.password=guest
    然后启动tomcat(zookeeper已启动,此步tomcat要访问zookeeper,如果zk没有启动,tomcat会一直等待其启动)。在浏览器中输入http://127.0.0.1:8080/dubbo-admin-2.8.4,进入监控中心的管理界面(默认管理员账户密码为:root,root)

    3.编写生产者和消费者

    3.1 定义生产者需要提供给消费者调用的服务接口

        

     public interface PmsUserFacade{
    
          public PmsUser getById(Long userId);
    
    }

    3.2 生产者实现接口

    @Service("pmsUserFacade")
    public class PmsUserFacadeImpl implements PmsUserFacade {
    
    @Autowired
    private PmsUserBiz pmsUserBiz;
    
    public PmsUser getById(Long userId) {
    return pmsUserBiz.getById(userId);
    }
    
    }

    3.3生产者发布提供给消费者的接口到zookeeper注册中心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="gw-service-user" />
    
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry protocol="zookeeper" address="192.168.152.1:2181" />
    
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    
    <!-- 暴露的用户服务接口 -->
    <dubbo:service interface="lgs.user.service.PmsUserFacade" ref="pmsUserFacade" />
    
    </beans>

    3.4 消费者通过dubbo配置文件获取生产者发布到zookeeper注册中心的服务接口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="edu-web-boss" />
    
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <!-- 注册中心地址 -->
    <dubbo:registry protocol="zookeeper" address="192.168.152.1:2181" />
    
    <!-- 需要从zookeeper注册中心获取用户服务接口 check="false"表示访问的时候才检测接口是否存在,启动时不检测 -->
    <dubbo:reference interface="lgs.user.service.PmsUserFacade" id="pmsUserFacade" check="false" />
    
    </beans>

    3.5 消费者获取到zookeeper注册中心的接口以后调用生产者获取数据

    @Scope("prototype")
    public class PmsUserAction extends BaseAction {
    
    public String viewPmsUserUI() {
    try {
    Long userId = getLong("id");
    PmsUser pmsUser = pmsUserFacade.getById(userId);
    if (pmsUser == null) {
    return operateError("无法获取要查看的数据");
    }
    
    this.putData("UserStatusEnumList", UserStatusEnum.values());
    this.putData("UserStatusEnum", UserStatusEnum.toMap());
    this.putData("UserTypeEnumList", UserTypeEnum.values());
    this.putData("UserTypeEnum", UserTypeEnum.toMap());
    
    this.pushData(pmsUser);
    return "PmsUserView";
    } catch (Exception e) {
    log.error("== viewPmsUserUI exception:", e);
    return operateError("获取数据失败");
    }
    }
    
    }

     3.6 分别启动生产者和消费者就能在dubboadmin监控中心看到对应的服务,也可以看到生产者服务暴露的接口,这里要注意:消费者要通过页面访问以后才能在dubboadmin监控中心看到

  • 相关阅读:
    NserviceBus+rabbitmq
    c#调用Mysql带参数的存储过程
    datatable list 之前相互转换
    (gridcontrol等)通用导出excel z
    异步数据库查询 Z
    Gridview导出EXCEL(多页) z
    [自制简单操作系统] 4、计时器(线性表实现优化中断)
    [JAVA] 基于TCP的起重机运行模拟器
    [自制简单操作系统] 3、内存管理和窗口叠加
    [自制简单操作系统] 2、鼠标及键盘中断处理事件[PICGDTIDTFIFO]
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7456065.html
Copyright © 2020-2023  润新知