springboot + dubbo + zookeeper入门到实战超级详解

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: springboot + dubbo + zookeeper入门到实战超级详解
一,引言

在此之前,本人还是希望各位有一台自己的服务器,不然在虚拟机里面操作真的是会很卡很卡的。由于dubbo最近似乎又开始更新了,所以不得不学了一下dubbo,由于这里只是入门,因此一些概念就先不聊了。

二,安装jdk

在服务器里面安装jdk,附上下载网址:https://www.oracle.com/java/technologies/javase-downloads.html

解压在/usr/local/software 里面,这个software需要手动创建。我大概就装了一下里面的东西

然后对/etc/profile进行环境配置,输入一下内容即可

vim /etc/profile
export JAVA_HOME=/usr/local/software/jdk1.8.0_281
export JRE_HOME=${JAVA_HOME}/jre
export CLASSSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

再自己测试一下javac或者java -version即可

三,安装tomcat

附上连接https://tomcat.apache.org/download-70.cgi,常规的解压安装即可,我这边装的是tomcat7

四,安装zookeeper

下载地址http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/

,版本尽量安装3.4.x的,不然安装的版本太高容易启动不了,太多的bug。同样将压缩包放到/usr/local/software目录下,tar -zxvf解压即可。

20210319154405868.png

修改配置文件 cd …/conf/ : mv zoo_sample.cfg zoo.cfg

接下来vim zoo.cfg,并修改里面的dataDir数据为当前zookeeper的data目录,该data目录可以在zookeeper下面新建即可

接下来保存退出,切换到bin目录下

./zkServer.sh status:查看当前服务状态
./zkServer.sh stop: 停止服务
./zkServer.sh start: 开启服务

这里开启服务即可,不需要在哪个服务器里面将端口2181打开

五,安装dubbo

这里就需要使用tomcat来安装了,现在一个dubbo.war,附上一个地址可以下载的,https://download.csdn.net/download/fyc__ios/10386974,亲测有效

然后打开tomcat,直接切换到/usr/local/software/tomcat7/webapps/ROOT这个目录,直接 rm -rf *,删除里面的全部

rm -rf *


然后将dubbo.war里面的解压到/usr/local/software/tomcat7/webapps/ROOT这个路径下解压即可,需要使用unzip解压

unzip dubbo.war -d tomcat7/webapps/ROOT

再查看一下 /usr/local/software/tomcat7/webapps/ROOT/WEB-INF

vim dubbo.properties

不用改,看看就行了,到时登录dubbo时的账号和密码都是root

在切换到tomcat下面的bin目录,可以看到熟悉的脚本

直接启动

./startup.sh

需要编译等待一段时间,而且在启动前尽量关闭防火墙,并且打开端口号2181和8080.一段时间后,在浏览器上输入 服务器ip + 8080,出现以下界面,登录账号和密码都是root

六,接下来就是springboot和dubbo的整合了

新建springboot项目,见一个服务者和消费者作为测试即可

1,先说服务提供者,即dubbo-provider

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--引入dubbo-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
    </dependencies>

application.properties

server.port=8081
dubbo.application.name=dubbo2-springboot-provider
dubbo.registry.protocol=zookeeper
#服务注册中心的地址,即服务器地址
dubbo.registry.address=xxx.xxx.xxx.xxx:2181
dubbo.protocol.port=20883

代码比较简单

在主启动类上加上 @EnableDubbo 开启dubbo服务的注解,和前面说的eureka是一样的。

然后就是新建一个IUserService接口

package com.zheng.dubboprovider.service;
public interface IUserService {
    public String getUser(String username);
}

具体实现类

package com.zheng.dubboprovider.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.zheng.dubboprovider.service.IUserService;
@Service
public class UserServiceImpl implements IUserService {
    @Override
    public String getUser(String username) {
        System.out.println(username);
        return username;
    }
}

启动该微服务

可以发现该微服务以及注册进来了

2,消费者dubbo-consumer

pom.xml,多了一个服务提供者的依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</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-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--引入dubbo-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.zheng</groupId>
            <artifactId>dubbo-provider</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

application.properties

server.port=8082
dubbo.application.name=dubbo2-springboot-consumer
dubbo.registry.protocol=zookeeper
#服务注册中心的地址,即服务器地址
dubbo.registry.address=xxx.xxx.xxx.xxx:2181

controller

package com.zheng.dubboconsumer.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.zheng.dubboprovider.service.IUserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/t1")
@RestController
public class GetUser {
    //@Reference(loadbalance = "leastactive")
    @Reference
    private IUserService userService;
    @GetMapping("/qaq")
    public String getUserInfo(String username){
        System.out.println(username);
        return userService.getUser(username);
    }
}

主启动类,加上 @EnableDubbo 注解即可

3,启动服务调用者并测试

点开服务治理下面的应用,可以看到下图,服务者提供者和消费者都被加进来了


再来进行接口测试

http://localhost:8082/t1/qaq?username=123456789

测试成功,dubbo+zookeeper+springboot的整合正式成功!

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
24天前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
94 6
|
30天前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
1月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
79 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
2月前
|
Dubbo Java 应用服务中间件
微服务框架Dubbo环境部署实战
微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
220 17
微服务框架Dubbo环境部署实战
|
2月前
|
缓存 NoSQL Java
Springboot实战——黑马点评之秒杀优化
【9月更文挑战第27天】在黑马点评项目中,秒杀功能的优化对提升系统性能和用户体验至关重要。本文提出了多项Spring Boot项目的秒杀优化策略,包括数据库优化(如索引和分库分表)、缓存优化(如Redis缓存和缓存预热)、并发控制(如乐观锁、悲观锁和分布式锁)以及异步处理(如消息队列和异步任务执行)。这些策略能有效提高秒杀功能的性能和稳定性,为用户提供更佳体验。
146 6
|
2月前
|
缓存 负载均衡 Dubbo
Dubbo技术深度解析及其在Java中的实战应用
Dubbo是一款由阿里巴巴开源的高性能、轻量级的Java分布式服务框架,它致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
72 6
|
2月前
|
Dubbo Java 应用服务中间件
分布式-dubbo的入门
分布式-dubbo的入门
|
3月前
|
NoSQL Java Redis
Redis6入门到实战------ 八、Redis与Spring Boot整合
这篇文章详细介绍了如何在Spring Boot项目中整合Redis,包括在`pom.xml`中添加依赖、配置`application.properties`文件、创建配置类以及编写测试类来验证Redis的连接和基本操作。
Redis6入门到实战------ 八、Redis与Spring Boot整合
|
3月前
|
Java API UED
【实战秘籍】Spring Boot开发者的福音:掌握网络防抖动,告别无效请求,提升用户体验!
【8月更文挑战第29天】网络防抖动技术能有效处理频繁触发的事件或请求,避免资源浪费,提升系统响应速度与用户体验。本文介绍如何在Spring Boot中实现防抖动,并提供代码示例。通过使用ScheduledExecutorService,可轻松实现延迟执行功能,确保仅在用户停止输入后才触发操作,大幅减少服务器负载。此外,还可利用`@Async`注解简化异步处理逻辑。防抖动是优化应用性能的关键策略,有助于打造高效稳定的软件系统。
72 2
|
3月前
|
JSON Java API
解码Spring Boot与JSON的完美融合:提升你的Web开发效率,实战技巧大公开!
【8月更文挑战第29天】Spring Boot作为Java开发的轻量级框架,通过`jackson`库提供了强大的JSON处理功能,简化了Web服务和数据交互的实现。本文通过代码示例介绍如何在Spring Boot中进行JSON序列化和反序列化操作,并展示了处理复杂JSON数据及创建RESTful API的方法,帮助开发者提高效率和应用性能。
144 0