分布式应用开发 | SpringBoot+dubbo+zookeeper实现服务注册发现 | 远程服务调用
前言
通过新建两个独立服务——提供者、消费者,模拟两个独立分布的应用,通过使用dubbo+zookeeper来实现远程服务调用。
目录
项目搭建
- provider-server
- consumer-server
实现并测试
- provider-server注册
- consumer-server远程调用
项目搭建
为了方便,新建一个空的项目:

在空项目上new一个module,使用SpringBoot,作为服务提供者

删除不需要的文件:

在来 new一个module,使用SpringBoot,作为服务消费者

两个服务分别导入dobbo和zookeeper依赖
<!-- 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> <!-- 引入zookeeper客户端 -->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency> <!-- 日志回冲突-->
<!-- 引入zookeeper -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<!--排除这个slf4j-log4j12-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
坑:日志冲突
编写服务提供者-实际服务:
package com.hwl.service; import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component; /**
* @author:hwl
* @date:2021/10/8 13:13
* @Function:
* @Description:
*/
@Service //这是dubbo的,不是service的,作用是服务启动 自动注册到服务中心
@Component //这是Spring的,这里平时是用service但是现在为了区别dubbo用Component
public class TicketServiceImpl implements TicketService { @Override
public String getTicket(){
return "拿到票子啦!";
}
}
配置启动端口和dubbo信息
server.port=8001 #当前应用名字
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描指定包下服务
dubbo.scan.base-packages=com.hwl.service
启动zookper
启动dubbo-admin
启动提供者服务
注:需要注意启动顺序,而且涉及通讯会有一些延迟。
访问dubbo-admin查看我们的服务是否注册到服务中心:http://localhost:7001

可以看到我们的服务已经注册进来了。
消费者:
package com.hwl.service; import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service; /**
* @author:hwl
* @date:2021/10/8 13:22
* @Function:
* @Description:
*/
@Service //这里是放到spring容器不是dubbo
public class UserService{
//去拿提供者提供的票,需要去注册中心拿服务
@Reference //引用,pom坐标,可以定义路径相同的接口名
TicketService ticketService; public void buyTicket(){
String ticket = ticketService.getTicket();
System.out.println( ticket );
}
}
需要注意的是这里的 TicketService 路径需要和注册中心中是实际TicketService 一样,实际调用的是服务中心中注册的远程服务。
配置:
server.port=8002 #当前应用名字
dubbo.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
消费者调用注册中心服务测试类:
package com.hwl; import com.hwl.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest
class ConsumerServerApplicationTests { @Autowired
UserService userService; @Test
void contextLoads() {
userService.buyTicket();
} }
运行测试:

消费者服务成功调用到了提供者注册在服务中心的服务了!
这就是SpingBoot + dubbo + zookeeper实现分布式开发的应用,其实就是一个服务拆分的思想。
分布式应用开发 | SpringBoot+dubbo+zookeeper实现服务注册发现 | 远程服务调用的更多相关文章
- Zookeeper实现服务注册/发现
what that? Zookeeper在分布式开发中使用频繁,但许多框架都对其进行了封装,初学者可能无法较好的理解其工作原理,该文章演示了使用Zookeeper实现服务注册,服务发现的简单demo, ...
- springboot+dubbo+zookeeper微服务实践demo
微服务化越来越火,实际上是应互联网时代而生的,微服务化带来的不仅是性能上的提升,更带来了研发组织的更加便利,协作更加轻松,团队效能更高. 当然不能为了技术而技术,我们需要切合实际的对业务进行划分,降低 ...
- springboot使用zookeeper(curator)实现注册发现与负载均衡
最简单的实现服务高可用的方法就是集群化,也就是分布式部署,但是分布式部署会带来一些问题.比如: 1.各个实例之间的协同(锁) 2.负载均衡 3.热删除 这里通过一个简单的实例来说明如何解决注册发现和负 ...
- spring cloud Eureka 服务注册发现与调用
记录一下用spring cloud Eureka搭建服务注册与发现框架的过程. 为了创建spring项目方便,使用了STS. 一.Eureka注册中心 1.新建项目-Spring Starter Pr ...
- SpringBoot + Dubbo + zookeeper 搭建简单分布式服务
SpringBoot + Dubbo + zookeeper 搭建简单分布式服务 详细操作及源码见: https://github.com/BillyYangOne/dubbo-springboot
- SpringBoot + Spring Cloud Eureka 服务注册与发现
什么是Spring Cloud Eureka Eureka是Netflix公司开发的开源服务注册发现组件,服务发现可以说是微服务开发的核心功能了,微服务部署后一定要有服务注册和发现的能力,Eureka ...
- 搭建SpringBoot+dubbo+zookeeper+maven框架(一)
这几天项目还没来,所以就自己试着参考网上的一些资料,搭建了一个SpringBoot+dubbo+zookeeper+maven框架,网上参考的很多资料照着他们一步一步搭建,最后很多都运行不通,很是郁闷 ...
- springboot+dubbo+zookeeper+mybatis
参考地址:https://www.cnblogs.com/gaopengfirst/p/9555240.html 首先创建一个maven项目: 再在该父项目中创建3个module,分别是:provid ...
- 服务注册发现与注册中心对比-Eureka,Consul,Zookeeper,Nacos对比
服务注册发现与注册中心对比-Eureka,Consul,Zookeeper,Nacos对比 注册中心简介 流程和原理 基础流程 核心功能 1.Eureka.Consul.Zookeeper三者异同点 ...
随机推荐
- JAVAWEB开发批量删除,SSM的几种情况
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Learning ROS: Packaging your ROS project as a snap
Snaps are containerised software packages that are simple to create and install. They auto-update an ...
- Learning ROS: Managing System dependencies
Download and install the system dependencies for turtlesim: roscd turtlesim cat package.xml rosdep i ...
- 程序挂了之后别再跟我说让我帮你重启啦! 让supervisor帮你搞定...
目录 有啥用? 安装 生成配置文件 启动supervisor 自定义配置文件 控制命令 求关注啦 有啥用? 很多我们项目排期进入联调.测试阶段,如果QA同学是直接跟你要一个后端环境的话,那简单点大概率 ...
- CentOS 7.3安装Zabbix3.2
一.ZABBIX概述 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件.可以监视各种系统与设备的参数,保障服务器及设备的安全运营. Zabbix的功能和特性: 1.安装与配置简单: ...
- 从kratos分析breaker熔断器源码实现
为什么要用熔断 前面我们讲过限流保证服务的可用性,不被突如其来的流量打爆.但是两种情况是限流解决不了的. 如果我们服务只能处理1000QPS,但是有10wQPS打过来,服务还是会炸.因为拒绝请求也需要 ...
- bat 使用ftp进行文件上传
实例 @echo off rem 打开远程ftp echo open 172.16.137.23 > ftpconfig.txt rem 使用匿名用户登录 echo user anonymuou ...
- K8S集群架构的组件组成
1.Master--主控节点 (1)apiserver:集群统一入口,以restful的方式,交给etcd存储 (2)scheduler:节点调度,选择node节点应用部署 (3)controller ...
- Identity用户管理入门三(注册用户)
用户注册主要有2个方法,1.密码加密 2.用户注册 3.ASP.NET Core Identity 使用密码策略.锁定和 cookie 配置等设置的默认值. 可以在类中重写这些设置 Startup(官 ...
- SprinBoot-SpringData-整合
目录 SpringData 整合JDBC JDBCTemplate 整合Druid 配置数据源 配置Druid数据源监控 整合MyBatis 整合测试 整合Redis 测试整合 序列化配置 自定义re ...