总体实现思路是启动一个生产者项目注册, 将所含服务注册到zookeeper的注册中心, 然后在启动一个消费者项目,将所需服务向zookeeper注册中心进行订阅, 等待注册中心的通知
注册中心基于负载均衡算法给消费者匹配到合适的生产者主机,然后通知消费者可以使用
实现生产者
导入zookeeper依赖包
<!-- 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 --> <!--【新版的坑】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>
配置服务名字, 注册中心地址, 扫描被注册的包
server.port=8081 #当前应用名字 dubbo.application.name=provider-server #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 #扫描指定包下服务 dubbo.scan.base-packages=com.demo.service
实现一个接口,在接口中完成需求
public interface Translate { String translate(String str); }
public interface Translate { String translate(String str); }
实现一个消费者
导入依赖, 和生产者的依赖是相同的
配置服务名字,注册中心地址
server.port=8082 # 配置zookeeper # 配置服务名字 dubbo.application.name=consumer.server # 配置注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181
本来正常步骤是需要将服务提供者的接口打包,然后用pom文件导入,我们这里使用简单的方式,直接将服务的接口拿过来,路径必须保证正确,即和服务提供者相同
实
现获取翻译服务
package com.demo.service; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; @Service //使用Spring的Service添加组件 public class Translation { @Reference //远程引用指定的服务,他会按照全类名进行匹配,看谁给注册中心注册了这个全类名 private Translate translate; public String getTranslation(String str) { return translate.translate(str); } }
实现controller
@RestController public class TranslateController { @Autowired Translation translation; @RequestMapping("/tran/{str}") public String tran(@PathVariable("str")String str) { return translation.getTranslation(str); } }
测试
首先启动zookeeper服务器和dubbo进入到监控页面中
切记不要关闭服务器和dubbo开启生产者这个springboot项目
上图显示就是生产者注册成功, 我们可以点击ip查看详情
启动消费者这个springboot项目
访问地址, 但是要注意我们消费者的tomcat启动端口已经换成8082
翻译成功
到此这篇关于SpringBoot中dubbo+zookeeper实现分布式开发的应用详解的文章就介绍到这了,更多相关SpringBoot dubbo zookeeper分布式内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍SpringBoot+Dubbo+Seata分布式事务实战详解,包括了SpringBoot+Dubbo+Seata分布式事务实战详解的使用技巧和注意事项,需要的朋友参考一下 前言 Seata 是 阿里巴巴开源的分布式事务中间件,以高效并且对业务0侵入的方式,解决微服务场景下面临的分布式事务问题。 事实上,官方在GitHub已经给出了多种环境下的Seata应用示例项目,地址:https
本文向大家介绍详解SpringBoot开发案例之整合Dubbo分布式服务,包括了详解SpringBoot开发案例之整合Dubbo分布式服务的使用技巧和注意事项,需要的朋友参考一下 前言 在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了。在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使用的 xml 配置方
一个挺着啤酒肚,身穿格子衫,发际线严重后移的中年男子,手拿着保温杯,胳膊夹着MacBook向你走来,看样子是架构师级别。 面试开始, 直入正题。 面试官: 你有没有参与过秒杀系统的设计? 我: 没有,我平时都是开发后台管理系统、OA办公系统、内部管理系统,从来没有开发过秒杀系统。 面试官: 嗯...,小伙子很实诚。今天就先到这里吧,后面有消息会主动联系你。 后面还可能有消息吗?你们啥时候主动联系过
本文向大家介绍Springboot-dubbo-fescar 阿里分布式事务的实现方法,包括了Springboot-dubbo-fescar 阿里分布式事务的实现方法的使用技巧和注意事项,需要的朋友参考一下 大家可以自行百度下阿里分布式事务,在这里我就不啰嗦了。下面是阿里分布式事务开源框架的一些资料,本文是springboot+dubbo+fescar的集成。 快速开始 https://githu
本文向大家介绍Springboot 整合 Dubbo/ZooKeeper 实现 SOA 案例解析,包括了Springboot 整合 Dubbo/ZooKeeper 实现 SOA 案例解析的使用技巧和注意事项,需要的朋友参考一下 一、为啥整合 Dubbo 实现 SOA Dubbo 不单单只是高性能的 RPC 调用框架,更是 SOA 服务治理的一种方案。 核心: 远程通信,向本地调用一样调用远程方法。
本文向大家介绍Zookeeper 如何实现分布式锁?相关面试题,主要包含被问及Zookeeper 如何实现分布式锁?时的应答技巧和注意事项,需要的朋友参考一下 分布式锁的实现方式有很多种,比如 、数据库 、 等。个人认为 在实现分布式锁这方面是非常非常简单的。 上面我们已经提到过了 zk在高并发的情况下保证节点创建的全局唯一性,这玩意一看就知道能干啥了。实现互斥锁呗,又因为能在分布式的情况下,所以