zoukankan      html  css  js  c++  java
  • 搭建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监控中心看到

  • 相关阅读:
    【leetcode】1365. How Many Numbers Are Smaller Than the Current Number
    【leetcode】1363. Largest Multiple of Three
    【leetcode】1362. Closest Divisors
    【leetcode】1361. Validate Binary Tree Nodes
    【leetcode】1360. Number of Days Between Two Dates
    【leetcode】1359. Count All Valid Pickup and Delivery Options
    【leetcode】1357. Apply Discount Every n Orders
    【leetcode】1356. Sort Integers by The Number of 1 Bits
    ISE应用入门的一些问题
    DDR的型号问题
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7456065.html
Copyright © 2011-2022 走看看