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

简介: 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的整合正式成功!

相关文章
|
6月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1050 3
|
4月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
Spring Boot 3.x 微服务架构实战指南
|
5月前
|
消息中间件 Ubuntu Java
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信
本教程指导在Ubuntu上部署EMQX 5.9.0并集成Spring Boot实现MQTT双向通信,涵盖服务器搭建、客户端配置及生产实践,助您快速构建企业级物联网消息系统。
2062 1
|
11月前
|
缓存 NoSQL Java
基于SpringBoot的Redis开发实战教程
Redis在Spring Boot中的应用非常广泛,其高性能和灵活性使其成为构建高效分布式系统的理想选择。通过深入理解本文的内容,您可以更好地利用Redis的特性,为应用程序提供高效的缓存和消息处理能力。
1026 79
|
9月前
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
826 4
|
10月前
|
缓存 安全 Java
深入解析HTTP请求方法:Spring Boot实战与最佳实践
这篇博客结合了HTTP规范、Spring Boot实现和实际工程经验,通过代码示例、对比表格和架构图等方式,系统性地讲解了不同HTTP方法的应用场景和最佳实践。
941 5
|
12月前
|
Java Spring
SpringBoot 实战 不同参数调用不同实现
本文介绍了如何在实际工作中根据不同的入参调用不同的实现,采用`map+enum`的方式实现优雅且严谨的解决方案。通过Spring Boot框架中的工厂模式或策略模式,避免了使用冗长的`if...else...`语句。文中详细展示了定义接口、实现类、枚举类以及控制器调用的代码示例,确保用户输入的合法性并简化了代码逻辑。
447 1
SpringBoot 实战 不同参数调用不同实现
|
12月前
|
JavaScript 前端开发 Java
Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300%的秘密武器
Jeesite5 是一个基于 Spring Boot 3.3 和 Vue3 的企业级快速开发平台,集成了众多优秀开源项目,如 MyBatis Plus、Bootstrap、JQuery 等。它提供了模块化设计、权限管理、多数据库支持、代码生成器和国际化等功能,极大地提高了企业级项目的开发效率。Jeesite5 广泛应用于企业管理系统、电商平台、客户关系管理和知识管理等领域。通过其强大的功能和灵活性,Jeesite5 成为了企业级开发的首选框架之一。访问 [Gitee 页面](https://gitee.com/thinkgem/jeesite5) 获取更多信息。
666 0
Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300%的秘密武器
|
SpringCloudAlibaba Dubbo Java
【SpringCloud Alibaba系列】Dubbo基础入门篇
Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
【SpringCloud Alibaba系列】Dubbo基础入门篇
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
587 1

热门文章

最新文章