dubbo-zookeeper 单机以及集群搭建

项目做大了,开始使用分布式部署,学习了下dubbo的使用,dubbo版本使用的2.8.4, zookeeper版本是3.4.6

安装zookeeper3.4.6(单机)


下载zookeeper : http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/ 

在/usr目录下创建zookeeper文件夹, 解压zookeeper并移动到/usr/zookeeper/目录下

tar -zxvf ./zookeeper-3.4.6.tar.gz
mv ./zookeeper-3.4.6 /usr/zookeeper/zookeeper-3.4.6/

设置环境变量

export PATH=/usr/zookeeper/zookeeper-3.4.6/bin:$PATH

zookeeper的配置文件是zoo.cfg, 所以进入conf目录下, 复制zoo_sample.cfg 改名为zoo.cfg

cp zoo_sample.cfg zoo.cfg

到这里就配置完成了, 很简单吧

启动zookeeper

/usr/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start 

 

安装dubbo管理控制台 dubbo-admin

下载地址:https://github.com/dangdangdotcom/dubbox

需要自己使用maven打包,

我这里有打包好的war,下载直接使用

修改下WEB-INF/dubbo.properties

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

把war包放在tomcat/webapps中,启动tomcat,

浏览器访问地址: http://192.168.106.19:8080/dubbo-admin

默认账号: root

默认密码: root

安装dubbo监控 dubbo-monitor

下载地址:https://github.com/dangdangdotcom/dubbox

需要自己使用maven打包, 

我这里有改良后打包好的war,下载直接使用

修改下 application.properties

dubbo.application.name=dubbo-monitor
dubbo.application.owner=
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.port=7070

放在tomcat中启动tomcat

浏览器访问: http://192.168.106.19:8080/dubbo-monitor/

默认账号: admin

默认密码: admin

 

配置完成.

下面是代码部分

代码使用springboot 无xml配置方式.

代码目录结构

 

maven分模块这里就不细说了, 如果不会可以先去学习下.

服务提供者 dubbo-provider

maven依赖

<!-- dubbo 依赖 -->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>

        <!-- dubbo依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- zookeeper依赖 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!-- 引进接口依赖 -->
        <dependency>
            <groupId>com.bwton</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

application.yml 配置

server:
  port: 8081

## Dubbo 配置
spring:
  dubbo:
    application:            #应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
      name: dubbo-provider
      monitor:  # 添加monitor监控
        protocol: registry
    registry:                 #注册中心配置,用于配置连接注册中心相关信息。
      address: zookeeper://192.168.106.19:2181
    protocol:     #协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
      name: dubbo
      port: 20880
    scan: com.bwton.dubbo.provider.service.impl  #服务暴露与发现消费所在的package

service实现类

package com.bwton.dubbo.provider.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.bwton.dubbo.pojo.Do.UserDO;
import com.bwton.dubbo.pojo.vo.UserVO;
import com.bwton.dubbo.service.TestService;
import org.springframework.beans.BeanUtils;

/**
 * @author XueXianlei
 * @Description:
 * @date 2018/10/8 14:51
 */
@Service(version = "1.0.0")
public class TestServiceImpl implements TestService {

    @Override
    public UserVO getUser(String userName) {
        if (null == userName) {
            return null;
        }
        UserDO userDO = new UserDO();
        userDO.setId(1);
        userDO.setUserName(userName);
        UserVO userVO = new UserVO();
        BeanUtils.copyProperties(userDO, userVO);
        return userVO;
    }
}

 

服务消费者 dubbo-consumer

maven依赖和提供者一样

application.yml配置

server:
  port: 8082

spring:
  dubbo:
    application:            #应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
      name: dubbo-consumer
      monitor:  # 添加monitor监控
        protocol: registry
    registry:                 #注册中心配置,用于配置连接注册中心相关信息。
      address: zookeeper://192.168.106.19:2181
    protocol:     #协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
      name: dubbo
      port: 20880
    scan: com.bwton.dubbo.consumer.controller  #服务暴露与发现消费所在的package
    consumer:
      check: false

代码实现

package com.bwton.dubbo.consumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.bwton.dubbo.pojo.vo.UserVO;
import com.bwton.dubbo.service.TestService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author XueXianlei
 * @Description:
 * @date 2018/10/8 15:06
 */
@RestController
@RequestMapping("/test")
public class TestController {

    @Reference(version = "1.0.0")
    private TestService testService;

    @RequestMapping("/getUser")
    public UserVO getUser(String userName) {
        UserVO user = testService.getUser(userName);
        return user;
    }
}

启动服务提供者, 再启动服务消费者, 就可以调用了

 

下面说下集群搭建

安装zookeeper3.4.6(集群)

这里使用的伪集群, 即在一个服务器中(服务器有限)

复制zookeeper-3.4.6 3分, 分别为

zookeeper-3.4.6-server1

zookeeper-3.4.6-server2

zookeeper-3.4.6-server3

拿zookeeper-3.4.6-server1距离

进入目录, 创建data和logs两个文件夹

cd zookeeper-3.4.6-server1
mkdir data
mkdir logs

修改zoo.cfg文件

zookeeper-3.4.6-server1

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.6-server1/data
dataLogDir=/usr/zookeeper/zookeeper-3.4.6-server1/logs
clientPort=2181
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

zookeeper-3.4.6-server2

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.6-server2/data
dataLogDir=/usr/zookeeper/zookeeper-3.4.6-server2/logs
clientPort=2182
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

zookeeper-3.4.6-server3

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.6-server3/data
dataLogDir=/usr/zookeeper/zookeeper-3.4.6-server3/logs
clientPort=2183
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

 

 参数描述

initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.

syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.

server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.

创建ServerID标识  

除了修改zoo.cfg配置文件,集群模式下还要配置一个文件myid,这个文件在dataDir目录下,这个文件里面就有一个数据就是A的值,在上面配置文件中zoo.cfg中配置的dataDir路径中创建myid文件

echo "1" > /usr/zookeeper/zookeeper-3.4.6-server1/data/myid
echo "2" > /usr/zookeeper/zookeeper-3.4.6-server2/data/myid
echo "3" > /usr/zookeeper/zookeeper-3.4.6-server3/data/myid

启动zookeeper

/usr/zookeeper/zookeeper-3.4.6-server1/bin/zkServer.sh start 
/usr/zookeeper/zookeeper-3.4.6-server2/bin/zkServer.sh start 
/usr/zookeeper/zookeeper-3.4.6-server3/bin/zkServer.sh start 

 

dubbo-admin 修改 dubbo.properties

dubbo.registry.address=zookeeper://127.0.0.1:2181|zookeeper://127.0.0.1:2182|zookeeper://127.0.0.1:2183

dubbo-monitor 修改 application.properties

dubbo.registry.address=zookeeper://127.0.0.1:2181|zookeeper://127.0.0.1:2182|zookeeper://127.0.0.1:218

重启tomcat

 

代码注册中心地址修改, 改为zookeeper集群配置, 提供者和消费者都要改

server:
  port: 8082

spring:
  dubbo:
    application:            #应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
      name: dubbo-consumer
      registries[0]: #注册中心配置,用于配置连接注册中心相关信息。
        address: zookeeper://192.168.106.19:2181
      registries[1]:
        address: zookeeper://192.168.106.19:2182
      registries[2]:
        address: zookeeper://192.168.106.19:2183
      monitor:  # 添加monitor监控
        protocol: registry
    protocol:     #协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
      name: dubbo
      port: 20880
    scan: com.bwton.dubbo.consumer.controller  #服务暴露与发现消费所在的package
    consumer:
      check: false

集群搭建也完成了.

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值