Springboot+dubbo+zookeeper项目集成的使用

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Springboot+dubbo+zookeeper项目集成的使用

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云星级博主

📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 联系方式vx:zsqtcc

项目全部源码及其zookeeper安装包

公众号:知识浅谈 后台回复“springboot集成dubbo”获取下载连接。

  • 第一步:获取完上边的项目之后,先安装zookeeper,
  • 安装zookeeper,只需要在zookeeper的跟文件夹下创建一个data文件夹,然后在conf文件夹下复制zoo_sample.cfg,粘贴到和zoo_sample 相同目录下重命名为zoo.cfg

  • 然后修改zoo.cfg中的dataDir后边的地址为你刚才创建的data文件夹的绝对路径

    然后就可以在bin文件夹下的zkServer.cmd,启动注册中心了,当然,等你下边项目写完之后,先运行这个文件,再运行项目就ok了
  • 第二步,项目部署
  • 先给出我的文件夹结构,结合着创建项目

     
     

   

第一个项目:建立对应的用于接口的项目,因为接口在服务提供者和服务消费者都用的到(服务提供者用接口实现,服务消费者使用接口调用服务提供者实现的方法)

不选哪个create直接点击下一步创建即可,名字结合我项目中的或者上边文件结构中的。

该项目中就一个文件service的接口,而且pom.xml不用改变

packagecom.englishcode.springboot.service;
/*** @author cyl* @version 1.0* @date 2020/10/27 11:26*/publicinterfaceStudentService {
IntegerqueryAllStudentCount();
}

第二个项目21服务提供者:使用springboot创建

名字同样参考文件结构

对应的pom.xml文件:

<?xmlversion="1.0" encoding="UTF-8"?><projectxmlns="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.3.4.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.englishcode.springboot</groupId><artifactId>021-springboot-dubbo-provider</artifactId><version>1.0.0</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--dubbo集成springboot依赖--><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!--注册中心--><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency><!--接口工程--><dependency><groupId>com.englishcode.springboot</groupId><artifactId>020-springboot-dubbo-interface</artifactId><version>1.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

对应的application.properties

#设置内嵌tomcat端口号
server.port=8081
#设置上下文
server.servlet.context-path=/
#设置dubbo的配置
spring.application.name=021-springboot-provider
#设置当前工程是一个服务提供者
spring.dubbo.server=true
#设置注册中心
spring.dubbo.registry=zookeeper://127.0.0.1:2181

对应的启动文件:

package com.englishcode.springboot;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubboConfiguration   //开启dubbo配置
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

对应的service实现文件

packagecom.englishcode.springboot.service.impl;
importcom.alibaba.dubbo.config.annotation.Service;
importcom.englishcode.springboot.service.StudentService;
importorg.springframework.stereotype.Component;
/*** @author cyl* @version 1.0* @date 2020/10/27 11:28*/@Component//加载到spring容器中@Service(interfaceClass=StudentService.class,version="1.0.0",timeout=15000)              //这个即使最后要暴漏出去的类名publicclassStudentServiceImplimplementsStudentService {
@OverridepublicIntegerqueryAllStudentCount() {
return12;
    }
}
  • 对于第三个项目22服务消费者:
  • pom.xml和上边的差不多,以来都一样,把对应的名字什么改一下就行,源码如下
<?xmlversion="1.0" encoding="UTF-8"?><projectxmlns="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.3.4.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.englishcode.springboot</groupId><artifactId>022-springboot-dubbo-consumer</artifactId><version>1.0.0</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--dubbo集成springboot框架起步依赖--><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!--注册中心--><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency><!--接口工程,只有有这个才能知道提供者要提供哪些工程,消费者需要哪些工程--><dependency><groupId>com.englishcode.springboot</groupId><artifactId>020-springboot-dubbo-interface</artifactId><version>1.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

对应的application.properties

#设置内嵌tomcat端口号
server.port=8082
server.servlet.context-path=/
#dubbo配置
spring.application.name=022-springboot-dubbo-consumer
#指定注册中心,使用的是zookeeper
spring.dubbo.registry=zookeeper://127.0.0.1:2181

对应的启动文件:

packagecom.englishcode.springboot;
importcom.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication@EnableDubboConfiguration//开启dubo的配置publicclassApplication {
publicstaticvoidmain(String[] args) {
SpringApplication.run(Application.class, args);
    }
}

对应的controller

packagecom.englishcode.springboot.service;
importcom.alibaba.dubbo.config.annotation.Reference;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.ResponseBody;
/*** @author cyl* @version 1.0* @date 2020/10/27 11:21*/@ControllerpublicclassStudentController {
@Reference(interfaceClass=StudentService.class,version="1.0.0",check=false)  //相当于从注册中心要引用哪个方法privateStudentServicestudentService;
@RequestMapping("")
public@ResponseBodyObjectstudentCount(){
Integerall=studentService.queryAllStudentCount();
return"学生总人数:"+all;
    }
}

注意:在配置文件中设置的那个server.port不能相同会冲突,代码中已经设置为不相同了。

开始运行:

运行步骤:注册中心(zookeeper)运行,然后运行服务提供者,最后运行服务消费者,然后通过网页访问查看是否成功。

第一步,zookeeper运行起来如下:

这就代表运行成功了

第二步:运行服务提供者:

第三步:运行服务消费者

最后一步:访问网页

完美结束,你,学会了吗

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
28天前
|
JavaScript 前端开发
如何在项目中集成 Babel?
如何在项目中集成 Babel?
34 3
|
2月前
|
存储 负载均衡 监控
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
这篇文章是关于Apache Dubbo框架与Zookeeper的关系,以及如何下载、安装和启动Zookeeper的教程,包括解决启动过程中可能遇到的报错问题。
85 3
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
|
2月前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
23 4
|
2月前
|
存储 JavaScript 数据库
ToB项目身份认证AD集成(一):基于目录的用户管理、LDAP和Active Directory简述
本文介绍了基于目录的用户管理及其在企业中的应用,重点解析了LDAP协议和Active Directory服务的概念、关系及差异。通过具体的账号密码认证时序图,展示了利用LDAP协议与AD域进行用户认证的过程。总结了目录服务在现代网络环境中的重要性,并预告了后续的深入文章。
|
2月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
2月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
144 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
2月前
|
安全 Java 测试技术
ToB项目身份认证AD集成(二):快速搞定window server 2003部署AD域服务并支持ssl
本文详细介绍了如何搭建本地AD域控测试环境,包括安装AD域服务、测试LDAP接口及配置LDAPS的过程。通过运行自签名证书生成脚本和手动部署证书,实现安全的SSL连接,适用于ToB项目的身份认证集成。文中还提供了相关系列文章链接,便于读者深入了解AD和LDAP的基础知识。
|
2月前
|
Java Shell 开发工具
git集成IDEA,托管项目实现版本管理
git集成IDEA,托管项目实现版本管理
33 0
|
Java 应用服务中间件 Maven
传统maven项目和现在spring boot项目的区别
Spring Boot:传统 Web 项目与采用 Spring Boot 项目区别
504 0
传统maven项目和现在spring boot项目的区别
|
XML Java 数据库连接
创建springboot项目的基本流程——以宠物类别为例
创建springboot项目的基本流程——以宠物类别为例
155 0
创建springboot项目的基本流程——以宠物类别为例