springBoot+dubbo+zookeeper

一、前言

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

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!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容