SpringBoot整合Dubbo和Zookeeper升级版

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 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实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
1月前
|
NoSQL Java Redis
Springboot从2.x升级到3.x以后redis默认配置调整
Springboot从2.x升级到3.x以后redis默认配置调整
45 0
|
2月前
|
Dubbo Java 应用服务中间件
实战指南:如何在Spring Boot中无缝整合Dubbo【四】
实战指南:如何在Spring Boot中无缝整合Dubbo【四】
44 0
|
3月前
|
Dubbo Java 应用服务中间件
Spring Boot Dubbo 构建分布式服务
Spring Boot Dubbo 构建分布式服务
47 0
|
12天前
|
安全 Java
Springboot2.1.1版本升级到2.3.10版本报错合集及解决办法
Springboot2.1.1版本升级到2.3.10版本报错合集及解决办法
|
27天前
|
SQL 监控 Java
nacos常见问题之dubbo+nacos+springboot3的native打包成功后运行出现异常如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
33 2
|
1月前
|
Dubbo Java 应用服务中间件
Spring Boot整合Dubbo+Zookeeper实现RPC调用
Spring Boot整合Dubbo+Zookeeper实现RPC调用 技术栈说明 Dubbo:Dubbo作为RPC框架,能在多个服务之间实现远程服务的调用。比如有两个独立的微服务A和B,A服务想要调用B服务时,因为两者不在同个内存空间中,不能直接调用,所以可以通过Dubbo实现这点。 功能和Spring Cloud的Feign相同,两者都是应用于微服务架构的远程调用框架 Zookeeper:作为注册中心去管理Dubbo服务,这点和Eureka、Nacos相同。 概述 通过一个示例说明Dubbo+Zookeeper在Spring Boot中的应用。 现有两个服务provider和con
114 4
|
2月前
|
XML 资源调度 Dubbo
深度剖析dubbo和zookeeper关系
当网站规模达到了一定的量级的时候,普通的MVC框架已经不能满足我们的需求,于是分布式的服务框架和流动式的架构就凸显出来了。
17 0
|
9天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
29 2
|
3月前
|
消息中间件 Java 网络安全
JAVAEE分布式技术之Zookeeper的第一次课
JAVAEE分布式技术之Zookeeper的第一次课
70 0
|
1月前
|
监控 NoSQL Java
Zookeeper分布式锁
Zookeeper分布式锁
90 1