SpringBoot整合Dubbo和Zookeeper升级版

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: SpringBoot整合Dubbo和Zookeeper升级版

分布式架构与Dubbo基础入门与实践一文中初步介绍了分布式架构并使用xml配置方式进行了Dubbo和Zookeeper实践。分布式应用简单入门及SpringBoot整合Dubbo+Zookeeper一文中使用SpringBoot整合了Dubbo和Zookeeper但是并未抽取公共API项目。本文是上述两个项目的升级版。

【1】创建消费者和提供者SpringBoot项目

① 使用Spring starter pproject 分别创建provider和consumer


② 分别将普通项目中的实现拷贝到boot项目中

如这里将order-service-consumer项目中的实现类及包拷贝到boot-order-service-consumer项目中:


③ 分别为两个boot项目添加gmall-interface项目依赖

当然是要依赖公共API项目了:

<dependency>
  <groupId>com.jane.dubbo</groupId>
  <artifactId>gmall-interface</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</dependency>

④ 为消费者项目编写controller

如下所示,拦截页面请求:

@Controller
public class OrderController {
  @Autowired
  OrderService orderService;
  @ResponseBody
  @RequestMapping("/initOrder")
  public List<UserAddress> initOrder(@RequestParam("uid")String userId) {
    return orderService.initOrder(userId);
  }
}

现在项目创建好了,但是远程调用肯定是失败的,需要进行服务配置。


【2】配置服务提供者

① 导入dubbo-starter

<dependency>
  <groupId>com.alibaba.boot</groupId>
  <artifactId>dubbo-spring-boot-starter</artifactId>
  <version>0.2.0</version>
</dependency>

注意starter版本适配:


② 配置application.properties

//application.name就是服务名,不能跟别的dubbo提供端重复
//registry.protocol 是指定注册中心协议
//registry.address 是注册中心的地址加端口号
dubbo.application.name=user-service-provider
dubbo.registry.address=127.0.0.1:2181
dubbo.registry.protocol=zookeeper
//protocol.name 是分布式固定是dubbo,不要改。
//protocol.port是其他服务与本服务通信的端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881
//监控后台
dubbo.monitor.protocol=registry

此时还没有暴露服务,这个别着急,使用Dubbo的@Service注解。


③ Dubbo的@Service注解暴露服务

如下所示:

import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Service;
import com.web.gmall.bean.UserAddress;
import com.web.gmall.service.UserService;
@Service
@Component
public class UserServiceImpl implements UserService {
  //...
}

④ 在主程序启动类中使用@EnableDubbo注解以开启基于注解的dubbo功能

如下所示:

@EnableDubbo//开启基于注解的dubbo功能
@SpringBootApplication
public class BootUserServiceProviderApplication {
  public static void main(String[] args) {
    SpringApplication.run(BootUserServiceProviderApplication.class, args);
  }
}

⑤ 启动主程序,查看Dubbo Admin

多了一个服务器提供者:


【3】配置服务消费者

① 导入dubbo-starter

<dependency>
  <groupId>com.alibaba.boot</groupId>
  <artifactId>dubbo-spring-boot-starter</artifactId>
  <version>0.2.0</version>
</dependency>

② 配置application.properties

server.port=8081
dubbo.application.name=boot-order-service-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.monitor.protocol=registry

这里还没有声明要调用哪个远程服务,同样使用注解实现。


③ 使用@Reference注解引用远程的服务

import com.alibaba.dubbo.config.annotation.Reference;
@Service
public class OrderServiceImpl implements OrderService {
  @Reference
  UserService userService;
  //...
}

④ 在主程序启动类中使用@EnableDubbo注解以开启基于注解的dubbo功能

@EnableDubbo
@SpringBootApplication
public class BootOrderServiceConsumerApplication {
  public static void main(String[] args) {
    SpringApplication.run(BootOrderServiceConsumerApplication.class, args);
  }
}

⑤ 启动主程序,查看Dubbo Admin

多了一个服务消费者:


⑥ 由于消费者是一个web工程,使用浏览器发送请求进行测试

多刷新浏览器(多次请求),在Monitor管理界面中可以查看请求与响应信息监控:


至此,五个项目如下所示(项目下载地址):


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
3月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
1月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
51 1
|
2月前
|
存储 负载均衡 监控
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
这篇文章是关于Apache Dubbo框架与Zookeeper的关系,以及如何下载、安装和启动Zookeeper的教程,包括解决启动过程中可能遇到的报错问题。
96 3
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
|
2月前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
30 4
|
2月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
167 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
3月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
1天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
3月前
|
存储 负载均衡 Dubbo
分布式-Zookeeper(一)
分布式-Zookeeper(一)
|
26天前
|
存储 运维 NoSQL
分布式读写锁的奥义:上古世代 ZooKeeper 的进击
本文作者将介绍女娲对社区 ZooKeeper 在分布式读写锁实践细节上的思考,希望帮助大家理解分布式读写锁背后的原理。
|
5月前
|
监控 NoSQL Java
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决

热门文章

最新文章