美文网首页
springBoot+dubbo+zookeeper

springBoot+dubbo+zookeeper

作者: lb2018 | 来源:发表于2019-01-27 22:45 被阅读0次

    一、前言

                网上各种各样的列子,大部分都是复制,粘贴!按说明操作完全搭建不起来,决定亲自操作一把!@供大家学习参考。

    1、环境简绍

        centOS7、VMware15.0.0、zookeeper-3.4.10

    1、安装zookeeper,怎么下载就不说了,如果下载都不会,您嘞该转行了!开个玩笑!!

    xft客户端将zookeeper-3.4.10.tar.gz上传到/home/zookeeper中(看自己情况)

    解压tar -zxvf zookeeper-3.4.10.tar.gz

    修改配置文件

    cp  /home/zookeeper/zookeeper-3.4.10/conf/zoo_sample.cfg     /home/zookeeper /zookeeper-3.4.10/conf/zoo.cfg (其实就是将zoo_sample.cfg复制一份,名字修改为zoo.cfg)

    设置 vim zoo.cfg

    # The number of milliseconds of each tick

    tickTime=2000

    # The number of ticks that the initial

    # synchronization phase can take

    initLimit=10

    # The number of ticks that can pass between

    # sending a request and getting anacknowledgement

    syncLimit=5

    # the directory where the snapshot isstored.

    # do not use /tmp for storage, /tmp here isjust

    # example sakes.

    dataDir=/opt/zookeeper/data

    # the port at which the clients willconnect

    clientPort=2181

    # the maximum number of client connections.

    # increase this if you need to handle moreclients

    #maxClientCnxns=60

    #

    # Be sure to read the maintenance sectionof the

    # administrator guide before turning onautopurge.

    #

    #http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

    #

    # The number of snapshots to retain indataDir

    #autopurge.snapRetainCount=3

    # Purge task interval in hours

    # Set to "0" to disable autopurge feature

    #autopurge.purgeInterval=1

    dataLogDir=/opt/zookeeper/dataLog

    server.1=master:2888:3888

    server.2=slave1:2888:3888

    server.3=slave2:2888:3888

    备注:黑体部分是我们需要配置的地方

    dataDir 、dataLogDir创建出来

    mkdir /opt/zookeeper/data

    mkdir /opt/zookeeper/dataLog

     在/opt/zookeeper/data目录下新建myid并设置server.1中.后面的数字

    vim myid

    1

    :wq!

    cat myid

    1

    将master slave1 slave2映射到host的文件中

    vim /etc/host

    192.168.6.10 master

    192.168.6.11 slave1

    192.168.6.12 slave2

    :wq!

    设置环境变量

    vim /etc/profile

    export ZOOKEEPER_HOME=/home/zookeeper/zookeeper-3.4.10

    export PATH=$PATH:$ZOOKEEPER_HOME/bin

    :wq!

    设置开机启动

    在/etc/rc.d/init.d目录下新建zookeeper,并编辑

    vim zookeeper

    #!/bin/bash

    #chkconfig: 2345 10 90

    #description: service zookeeper

    export JAVA_HOME=/usr/java/jdk1.8.0_11

    export ZOO_LOG_DIR=/opt/zookeeper/dataLog

    ZOOKEEPER_HOME=/home/zookeeper/zookeeper-3.4.10

    su root ${ZOOKEEPER_HOME}/bin/zkServer.sh  "$1"

    :wq!

    为新建的/etc/rc.d/init.d/zookeeper文件添加可执行权限,命令是:

    chmod +x  /etc/rc.d/init.d/zookeeper

     把zookeeper这个脚本添加到开机启动项里面,命令是:

    chkconfig --add   zookeeper

    如果想看看是否添加成功,命令是:

          chkconfig  --list

    查看2181端口是否启用,执行命令:

      lsof  -i:2181

    启动zookeeper

    cd /home/zookeeper/zookeeper-3.4.10/bin

    ./ zkServer.sh start

    停止 ./zkServer.shstop

    查看状态 ./zkServer.sh status

    复制该机器上的zookeeper-3.4.10到其他服务器上(如果不想集群,下面绕过!)

    cd /home/

    scp -r zookeeper slave1:/home/

    scp -r zookeeper slave2:/home/

    slave1、slave2(slave1、slave2上面已经加入到hosts文件中了,否则你的用ip地址)做上面相同的配置

    查看zookeeper启动状态

    方法一

    service  zookeeper  status

    方法二

    lsof  -i:2181

    方法三

    netstat   -lntup

    客户端连接

    cd /home/zookeeper/zookeeper-3.4.10/bin/

    ./zkCli.sh -server 192.168.6.11:2181

    二、上面环境准备好后就可以开发项目了

    1、用IDEA开发(eclipse也是可以的,只是eclipse对xml提示太差!)

    2、先看下项目结构maven项目,按结构创建好项目

    sb_parent是maven父工程

    3、配置pom.xml

    sb_parent是maven父工程 pom.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0"

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <modelVersion>4.0.0

        <groupId>com.hewanqiang

        <artifactId>sb_parent

        <packaging>pom

        <version>1.0-SNAPSHOT

            <module>spring-boot-dubbo-provider

            <module>spring-boot-dubbo-consumer

                    <groupId>org.springframework.boot

                    <artifactId>spring-boot-dependencies

                    <version>2.0.6.RELEASE

                    <type>pom

                    <scope>import

                <groupId>org.springframework.boot

                <artifactId>spring-boot-starter-web

                <groupId>org.springframework.boot

                <artifactId>spring-boot-actuator

                <groupId>com.alibaba.boot

                <artifactId>dubbo-spring-boot-starter

                <version>0.2.0

                <groupId>org.apache.zookeeper

                <artifactId>zookeeper

                <version>3.4.9

                <groupId>com.github.sgroschupf

                <artifactId>zkclient

                <version>0.1

    </project>

    spring-boot-dubbo-provider 配置pom.xml(默认的)

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0"

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <parent>

            <artifactId>sb_parent</artifactId>

            <groupId>com.hewanqiang</groupId>

            <version>1.0-SNAPSHOT</version>

        </parent>

        <modelVersion>4.0.0</modelVersion>

        <artifactId>spring-boot-dubbo-provider</artifactId>

    </project>

    将spring-boot-dubbo-provider安装到本地仓库

    spring-boot-dubbo-consumer 配置pom.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0"

            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <parent>

            <artifactId>sb_parent</artifactId>

            <groupId>com.hewanqiang</groupId>

            <version>1.0-SNAPSHOT</version>

        </parent>

        <modelVersion>4.0.0</modelVersion>

        <artifactId>spring-boot-dubbo-consumer</artifactId>

        <dependencies>

            <dependency>

                <groupId>com.hewanqiang</groupId>

                <artifactId>spring-boot-dubbo-provider</artifactId>

                <version>1.0-SNAPSHOT</version>

            </dependency>

        </dependencies>

    </project>

    spring-boot-dubbo-provider 项目类创建

    IHelloService.java

    HelloServiceImpl.java

    DubboProvider.java


    package com.alibaba.edas.boot;

    public interface IHelloService {

    StringsayHello(String str);

    }

    package com.alibaba.edas.boot;

    import com.alibaba.dubbo.config.annotation.Service;

    @Service //这里的 Service 注解是 Dubbo 提供的一个注解类,类的全名称为

    public class HelloServiceImplimplements IHelloService {

    public StringsayHello(String name) {

    return "Hello, " + name +" (from Dubbo with Spring Boot)";

        }

    }

    package com.alibaba.edas.boot;

    import org.springframework.boot.SpringApplication;

    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication

    public class DubboProvider {

    public static void main(String[] args) {

    SpringApplication.run(DubboProvider.class,args);

        }

    }

    application.properties

    # Base packages to scan Dubbo Components (e.g @Service , @Reference)

    dubbo.scan.basePackages=com.alibaba.edas.boot

    dubbo.application.name=dubbo-provider-demo

    dubbo.registry.address=zookeeper://192.168.255.10:2181


    spring-boot-dubbo-consumer 项目类创建


    DemoConsumerController.java

    package com.alibaba.edas.boot;

    import com.alibaba.dubbo.config.annotation.Reference;

    import org.springframework.web.bind.annotation.PathVariable;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RestController;

    @RestController

    public class DemoConsumerController

    {

    @Reference //alibaba的注解 前提是已经导入了 spring-boot-dubbo-provider的jar包(用maven的install首先将其安装到本地仓库)

        private IHelloServicedemoService;

        @RequestMapping("/sayHello/{name}")//REST风格

        public StringsayHello(@PathVariable String name)

    {

    return demoService.sayHello(name);

        }

    }

    DubboConsumer.java

    package com.alibaba.edas.boot;

    import org.springframework.boot.SpringApplication;

    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication

    public class DubboConsumer {

    public static void main(String[] args) {

    SpringApplication.run(DubboConsumer.class,args);

        }

    }

    application.properties

    ##server.port=8089 springBoot 同时启动多个项目,需要修改端口

    server.port=8089

    dubbo.application.name=dubbo-consumer-demo

    dubbo.registry.address=zookeeper://192.168.255.10:2181

    运行 DubboProvider.java、DubboConsumer.java

    登路dubbo管理控制台(怎么安装百度),下载对应.war扔进tomcat webapp下面就可以了,当然还需修改点东西@zookeeper注册中心地址

    http://192.168.255.10:8080/dubbo-admin

    over!

    相关文章

      网友评论

          本文标题:springBoot+dubbo+zookeeper

          本文链接:https://www.haomeiwen.com/subject/tygnjqtx.html