Dubbo+Zookeeper 教学及环境搭建

单机模式安装zookeeper

1,下载zookeeper注册中心,下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下载后解压即可,进入E:\zookeeper-3.3.6\zookeeper-3.3.6\bin,

2,在你执行启动脚本之前,还有几个基本的配置项需要配置一下,Zookeeper的配置文件在 conf 目录下,这个目录下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是将zoo_sample.cfg 改名为 zoo.cfg,因为 Zookeeper在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。

   •tickTime:这个时间是作为Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

   •dataDir:顾名思义就是 Zookeeper保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

   •dataLogDir:顾名思义就是Zookeeper 保存日志文件的目录

   •clientPort:这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求

配置好后,

双击zkServer.cmd启动注册中心服务。

zkServer.sh【Linux】或zkServer.cmd【Windows】

扫描二维码关注公众号,回复: 3669017 查看本文章

zookeeper会监听本机的2181端口。

当这些配置项配置好后,你现在就可以启动 Zookeeper 了,启动后要检查 Zookeeper 是否已经在服务,可以通过 netstat – ano 命令查看是否有你配置的 clientPort 端口号在监听服务。

Dubbo的管理页面

环境准备

  本案例使用环境:jdk(1.7)、tomcat(tomcat8) 注意:经测试  jdk9和tomcat7运行会报错

搭建dubbo-admin控制台(可选)

1、下载源码安装 ,下载地址:https://pan.baidu.com/s/1t2kFuFQeX35g3jjoARDj-w

也可以选择下载对应的版本。

2、解压后,打开cmd进入dubbo-admin目录下,如我解压的目录为:D:\Test\dubbo-master\dubbo-admin,在cmd下输入命令:mvn clean install

3、在target目录下生成dubbo-admin-2.5.8.war,然后将该war包放入tomcat的webapps目录下,启动tomcat, 访问localhost:[端口]/dubbo-admin-2.5.8,输入默认的用户名和密码:guest/guest

例如我访问的地址为:http://localhost:8088/dubbo-admin-2.5.8/

如果提服务向注册中心注册则可以点击服务治理查看

项目结构

服务提供者

在dubbo-api定义服务接口(提供方和消费方共享)

package com.wzy.dubbo.demo;

import java.util.List;

/**
 * Created by wy on 2017/4/13.
 */
public interface DemoService {
    List<String> getPermissions();
}

在服务提供方(dubbo-consumer)实现接口:(对服务消费方隐藏实现)

package com.wzy.dubbo.demo.impl;

import com.wzy.dubbo.demo.DemoService;

import java.util.ArrayList;
import java.util.List;

public class DemoServiceImpl implements DemoService {
    public List<String> getPermissions() {
        List<String> demo = new ArrayList<String>();
        demo.add("1");
        demo.add("2");
        demo.add("3");
        return demo;
    }
}

用Spring配置声明暴露服务:

<?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-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="demotest-provider" owner="programmer" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.wzy.dubbo.demo.DemoService" ref="demoService" protocol="dubbo" />
    <dubbo:service interface="com.wzy.dubbo.demo.UserService" ref="userService" protocol="dubbo" />


    <!--具体实现该接口的 bean-->
    <bean id="demoService" class="com.wzy.dubbo.demo.impl.DemoServiceImpl"/>
    <bean id="userService" class="com.wzy.dubbo.demo.impl.UserServiceImpl"/>
</beans>

加载Spring配置,启动服务(或者将项目建为web项目,然后在web.xml中配置好spring的启动,然后扔到tomcat中即可提供服务):

package com.wzy.dubbo.demo.impl;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * Created by wy on 2017/4/13.
 */
public class Provider {
        public static void main(String[] args) throws IOException {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            System.out.println(context.getDisplayName() + ": here");
            context.start();
            System.out.println("服务已经启动...");
            System.in.read();
        }
    }

服务消费者

通过Spring配置引用远程服务:

<?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="demotest-consumer" owner="programmer" organization="dubbox"/>
    <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 生成远程服务代理,可以像使用本地bean一样使用permissionService -->
    <dubbo:reference id="demoService" interface="com.wzy.dubbo.demo.DemoService"/>
</beans>

调用服务测试:

package com.wzy.dubbo.consumer;

import com.wzy.dubbo.demo.DemoService;
import com.wzy.dubbo.demo.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Consumer {
    /*public static void main(String[] args) {
        //测试常规服务
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        System.out.println("consumer start");
        DemoService demoService = context.getBean(DemoService.class);
        System.out.println("consumer");
        System.out.println(demoService.getPermissions());

    }*/
    public static void main(String[] args) {
        //测试常规服务
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        System.out.println("consumer start");
        DemoService demoService = context.getBean(DemoService.class);
        System.out.println("consumer");
        System.out.println(demoService.getPermissions());

    }
}

测试结果

consumer
[1, 2, 3]

项目下载https://pan.baidu.com/s/1Pf6plwwKeZceTPIEI7Ogkw

猜你喜欢

转载自blog.csdn.net/qq_33391644/article/details/83010701