java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Dubbo+Zookeeper实现分布式部署

Windows下Dubbo+Zookeeper实现分布式部署教程

作者:有女孩说要娶我

本文介绍了如何使用Dubbo和Zookeeper搭建分布式服务,包括环境准备、项目结构、依赖引入、接口与服务实现、注解配置及服务调用流程,适合初学者参考和实践

前言

使用Dubbo+Zookeeper实现分布式服务部署,环境提前准备好,并不局限于当前版本,只是更高版本的依赖注解等有些区别,整体实现思路不变。

提示:以下是本篇文章正文内容,下面案例可供参考

一、环境准备

本地环境如下:

  1. 1. JDK1.8
  2. 2. Maven3.6.3
  3. 3. IDE:IDEA2024
  4. 4. Tomcat8.5.99
  5. 5. Zookeeper3.6.4
  6. 6. Dubbo2.5.10

二、使用步骤

1. 创建项目

项目结构如下:

dubbo-common:父项目

2. 引入依赖

服务消费端和服务提供端需要引入接口模块:

        <dependency>
            <groupId>com.xxxxxx</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

以及zookeeper和dubbo相关依赖:

        <!-- Dubbo 依赖 -->
        <dependency>
            <groupId> com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.10</version>
            <type>jar</type>
        </dependency>
        <!-- Zookeeper 客户端依赖 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>5.2.0</version>
        </dependency>
        <!-- 添加 zkclient 依赖 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <!-- 显式指定ZooKeeper版本 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.4</version>
        </dependency>
        <!-- Spring Context 依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.8</version>
        </dependency>

3. 在接口模块定义接口

public interface UserService {
    /**
     * 获取用户名
     * @param userName
     * @return
     */
    String getUserName(String userName);
}

4. 在服务提供模块定义服务实现

(注意实现的为接口模块的Service)

@Service
public class UserServiceImpl implements UserService {
    /**
     * 获取用户名
     * @param userName
     * @return
     */
    @Override
    public String getUserName(String userName) {
        return "hello" + userName;
    }
}

其中@Service注解为

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

同时增加dubbo的配置

# Dubbo 配置
dubbo.application.name=dubbo-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

启动类加注解

@EnableDubbo

5. 在服务消费模块进行服务调用

(注意注入的为接口模块的Service)

@RestController
public class UserController {

    @Reference
    private UserService userService;

    @GetMapping("/getUserName")
    public String getUserName(@RequestParam String userName) {
        System.out.println("用户名:" + userName);
        return userService.getUserName(userName);
    }
}

其中@Reference注解为

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

同样添加配置信息和注解,配置的name改为dubbo-consumer

6. 启动provider&consumer

Dubbo查看服务

7. 调用

http://localhost:8086/getUserName?userName="张三"

总结

以上就是今天要讲的内容,本文简单介绍了如何使用Dubbo+Zookeeper实现简单的服务调用,后续可以将服务部署在不同的服务器上,实现真正的分布式部署。

第一次实现想了想还是记录一下,给同样小白的朋友参考。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文