`
raymond.chen
  • 浏览: 1437078 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Springboot2集成dubbo,并使用zookeeper作为注册中心

 
阅读更多

运行环境: JDK1.8、Tomcat8

技术栈:

    springboot-2.1.1

    dubbo-2.6.2

    dubbo-spring-boot-starter-0.2.0

    zookeeper-3.4.13

    dubbo-admin-2.5.10

 

1、Zookeeper的安装和启动(单节点):

将zookeeper-3.4.13.tar.gz安装包上传到Linux服务器的/opt/software/zookeeper目录下
解压安装包: tar -zxvf zookeeper-3.4.13.tar.gz
定位到/opt/software/zookeeper/zookeeper-3.4.13目录,分别创建名为data、dataLog的文件夹
定位到/opt/software/zookeeper/zookeeper-3.4.13/conf目录,创建zoo.cfg配置文件,文件内容如下:
	tickTime=2000
	initLimit=10
	syncLimit=5
	dataDir=/opt/software/zookeeper/zookeeper-3.4.13/data
	dataLogDir=/opt/software/zookeeper/zookeeper-3.4.13/dataLog
	clientPort=2181
将2181端口添加到防火墙,确保客户端能正常访问到该端口
	firewall-cmd --zone=public --add-port=2181/tcp --permanent
定位到/opt/software/zookeeper/zookeeper-3.4.13/bin目录下,执行 ./zkServer.sh start 命令启动zk服务

 

2、dubbo-admin的安装:

将dubbo-admin.war安装包复制到Tomcat的webapps目录下
执行bin/startup.bat启动tomcat,然后停止tomcat
修改webapps\dubbo-admin\WEB-INF\dubbo.properties配置文件的dubbo.registry.address参数值
	dubbo.registry.address=zookeeper://192.168.134.134:2181
再次启动tomcat
以root账号登录

 

 

3、maven多模块项目的创建

        创建一个maven项目dubbo,包括三个模块子项目,分别为:

                dubbo-api: 存放服务接口、bean类等公共文件

                dubbo-provider: 服务提供者工程

                dubbo-consumer: 服务消费者工程

 

        主项目的pom.xml文件配置:

<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</modelVersion>
  <groupId>com.study.dubbo</groupId>
  <artifactId>dubbo</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  
  <parent>
  	<groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-parent</artifactId>  
    <version>2.1.1.RELEASE</version> 
    <relativePath/> 
  </parent>
  
  <properties>
  		<java.version>1.8</java.version>
    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  
  <dependencies>
  	<!-- springboot -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
	</dependency>
    
    <!-- dubbo -->
    <dependency>
	    <groupId>com.alibaba</groupId>
	    <artifactId>dubbo</artifactId>
	    <version>2.6.2</version>
	</dependency>
	<dependency>
	    <groupId>com.alibaba.boot</groupId>
	    <artifactId>dubbo-spring-boot-starter</artifactId>
	    <version>0.2.0</version>
	</dependency>
	<dependency>
	    <groupId>com.alibaba.boot</groupId>
	    <artifactId>dubbo-spring-boot-actuator</artifactId>
	    <version>0.2.0</version>
	</dependency>
    <dependency>
	    <groupId>com.alibaba.boot</groupId>
	    <artifactId>dubbo-spring-boot-autoconfigure</artifactId>
	    <version>0.2.0</version>
	</dependency>
	<dependency>
	    <groupId>com.alibaba.spring</groupId>
	    <artifactId>spring-context-support</artifactId>
	    <version>1.0.2</version>
	</dependency>

    <!-- zookeeper -->
    <dependency>
	    <groupId>org.apache.zookeeper</groupId>
	    <artifactId>zookeeper</artifactId>
	    <version>3.4.9</version>
	    <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
	</dependency>
	<dependency>
    	<groupId>org.apache.curator</groupId>
    	<artifactId>curator-framework</artifactId>
    	<version>2.12.0</version>
	</dependency>
    
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <scope>test</scope>
	</dependency>
  </dependencies>
  
  <modules>
  	<module>dubbo-api</module>
  	<module>dubbo-provider</module>
  	<module>dubbo-consumer</module>
  </modules>  
</project>

 

4、dubbo-api工程

    User.java

package com.study.dubbo.api.bean;
import java.io.Serializable;
public class User implements Serializable{
	private static final long serialVersionUID = -8832914162040512009L;
	
	private Long id;
	private String username;
	private String password;
	
	public User(){
		
	}
	
	public User(Long id, String username, String password){
		this.id = id;
		this.username = username;
		this.password = password;
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}
	
	public void setUsername(String username) {
		this.username = username;
	}
	
	public String getPassword() {
		return password;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}

	public Long getNowtime() {
		return System.currentTimeMillis();
	}	
}

 

    UserService.java  —— 服务接口类

package com.study.dubbo.api.service;
import com.study.dubbo.api.bean.User;
/**
 * 定义dubbo服务接口
 */
public interface UserService {
	public User getUser(long id);
}

 

 

5、dubbo-provider工程

     UserServiceImpl.java  —— 服务接口的实现类

package com.study.dubbo.provider.service;

import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Service;
import com.study.dubbo.api.bean.User;
import com.study.dubbo.api.service.UserService;

/**
 * dubbo服务接口的实现类,使用@Service注解暴露dubbo服务
 */
@Service(interfaceClass=UserService.class, version="1.0.0", timeout=10000)
@Component
public class UserServiceImpl implements UserService {
	@Override
	public User getUser(long id) {
		return new User(id, "zhangsan", "123");
	}
}

 

     application.properties

server.port=8001
server.servlet.context-path=/dubbo-provider

##dubbo
dubbo.scan.basePackages=com.study.dubbo.provider.service
dubbo.application.name=provider-name

dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.134.134:2181

 

    pom.xml文件:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>dubbo-provider</artifactId>
  <packaging>jar</packaging>
  
  <parent>
    <groupId>com.study.dubbo</groupId>
    <artifactId>dubbo</artifactId>
    <version>1.0.0</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  
  <dependencies>
    <dependency>
        <groupId>com.study.dubbo</groupId>
        <artifactId>dubbo-api</artifactId>
    	<version>1.0.0</version>
    </dependency>
  </dependencies>
  
  <build>
    <finalName>dubbo-provider</finalName>
  </build>
  
</project>

 

    Main.java

package com.study.dubbo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication()
public class Main{
	public static void main(String[] args){
		SpringApplication springApp = new SpringApplication(Main.class);
		springApp.run(args);
	}
	
	@RequestMapping("/index")
    public String greeting() {
        return "hello provider";
    }
}

      执行Main.java类,启动服务提供者工程应用。

 

6、dubbo-consumer工程

    ServiceConsumer.java

package com.study.dubbo.consumer.service;

import org.springframework.stereotype.Service;
import com.alibaba.dubbo.config.annotation.Reference;
import com.study.dubbo.api.service.UserService;

@Service
public class ServiceConsumer {
	/**
	 * 消费dubbo服务
	 */
	@Reference(version="1.0.0")
	private UserService userService;

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}	
}

 

    application.properties

server.port=8002
server.servlet.context-path=/dubbo-consumer

##dubbo
dubbo.application.name=consumer-name

dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.134.134:2181

 

    pom.xml文件

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>dubbo-consumer</artifactId>
  <packaging>jar</packaging>
  
  <parent>
    <groupId>com.study.dubbo</groupId>
    <artifactId>dubbo</artifactId>
    <version>1.0.0</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  
  <dependencies>
    <dependency>
        <groupId>com.study.dubbo</groupId>
        <artifactId>dubbo-api</artifactId>
    	<version>1.0.0</version>
    </dependency>
  </dependencies>
  
  <build>
    <finalName>dubbo-consumer</finalName>
  </build>
  
</project>

 

    Main.java

package com.study.dubbo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.study.dubbo.api.bean.User;
import com.study.dubbo.consumer.service.ServiceConsumer;

@RestController
@SpringBootApplication()
public class Main{
	@Autowired()
	private ServiceConsumer serviceConsumer;
	
	public static void main(String[] args){
		SpringApplication springApp = new SpringApplication(Main.class);
		springApp.run(args);
	}
	
	@RequestMapping("/index")
    public String greeting() {
		User user = serviceConsumer.getUserService().getUser(110L);
        return "hello consumer: username=" + user.getUsername() + ", password=" + user.getPassword() + ", nowtime=" + user.getNowtime();
    }
}

      执行Main.java类,启动服务消费者工程应用。

 

7、测试验证

     刷新dubbo-admin的服务列表页面,可以看到列表中有一个UserService服务

     浏览器访问: http://localhost:8002/dubbo-consumer/index ,页面会显示如下内容:
           hello consumer: username=cjm, password=123, nowtime=1545402825287
 
至此,集成完毕!!
 

 

  • 大小: 38.5 KB
  • 大小: 32.3 KB
分享到:
评论

相关推荐

    idea创建springboot,集成使用dubbo、zookeeper

    本篇文章将详细介绍如何在IntelliJ IDEA(Idea)中创建一个SpringBoot项目,并集成Dubbo和Zookeeper,以实现服务的分布部署和接口的远程调用。 首先,SpringBoot是基于Spring框架的快速开发工具,它简化了初始化...

    SpringBoot整合dubbo2.7.8+zookeeper3.4.14

    2. **创建SpringBoot项目**:使用Spring Initializr创建一个新的SpringBoot项目,选择2.4.2版本,并添加对Spring Web的依赖。 3. **引入Dubbo和Zookeeper依赖**:在pom.xml文件中添加Dubbo和Zookeeper的相关依赖,...

    最简单的Dubbo案例之二:SpringBoot + dubbo 无zookeeper方式点对点直连

    本项目只适合dubbo入门学习者,高手请不要浪费金钱;...本项目技术栈 springboot, dubbo ,无 zookeeper 本项目旨在提供最单纯的 dubbo 服务提供者 和消费者的点对点直连,而摒弃任何多余技术对dubbo直连的理解

    springboot+dubbo+zookeeper实现多个生产者、消费者的负载均衡

    综上所述,本项目通过SpringBoot作为基础框架,利用Dubbo实现服务的提供与消费,借助Zookeeper进行服务注册与发现以及负载均衡,通过Maven进行模块化管理,构建了一个高可用、可扩展的分布式服务系统。

    springboot集成dubbo、zookeeper,基于注解形式+源代码+文档说明

    本项目是集成dubbo和zookeeper的一个练习项目,基于注解的配置形式,没有xml文件 ## 环境 #### 操作系统:ubuntu 16.04 LTS #### 开发工具:Idea ## 搭建过程 ### 一、安装zookeeper #### 1、下载zookeeper源码包 &gt;...

    springboot-mybatis-dubbo-zookeeper.zip

    在Dubbo中,Zookeeper常被用作服务注册中心,服务提供者会在Zookeeper上注册自己的服务,而服务消费者则可以通过Zookeeper查找并调用服务。 在这个项目中,SpringBoot将作为整个系统的启动入口,它会管理MyBatis和...

    springboot-mybatis-dubbo-zookeeper项目框架

    本框架集成了springboot、dubbo、zookeeper,通过消费端、服务端实现代码的前后端分离,中间还添加了common用于统一管理服务端提供的所有接口以及实体类

    Spring Boot集成dubbo+zookeeper

    同时,为了使用Zookeeper作为注册中心,还需要添加`zookeeper`的相关依赖。 接着,配置文件`application.properties`或`application.yml`中需要配置Dubbo的相关属性,包括服务提供者和服务消费者的地址、端口、协议...

    springboot整合dubbo+zookeeper案例

    这个系统将利用SpringBoot的简洁性来管理微服务,Dubbo作为服务提供者和服务消费者之间的通信框架,而Zookeeper则作为服务注册与发现的中心节点。以下是关于这些技术的详细介绍: 1. SpringBoot: SpringBoot是...

    狂神说SpringBoot17:Dubbo和Zookeeper集成.zip

    狂神说SpringBoot17:Dubbo和Zookeeper集成_狂神说-CSDN博客 https://blog.csdn.net/qq_33369905/article/details/106647287。我跟着做了一下,成功实现了。这里打包的是根据上面那个文章,配置好的dubbo-admin和...

    SpringBoot整合Dubbo、Zookeeper

    在现代企业级应用开发中,SpringBoot和Dubbo的整合是常见的微服务架构选择,而Zookeeper作为服务治理工具,其在服务注册与发现中的作用不可或缺。本教程将深入探讨如何在SpringBoot项目中整合Dubbo和Zookeeper,实现...

    Springboot + Mybatis+Dubbo+Zookeeper+nginx+redis+HTML.docx

    在《Springboot + Mybatis+Dubbo+Zookeeper+nginx+redis+HTML.docx》这份文档中,作者详细介绍了如何集成并使用Spring Boot、MyBatis、Dubbo、Zookeeper、Nginx以及Redis等多种技术,构建一个高效稳定的应用系统。...

    springboot-mybatis-dubbo-zookeeper项目框架集成redis

    该项目框架整合了SpringBoot+mybatis+zookeeper+dubbo+mysql+redis,项目大体由生产者provider、消费者customer和公共类common三部分组成,是目前分布式开发前后端分离的流行框架。

    springboot+dubbo+zookeeper整合

    总的来说,这个项目展示了如何在SpringBoot环境下利用Dubbo进行服务治理,通过ZooKeeper实现服务的注册与发现,并结合MyBatis-Plus进行数据库操作,构建一个完整的微服务架构。对于学习和实践分布式系统开发的开发者...

    springboot+dubbo+zookeeper搭建微服务的demo

    在Dubbo中,Zookeeper可以作为注册中心,服务提供者会在其中注册自己的服务,而服务消费者则可以通过Zookeeper找到需要的服务。 在"springboot-06-dubbo"这个压缩包中,我们预计会看到以下几个关键部分: 1. **...

    springboot+dubbo+zookeeper+JPA步骤

    Dubbo 使用Spring作为其容器,但又不仅仅是一个服务管理框架,而是包含了服务管理、治理、监控和测试等功能。 ##### 2.3 ZooKeeper ZooKeeper 是一个分布式的协调服务,它是集群的管理者,监视着集群中各个节点的...

    springboot-dubbo-zookeeper完整示例

    在Dubbo中,Zookeeper作为服务中心,可以存储服务提供者的信息,使得服务消费者能够通过Zookeeper找到并调用服务。 接下来是Dubbo。Dubbo是一款由阿里巴巴开源的高性能RPC框架,它提供了服务注册、服务发现、负载...

    springboot2.0-dubbo-demo

    启动类中,我们需要启用Dubbo的自动配置,这样SpringBoot在启动时会自动扫描并注册服务到Zookeeper。同时,我们还可以利用SpringBoot的条件化注解,根据环境变量或配置决定是否启动服务提供者或消费者。 在实际运行...

    springboot整合dubbo,zookeeper

    在Dubbo中,Zookeeper常被用来作为服务注册中心和服务发现的实现。 整合Spring Boot、Dubbo和Zookeeper的过程通常包括以下步骤: 1. **设置环境**:确保你已经安装并配置好Java、Maven或Gradle(Spring Boot的构建...

    tesstDubbo.rar springboot+dubbo springboot整合dubbo

    - Dubbo通常使用Zookeeper作为服务注册中心,提供服务的注册和发现。 - 需要在项目中配置Zookeeper的连接信息,并确保服务提供者在启动时向Zookeeper注册服务。 - 消费者通过Zookeeper找到并连接到服务提供者。 ...

Global site tag (gtag.js) - Google Analytics