SpringBoot整合Dubbo+Zookeeper进行分布式搭建系统

QUESTIONl:SpringBoot整合Dubbo+Zookeeper进行分布式搭建系统?

 

ANSWER:

一:创建项目模块

 

1.1.创建一个Empty Project

 

名称:Dubbo

1.2.创建一个Provider模块

这里采用SpringBoot快速搭建。

 

1.3.创建Consumer模块

创建完成后代码架构:

二:provider代码部分

2.1导入provider.xml依赖

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.xy</groupId><artifactId>provider</artifactId><version>0.0.1-SNAPSHOT</version><name>provider</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version><exclusions><exclusion><artifactId>slf4j-log4j12</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency><!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.13.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>2.13.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.13</version><exclusions><exclusion><artifactId>slf4j-log4j12</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></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><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

 

2.2创建POJO类

创建一个User实体类,只做简单的测试:

package com.xy.provider.pojo;import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID = -7341603933521593227L;private Long id;private String username;private String password;private Integer age;public static long getSerialVersionUID() {return serialVersionUID;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", age=" + age +'}';}
}

 

2.3创建接口及实现类

创建userService接口:

package com.xy.provider.service;import com.xy.provider.pojo.User;import java.util.List;public interface UserService {public List<User> findAll();public void test();
}

UserServiceImpl实现类:

package com.xy.provider.service.impl;import com.xy.provider.pojo.User;
import com.xy.provider.service.UserService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.List;@Service    //这里要用dubbo的service,在项目一启动就注册到注册中心
@Component      //使用了Dubbo尽量不要用@Service
public class UserServiceImpl implements UserService {@Overridepublic List<User> findAll() {System.out.println("查询所有");List<User> list = new ArrayList<User>();for (int i = 0; i < 10; i++) {User user = new User();user.setAge(10 + i);user.setId(Long.valueOf(i + 1));user.setPassword("123456");user.setUsername("username_" + i);list.add(user);}return list;}@Overridepublic void test() {System.out.println("dubbo");}
}

 

2.4构造application.properties

#提供者名称
dubbo.application.name=provider
#注册中心地址
dubbo.registry.address=zookeeper://www.youngxy.top:2181
#哪些服务要注册
dubbo.scan.base-packages=com.xy.provider.service

 

三:consumer代码部分

3.1导入consumer.xml依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.xy</groupId><artifactId>consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>consumer</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version><exclusions><exclusion><artifactId>slf4j-log4j12</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency><!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.13.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>2.13.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.13</version><exclusions><exclusion><artifactId>slf4j-log4j12</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></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><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.xy</groupId><artifactId>provider</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

 

3.2创建实现类

消费者要获取提供者的服务,定义消费者实现类:

package com.xy.consumer.service;import com.xy.provider.pojo.User;
import com.xy.provider.service.UserService;
import com.xy.provider.service.impl.UserServiceImpl;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;import java.util.List;@Service        //这里是Spring的服务,表示放到容器中
public class ConsumerService {/** 想要拿到UserService,要到注册中心去拿* */@Referenceprivate UserService userService;    //引用,pom导入相关依赖public void consume(){System.out.println("test");List<User> users = userService.findAll();for (User user:users) {System.out.println(user);}userService.test();}
}

 

3.3构造application.properties

#SpringBoot端口
server.port=8081
#消费者去注册中心获取服务需要暴露自己的名称
dubbo.application.name=consumer
#注册中心的地址
dubbo.registry.address=zookeeper://www.youngxy.top:2181

3.4创建测试类

package com.xy.consumer;import com.xy.consumer.service.ConsumerService;
import com.xy.provider.pojo.User;
import com.xy.provider.service.UserService;
import org.apache.dubbo.config.annotation.Reference;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
class ConsumerApplicationTests {@Autowiredprivate ConsumerService consumerService;@Testpublic void testConsume(){consumerService.consume();System.out.println("成功");}}

 

四:打开dubbo-admin平台

首先在本地或者云服务器上面安装好dubbo软件,详情请参照:搭建分布式环境:Dubbo+Zookeeper

在浏览器输入:ip:8080/dubbo-admin-2.5.4-SNAPSHOT输入密码进入。

 

五:SpringBoot和Dubbo、Zookeeper版本不兼容问题的解决

5.1官方匹配的版本

请参考:SrpingBoot整合Zookeeper和Dubbo的版本匹配问题

 

5.2依赖冲突

请参考:依赖包冲突

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年全球前端大技术大会(GMTC北京站2023)-核心PPT资料下载

一、峰会简介 大会以“业务至上&#xff0c;效率为王”为主题&#xff0c;策划了 1 个主会场&#xff0c;10 个技术专场。会议议题包含前端 DevOps 实践、低代码、大前端监控、跨端技术选型、团队可持续发展、IoT 动态应用开发、移动端性能与效率优化、TypeScript、大前端技术…

人工智能并不像你想象的那么迫在眉睫

来源&#xff1a;AI前线作者&#xff1a;Gary Marcus策划&#xff1a;孙瑞瑞如果你仔细观察就会发现&#xff0c;最新的系统&#xff0c;包括 DeepMind 大肆宣传的 Gato&#xff0c;仍然被同样的老问题所困扰。在普通人看来&#xff0c;人工智能&#xff08;AI&#xff09;领域…

从感知机到Transformer,一文概述深度学习简史

来源&#xff1a;机器之心作者&#xff1a;Jean de Dieu Nyandwi这篇文章从感知机开始&#xff0c;按照时间顺序回顾了深度学习的历史。1958 年&#xff1a;感知机的兴起1958 年&#xff0c;弗兰克 罗森布拉特发明了感知机&#xff0c;这是一种非常简单的机器模型&#xff0c;…

深度学习的综述的综述

来源&#xff1a;知乎文章来源&#xff1a;https://zhuanlan.zhihu.com/p/85625555“ 综述永远是入门新领域的最快捷径之一&#xff01;”2018年下半年an发的一篇综述类文献&#xff0c;好心的机器之心已经翻译好了&#xff0c;我就直接复制下来修改一下表述的错误和补充&#…

Docker添加或者更改容器的端口映射

QUESTION&#xff1a;Docker添加或者更改容器的端口映射&#xff1f; ANSWER: 初学Docker容器&#xff0c;按照教程的基本命令&#xff0c;拉取创建了几个容器&#xff0c;都是在一开始新建的时候 docker run -p 指定对应的端口&#xff0c;但对于docker start 没有这个功能&…

新书推荐:人工智能通识讲义

中国科学院大学经济与管理学院 副院长 中国科学院虚拟经济与数据科学研究中心 副主任 田英杰 目前&#xff0c;新一代人工智能&#xff08;AI&#xff09;技术处于爆发期之后的深化期&#xff0c;各行业都需要大量的具备AI技术素养的专业人才&#xff0c;人们的日常生活已经和A…

清华大学联手中科院顶会发文:全面分析四大自动驾驶策略

来源&#xff1a;新智元当前自动驾驶的策略研究还停留在具体场景执行具体策略&#xff0c;最近清华大学的研究人员在交通领域的顶会发表了一篇全面的综述&#xff0c;从更高级的角度分析自动驾驶策略。当自动驾驶遇见会车&#xff0c;应该抢先通过&#xff0c;还是等待让行&…

是什么让人类的大脑比其它动物更聪明?

Lena Vargas来源&#xff1a;六六脑在认知领域&#xff0c;人类有着无与伦比的卓越性。毕竟&#xff0c;还没有哪一个物种能向陌生的星球发射探测器&#xff0c;研发出可以挽救生命的疫苗&#xff0c;以及写出能够流芳百世的诗歌。人脑是如何处理信息的&#xff1f;人们对这一问…

MongoDB:SpringBoot有关@Document(collection = )与@Document(collation= )注解的区别

目录 QUESTION&#xff1a;SpringBoot有关Document(collection "")与Document(collation "")注解的区别&#xff1f; ANSWER&#xff1a; 一、问题原因 二、分析 2.1 Collection Id Document Indexed CompoundIndex Field Transient DBRef 2.…

清华大学药学院丁胜团队在《自然》发表突破性全能干细胞创新研究

来源&#xff1a;清华大学药学院最新科研速递 清华大学药学院丁胜教授及其团队首次发现全能干细胞的体外定向诱导及其稳定培养的药物组合&#xff0c;该突破性研究被国际顶级学术期刊《自然》&#xff08;Nature&#xff09;于北京时间2022年6月21日在线发表。该研究标…

RocketMQ:Linux下启动server和broker的命令

目录 QUESTION:RocketMQ&#xff1a;Linux下启动server和broker的命令? ANSWER: 一、启动mqnamesrv 1.1当前执行 1.2后台运行 二、启动mqbroker 2.1当前执行 2.2后台运行 QUESTION:RocketMQ&#xff1a;Linux下启动server和broker的命令? ANSWER: 一、启动mqnamesrv …

美国人如何看待超自然?

来源&#xff1a;返朴撰文&#xff1a;李品保原文刊载于《中华读书报》2022年6月22日期&#xff0c;《返朴》经授权发表。寻求超自然现象不是一种对理性的非理性反应&#xff0c;而是一种他择性合理性&#xff0c;也可将其视为美国人特定不安分的额外调解&#xff0c;这种不安分…

114名科学家Science发布关于长寿的最大规模动物研究:揭示了衰老的秘密

来源&#xff1a;生物通一个114名科学家组成的国际研究小组报告了迄今为止世界范围内最全面的关于爬行动物和两栖动物衰老和寿命的研究。在他们的许多发现中&#xff0c;他们首次记录了海龟、鳄鱼和蝾螈的衰老率特别低&#xff0c;并根据其体型延长了寿命。研究小组还发现&…

服务器上的Linux中Tomcat有时会挂掉的问题及方法

QUESTION&#xff1a;服务器上的Linux中Tomcat有时会挂掉的问题及方法? 目录 QUESTION&#xff1a;服务器上的Linux中Tomcat有时会挂掉的问题及方法? ANSWER: 一、内存不足 二、服务器内存不足 三、解决方法 3.1Tomcat内存优化 3.2代码优化内存泄漏 ANSWER: 正在启动的…

《关于加强数字政府建设的指导意见》最重要内容是这条。

来源&#xff1a;中国智慧城市论坛日前&#xff0c;国务院发布《国务院关于加强数字政府建设的指导意见》&#xff0c;我们在其中找到了让我们千呼万唤、翘首以盼、望眼欲穿的这段文字&#xff1a;强化考核评估。在各级党委领导下&#xff0c;建立常态化考核机制&#xff0c;将…

毕业设计-人脸表情识别系统、人工智能

人脸表情识别系统 1. 前言 在这个人工智能成为超级大热门的时代&#xff0c;人脸表情识别已成为其中的一项研究热点&#xff0c;而卷积神经网络、深度信念网络和多层感知器等相关算法在人脸面部表情识别领域的运用最为广泛。面部的表情中包含了太多的信息&#xff0c;轻微的表…

谷歌布莱克·勒莫因:为什么我觉得AI已觉醒了?

来源&#xff1a;科技智谷编辑&#xff1a;Light人们在 AI 身上寄托了感情&#xff0c;被一系列拟人化的 AI 术语误导&#xff0c;LaMDA 本质就是个聊天机器人。谷歌工程师布莱克勒莫因&#xff08;Blake Lemoine&#xff09;上周发布了一份他分发给同事的文件&#xff0c;引起…

阿里云数据库Mysql被黑

阿里云数据库Mysql被黑 打开Mysql查看数据库时&#xff0c;发现所有的服务器上的数据库被黑 百度翻译了一下&#xff1a; 总结一下&#xff1a; 以下是常用的可以保护数据库的方式&#xff0c;供参考。可以有效防止被攻击。 1.密码强化&#xff0c;使用复杂密码设置&#xff0…

集体心智:社会网络拓扑塑造集体认知

来源&#xff1a;集智俱乐部作者&#xff1a;Ida Momenneja译者&#xff1a;许逸聪审校&#xff1a;陈斯信编辑&#xff1a;邓一雪导语人类是社会动物&#xff0c;人类的认知也是通过在社会网络中学习和记忆而形成。人类的社会网络与其他物种不同&#xff0c;有着复杂多样的成分…

OpenAI最新研究:AI模型看看视频,就学会了玩《我的世界》

《我的世界》里&#xff0c;玩家不一定都是人类&#xff0c;现在 AI 也会玩了。来源&#xff1a;机器之心《我的世界》是全球知名度最高的开放世界游戏。小朋友只需观看十分钟的教学视频&#xff0c;就能学会在游戏中寻找稀有的钻石&#xff0c;但这却是 AI 此前无法企及的高度…