Windows下Dubbo+Zookeeper實(shí)現(xiàn)分布式部署教程
前言
使用Dubbo+Zookeeper實(shí)現(xiàn)分布式服務(wù)部署,環(huán)境提前準(zhǔn)備好,并不局限于當(dāng)前版本,只是更高版本的依賴(lài)注解等有些區(qū)別,整體實(shí)現(xiàn)思路不變。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、環(huán)境準(zhǔn)備
本地環(huán)境如下:
- 1. JDK1.8
- 2. Maven3.6.3
- 3. IDE:IDEA2024
- 4. Tomcat8.5.99
- 5. Zookeeper3.6.4
- 6. Dubbo2.5.10
二、使用步驟
1. 創(chuàng)建項(xiàng)目
項(xiàng)目結(jié)構(gòu)如下:

dubbo-common:父項(xiàng)目
- dubbo-consumer:服務(wù)消費(fèi)端
- dubbo-interface:接口
- dubbo-provider:服務(wù)提供端
2. 引入依賴(lài)
服務(wù)消費(fèi)端和服務(wù)提供端需要引入接口模塊:
<dependency>
<groupId>com.xxxxxx</groupId>
<artifactId>dubbo-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>以及zookeeper和dubbo相關(guān)依賴(lài):
<!-- Dubbo 依賴(lài) -->
<dependency>
<groupId> com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.10</version>
<type>jar</type>
</dependency>
<!-- Zookeeper 客戶(hù)端依賴(lài) -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.2.0</version>
</dependency>
<!-- 添加 zkclient 依賴(lài) -->
<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 依賴(lài) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.8</version>
</dependency>3. 在接口模塊定義接口
public interface UserService {
/**
* 獲取用戶(hù)名
* @param userName
* @return
*/
String getUserName(String userName);
}4. 在服務(wù)提供模塊定義服務(wù)實(shí)現(xiàn)
(注意實(shí)現(xiàn)的為接口模塊的Service)
@Service
public class UserServiceImpl implements UserService {
/**
* 獲取用戶(hù)名
* @param userName
* @return
*/
@Override
public String getUserName(String userName) {
return "hello" + userName;
}
}其中@Service注解為
import com.alibaba.dubbo.config.annotation.Service;
同時(shí)增加dubbo的配置
# Dubbo 配置 dubbo.application.name=dubbo-provider dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.name=dubbo dubbo.protocol.port=20880
啟動(dòng)類(lèi)加注解
@EnableDubbo
5. 在服務(wù)消費(fèi)模塊進(jìn)行服務(wù)調(diào)用
(注意注入的為接口模塊的Service)
@RestController
public class UserController {
@Reference
private UserService userService;
@GetMapping("/getUserName")
public String getUserName(@RequestParam String userName) {
System.out.println("用戶(hù)名:" + userName);
return userService.getUserName(userName);
}
}其中@Reference注解為
import com.alibaba.dubbo.config.annotation.Reference;
同樣添加配置信息和注解,配置的name改為dubbo-consumer
6. 啟動(dòng)provider&consumer
Dubbo查看服務(wù)

7. 調(diào)用
http://localhost:8086/getUserName?userName="張三"

總結(jié)
以上就是今天要講的內(nèi)容,本文簡(jiǎn)單介紹了如何使用Dubbo+Zookeeper實(shí)現(xiàn)簡(jiǎn)單的服務(wù)調(diào)用,后續(xù)可以將服務(wù)部署在不同的服務(wù)器上,實(shí)現(xiàn)真正的分布式部署。
第一次實(shí)現(xiàn)想了想還是記錄一下,給同樣小白的朋友參考。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java那點(diǎn)兒事之Map集合不為人知的秘密有哪些
Map用于保存具有映射關(guān)系的數(shù)據(jù),Map集合里保存著兩組值,一組用于保存Map的key,另一組保存著Map的value,和查字典類(lèi)似,通過(guò)key找到對(duì)應(yīng)的value,通過(guò)頁(yè)數(shù)找到對(duì)應(yīng)的信息。用學(xué)生類(lèi)來(lái)說(shuō),key相當(dāng)于學(xué)號(hào),value對(duì)應(yīng)name,age,sex等信息。用這種對(duì)應(yīng)關(guān)系方便查找2021-10-10
淺談Java中的n種隨機(jī)數(shù)產(chǎn)生辦法
眾所周知,隨機(jī)數(shù)是任何一種編程語(yǔ)言最基本的特征之一。而生成隨機(jī)數(shù)的基本方式也是相同的:產(chǎn)生一個(gè)0到1之間的隨機(jī)數(shù)??此坪?jiǎn)單,但有時(shí)我們也會(huì)忽略了一些有趣的功能。2015-09-09
2020最新IDEA SpringBoot整合Dubbo的實(shí)現(xiàn)(zookeeper版)
這篇文章主要介紹了2020最新IDEA SpringBoot整合Dubbo(zookeeper版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Spring?Boot中處理Servlet路徑映射問(wèn)題解決
本文探討了將傳統(tǒng)Servlet框架集成到Spring?Boot應(yīng)用時(shí)出現(xiàn)的路徑映射問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-08-08

