Spring Boot + Dubbo + Zookpeer分布式案例

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Spring Boot + Dubbo + Zookpeer分布式案例

整体架构:

下载链接:

Doubbo:https://github.com/apache/dubbo

Zookeeperhttps://downloads.apache.org/zookeeper/

Doubbo-admin:https://github.com/apache/dubbo-admin

1 首先安装Zookpeer

[root@bogon tmp]# ls
apache-zookeeper-3.7.0-bin.tar.gz  jdk1.8.0_141  jdk8.tar.gz
[root@bogon tmp]# tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz 
[root@bogon tmp]# tar -zxvf jdk8.tar.gz 
[root@bogon tmp]# mv jdk1.8.0_141/ /usr/local/
[root@bogon tmp]# mv apache-zookeeper-3.7.0-bin/ /usr/local/zookpeer
[root@bogon tmp]# cd /usr/local/
[root@bogon local]# ls
bin  etc  games  include  jdk1.8.0_141  lib  lib64  libexec  sbin  share  src  zookeeper
[root@bogon local]# vim /etc/profile
# --------写入文件------------
export JAVA_HOME=/usr/local/jdk1.8.0_141
export JER_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
# --------写入文件完成------------
[root@bogon local]# source /etc/profile
[root@bogon local]# java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
[root@bogon local]# cd zookeeper/
[root@bogon conf]# cp zoo_sample.cfg zoo.cfg
[root@bogon conf]# cd ../bin
[root@bogon bin]# ./zkServer.sh start
[root@bogon bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@bogon bin]# ./zkCli.sh 
Connecting to localhost:2181
......
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]

zookpeer的启动和重启命令:

[root@bogon bin]# ./zkServer.sh start   //启动
[root@bogon bin]# ./zkServer.sh stop    //停止
[root@bogon bin]# ./zkServer.sh status  //查看当前状态
[root@bogon bin]# ./zkServer.sh restart  //重启
[root@bogon bin]# ./zkServer.sh version   //查看当前版本

2 创建Spring Boot项目

2.1 服务提供方dubbo_provider

pom.xml依赖:

<dependencies>
    <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>com.alibaba.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>0.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.ymx</groupId>
        <artifactId>doubbo_interface</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

application.properties配置文件:

server.port=8081
dubbo.application.name=my_provider
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.190.129:2181
dubbo.protocol.name=dubbo

UserServiceImpl接口实现类:

import com.alibaba.dubbo.config.annotation.Service;
import org.ymx.doubbo_interface.service.UserService;
/**
 * @desc: 接口实现类
 * @author: YanMingXin
 * @create: 2021/8/7-9:32
 **/
@Service
public class UserServiceImpl implements UserService {
    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

主启动类:

@SpringBootApplication
@EnableDubbo(scanBasePackages = "org.ymx.*")
public class DoubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboProviderApplication.class, args);
    }
}
2.2 服务消费方dubbo_consumer

pom.xml依赖

<dependencies>
    <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>com.alibaba.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>0.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.ymx</groupId>
        <artifactId>doubbo_interface</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

application.properties配置文件

dubbo.application.name=my_consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.190.129:2181
dubbo.protocol.name=dubbo

UserController控制器类

/**
 * @desc: Controller控制类
 * @author: YanMingXin
 * @create: 2021/8/7-10:08
 **/
@RestController
public class UserController {
    @Reference
    private UserService userService;
    @RequestMapping("/hello/{name}")
    public String hello(@PathVariable("name") String name) {
        return userService.sayHello(name);
    }
}

主启动类:

@SpringBootApplication
@EnableDubbo(scanBasePackages = "org.ymx.*")
public class DoubboConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboConsumerApplication.class, args);
    }
}
2.3 公共接口dubbo_interface

pom.xml依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

application.properties配置文件

UserService接口类

/**
 * @desc: 公共接口
 * @author: YanMingXin
 * @create: 2021/8/7-10:07
 **/
public interface UserService {
    String sayHello(String name);
}

主启动类:

@SpringBootApplication
public class DoubboInterfaceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboInterfaceApplication.class, args);
    }
}
@SpringBootApplication
public class DoubboInterfaceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DoubboInterfaceApplication.class, args);
    }
}
2.4 启动后观察Zookpeer并测试

doubbo_interface不需要启动,只需要install就可以了

[zk: localhost:2181(CONNECTED) 14] ls /
[dubbo, zookeeper]
[zk: localhost:2181(CONNECTED) 15] ls /dubbo
[org.ymx.doubbo_consumer.service.UserService, org.ymx.doubbo_provider.service.UserService]

测试:

3 dubbo管理界面

放到tomcat中

修改配置文件,在

修改内容

dubbo.registry.address=zookeeper://192.168.190.129:2181  # 注册中心地址
dubbo.admin.root.password=root   # root账户的密码
dubbo.admin.guest.password=guest  # guest账户的密码

启动

访问:http://localhost:8080/dubbo-admin/


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
111 1
|
7天前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
53 1
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
240 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
27天前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
160 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
2月前
|
消息中间件 Java Kafka
springboot项目启动报错-案例情景介绍
springboot项目启动报错-案例情景介绍
48 2
|
2月前
|
消息中间件 Java 对象存储
数据一致性挑战:Spring Cloud与Netflix OSS下的分布式事务管理
数据一致性挑战:Spring Cloud与Netflix OSS下的分布式事务管理
50 2
|
2月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
206 1
|
Dubbo 关系型数据库 Java
SpringBoot 整合 Dubbo&amp;Zookeeper 实现分布式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36367789/article/details/81665692 1. 安装 Zookeeper 环境 Zookeeper 环境搭建&zk命令详解 2. 服务提供者 因为用了父工程的版本管理,所以这里没有显示版本,我把用到的版本给大家分享下。
2250 0
|
Dubbo 关系型数据库 Java
SpringBoot 整合 Dubbo&Zookeeper 实现分布式
1. 安装 Zookeeper 环境 Zookeeper 环境搭建&zk命令详解 2. 服务提供者 因为用了父工程的版本管理,所以这里没有显示版本,我把用到的版本给大家分享下。
2041 0
|
26天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
130 1

热门文章

最新文章