SpingBoot+Dubbo+Zookeeper实现简单分布式开发的应用详解

开始接触分布式概念,学习之前要准备搭建Dubbo和Zookeeper环境的简单搭建。

Window下安装Zookeeper和Dubbo-admin

1、Apache官网下载Zookeeper

点击官网地址下载最新版

下载完成后,打开apache-zookeeper-3.6.2-bin\bin下zkServer.cmd,正常第一次都会闪退的,因为没有配置好zoo.cfg配置文件。

将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg

在apache-zookeeper-3.6.2-bin目录下新建两个文件夹data和log

修改zoo.cfg配置文件

(修改dataDir的路径和增加dataLogDir分别对应刚刚新建的data和log文件夹)

然后运行bin下zkServer.cmd(不关闭)

再运行zkCli.cmd

证明zookeeper搭建成功(详细的安装步骤百度一大堆)

2、GitHub下载Dubbo-admin

去GitHub里面下载:点击GitHub地址

下载完解压到自己习惯的位置

打开到根目录,本地地址前面加cmd 进入控制台,运行代码,打包dubbo-admin

mvn clean package -Dmaven.test.skip=true

命令行运行 dubbo-admin\target 下的dubbo-admin-0.0.1-SNAPSHOT.jar

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

执行完毕,我们去访问一下 http://localhost:7001/ , 这时候我们需要输入登录账户和密码,我们都是默认的root-root;

登录成功后,查看界面

3、SpringBoot + Dubbo + Zookeeper

框架搭建

  • 启动zookeeper !
  • IDEA创建一个空项目,项目选择最下面那个Empty Project;
  • 创建一个模块,选择Spring Initializr,实现服务提供者:provider-server ,选择web依赖即可
  • 创建一个模块,选择Spring Initializr,实现服务消费者:consumer-service,选择web依赖即可

项目创建完毕;

pom.xml配置文件引入Dubbo + zookeeper

<!-- Dubbo Spring Boot Starter -->
    <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>2.7.3</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
    <dependency>
      <groupId>com.github.sgroschupf</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.1</version>
    </dependency>

    <!-- 引入zookeeper -->
    <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-framework</artifactId>
      <version>2.12.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-recipes</artifactId>
      <version>2.12.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.4.14</version>
      <!--排除这个slf4j-log4j12-->
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

在provider-server项目下写一个服务

TicketService.java

public interface TicketService {

  public String getTicket();
}

TicketServiceImpl.java

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

//zookeeper:服务注册与实现

@Service  //可以被扫描到,在项目一启动就自动注册到注册中心
@Component //使用了dubbo后,注意不要用到spring的service注解
public class TicketServiceImpl implements TicketService {
  @Override
  public String getTicket() {
    return "枫";
  }
}

在consumer-server项目下写一个消费者服务

UserService.Java

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

@Service// 注入容器中,用spring的注解
public class UserService {

  //要拿到provider-service提供的票,要去注册中心
  @Reference  //引用,导入dubbo的包。正常开发引用pom坐标,但是可以定义路径相同的接口名
  TicketService ticketService;

  public void buyTicket(){
    String ticket = ticketService.getTicket();

    System.out.println("在注册中心拿到=》"+ticket);
  }
}

在provider-service的配置文件中配置dubbo相关属性!

11. 在consumer-service的配置文件中配置dubbo相关属性!

12. 本来正常步骤是需要将服务提供者的接口打包,然后用pom文件导入,我们这里使用简单的方式,直接将服务的接口拿过来,路径必须保证正确,即和服务提供者相同;

将provider-service的TicketService复制一份到consumer-service注意要相同目录

启动两个项目的启动类,注意配置文件中的端口号配置成不一样的,然后打开http://localhost:7001登录,服务治理-服务

提供者和消费者都有显示,搭建成功,后台一定要挂着zookeeper的服务。

总结

这就是SpingBoot + dubbo + zookeeper实现分布式开发的应用,其实就是一个服务拆分的思想。只是一个小小的实现,个人感觉还是挺容易理解的,主要是搭建zookeeper的环境要注意下细节,还有项目中导包注解不要导错,因为@service有两个选择,一个是spring一个是dubbo的。还有就是正常开发是需要将服务提供者的接口打包,然后用pom文件导入,我们这里使用简单的方式,直接将服务的接口拿过来,路径必须保证正确,即和服务提供者相同,正常开发步骤还没学到,后面持续学习中,有相关案例再分享吧0.0。

到此这篇关于SpingBoot+Dubbo+Zookeeper实现简单分布式开发的应用详解的文章就介绍到这了,更多相关SpingBoot+Dubbo+Zookeeper分布式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python通过zookeeper实现分布式服务代码解析

    借助zookeeper可以实现服务器的注册与发现,有需求的时候调用zookeeper来发现可用的服务器,将任务均匀分配到各个服务器上去. 这样可以方便的随任务的繁重程度对服务器进行弹性扩容,客户端和服务端是非耦合的,也可以随时增加客户端. zk_server.py import threading import json import socket import sys from kazoo.client import KazooClient # TCP服务端绑定端口开启监听,同时将自己注册到z

  • SpringBoot中dubbo+zookeeper实现分布式开发的应用详解

    总体实现思路是启动一个生产者项目注册, 将所含服务注册到zookeeper的注册中心, 然后在启动一个消费者项目,将所需服务向zookeeper注册中心进行订阅, 等待注册中心的通知 注册中心基于负载均衡算法给消费者匹配到合适的生产者主机,然后通知消费者可以使用 实现生产者 导入zookeeper依赖包 <!-- Dubbo Spring Boot Starter --> <dependency> <groupId>org.apache.dubbo</groupI

  • springcloud集成zookeeper的方法示例

    为什么使用zookeeper Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理. zookeeper 核心 Zookeeper的数据模型是树结构,在内存数据库中,存储了整棵树的内容,包括所有的节点路径.节点数据.ACL信息,Zookeeper会定时将这个数据存储到磁盘上. zoo

  • 在Java中操作Zookeeper的示例代码详解

    依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.0</version> </dependency> 连接到zkServer //连接字符串,zkServer的ip.port,如果是集群逗号分隔 String connectStr = "192.

  • 基于Spring Cloud Zookeeper实现服务注册与发现

    服务注册 1.添加Spring Cloud Zookeeper依赖: <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <exclusions> <exclusion> <grou

  • SpringCloud用Zookeeper搭建配置中心的方法

    本文介绍了SpringCloud +Zookeeper完成配置中心,分享给大家,具有如下: 使用场景 项目配置更改不需要打包,重启 提供配置文件的可视化界面 和springcloud快速整合 为什么使用zookeeper Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理. 怎么使

  • 如何用python 操作zookeeper

    ZooKeeper 简介 ZooKeeper 是一个分布式的.开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等.ZooKeeper 支持大部分开发语言,除了某些特定的功能只支持 Java 和 C.python 通过 kazoo 可以实现操作 ZooKeeper . 一.安装 这个简单,使用 pip 命令安装 pip3

  • 2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)

    首先,要在电脑上安装配置好zookeeper哦~ 这是我云服务器上的zookeeper状态 接下来,开始整合 1. 准备一个dubbo-api的SpringBoot项目 用来存储Entity类和Server接口的项目,配置文件无须改动. entity – User // Lombok注解 相当于Setter Getter toString() @Data public class User implements Serializable { // 序列化很重要!!! private static

  • SpringBoot系列教程之dubbo和Zookeeper集成方法

    今日学习新的内容:dubbo   dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. zookeeper   zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. SpringBoot整合dubbo和Zookeeper 1.了解Dubbo基本

  • SpringCloud使用Zookeeper作为注册中心

    服务注册 引入相关依赖: <?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/

  • 关于idea+centos7+zookeeper报错connectionloss,timeout问题

    之前一直报错连接不上,检查了很多遍ip也对着,端口也是,配置等等都没有问题,也能ping通linux主机,一整天没调通,烦都烦死了. 后来第二天继续调试,发现之前关闭防火墙的时候,使用的是systemctl stop firewalld这个命令,会报错未找到firewalld,以为是我的linux主机没有firewall 但是当我使用firewall-cmd --state 时发现防火墙在运行.这时候才发现我之前的关闭防火墙命令对于centos7可能不适用.我是centos7.9:然后关闭防火墙

  • Zookeeper全局唯一ID生成方案解析

    系统唯一ID生成分案有很多种,例如:数据库 auto_increment,UUID,Redis生成ID(Redis原子操作INCR和INCRBY),Twiitter的snowflake算法,ZooKeeper生成ID,MongoDb的ObjectId,下面我们就看一下ZooKeeper实现分布式系统唯一ID. public int idGen() throws Exception { String zkAddress = "127.0.0.1:2181"; String idNode

随机推荐