内容简介:官方提供的demo太多,内容也很详细,资料也多,导致不易快速上手,以下是我根据官方文档整理出来的快速上手步骤首先rpc调用都需要有注册中心,zookeeper, nacos,redis等都可以拿来作为注册中心 这里为了演示方便我们还是拿经典的zookeeper做演示完整代码已上传github:
官方提供的demo太多,内容也很详细,资料也多,导致不易快速上手,以下是我根据官方文档整理出来的快速上手步骤
首先rpc调用都需要有注册中心,zookeeper, nacos,redis等都可以拿来作为注册中心 这里为了演示方便我们还是拿经典的zookeeper做演示
完整代码已上传github: github.com/neatlife/my… 下载后启动zookeeper即可运行
获取一个可用的zookeeper实例
可以使用 docker 启动zookeeper,比如 docker-compose-single.yml
version: '3.1' services: zoo: image: 31z4/zookeeper restart: always hostname: zoo1 ports: - 2181:2181 复制代码
然后执行 docker-compose -f docker-compose-single.yml up -d
命令启动zookeeper实例
执行 lsof -i :2181 查看效果
可以看到zookeeper已经在2181端口进行监听了
规划模块
一个rpc服务至少需要以下4个模块组成
模块名 | 作用 |
---|---|
my-api | 给my-provider和my-consumer 提供统一的接口和数据传输dto |
my-provider | 服务提供方 |
my-consumer | 服务消费方 |
my-dubbo-spring-boot | 项目外层模块,组织以上3个模块 非必须,可以提供一些子模块可以复用的依赖,属性等 |
在idea中创建项目my-dubbo-spring-boot和三个子模块,都使用maven来管理依赖
my-provider和my-consumer都要依赖dubbo库
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> </dependency> 复制代码
my-api提供通用依赖,所以不需要任何依赖 因为是spring boot项目,所以spring boot依赖肯定是有的,完整依赖可以去github查看源代码
<!-- Spring Boot dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> 复制代码
编写消费者和服务提供者的接口
在模块my-api中创建服务接口DemoService,代码如下
package com.demo.consumer; /** * Demo Service interface * * @since 2.7.0 */ public interface DemoService { String sayHello(String name); } 复制代码
这个就是服务提供者需要提供的服务
然后在my-consumer和my-provider模块中都依赖这个my-api模块,代码如下:
<dependency> <groupId>com.demo</groupId> <artifactId>my-api</artifactId> <version>2.7.1</version> </dependency> 复制代码
编写服务提供者
在my-provider里实现DemoService,核心代码如下
@Service(version = "${demo.service.version}") public class DefaultDemoService implements DemoService { /** * The default value of ${dubbo.application.name} is ${spring.application.name} */ @Value("${dubbo.application.name}") private String serviceName; @Override public String sayHello(String name) { return String.format("[%s] : Hello, %s", serviceName, name); } } 复制代码
然后在项目配置文件声明服务提供者的名字等配置,核心配置如下
# Spring boot application spring.application.name=my-provider # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service dubbo.scan.base-packages=com.demo.provider # Dubbo Application ## The default value of dubbo.application.name is ${spring.application.name} ## dubbo.application.name=${spring.application.name} # Dubbo Protocol dubbo.protocol.name=dubbo ## Random port dubbo.protocol.port=-1 ## Dubbo Registry dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.registry.file = ${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache ## DemoService version demo.service.version=1.0.0 复制代码
然后启动服务者,查看控制台输出效果
编写服务消费者
在my-consumer里调用DemoService,核心代码如下
@EnableAutoConfiguration public class MyConsumerApplication { private final Logger log = LoggerFactory.getLogger(getClass()); @Reference(version = "${demo.service.version}") private DemoService demoService; public static void main(String[] args) { SpringApplication.run(MyConsumerApplication.class).close(); } @Bean public ApplicationRunner runner() { return args -> log.error(demoService.sayHello("World")); } } 复制代码
为了看到明显的输出效果,这里使用了log.error
启动项目,查看调用效果
可以看到输出里带了服务提供者加上的字符串 Hello
一些注意的点
my-api 模块作为dubbo消费者和服务提供者的通用依赖,可以提供通用的服务接口,服务输入,输出dto等
spring boot dubbo官方有提供一个内置的zookeeper,参考: EmbeddedZooKeeper.java ,作者认为一般不会用这种方式启动zookeeper,所以使用docker启动了一个zookeeper,可以自行选择
可以加作者微信一起研究dubbo的使用和原理
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 快速上手前端框架layui
- Gin框架系列01:极速上手
- 小白教程|一小时上手最流行的前端框架vue
- 工具 | 一款上手简单,功能强大的 Python 爬虫框架
- PyTorch官方教程书限时免费!500页内容带你上手最流行框架
- Kbone 框架快速上手:把 Web 端代码直接移植到小程序的工具是否好用?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Google软件测试之道
James A. Whittaker、Jason Arbon、Jeff Carollo / 黄利、李中杰、薛明 / 人民邮电出版社 / 2013-10 / 59.00元
每天,google都要测试和发布数百万个源文件、亿万行的代码。数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行。面对这些看似不可能完成的任务,谷歌是如何测试的呢? 《google软件测试之道》从内部视角告诉你这个世界上知名的互联网公司是如何应对21世纪软件测试的独特挑战的。《google软件测试之道》抓住了google做测试的本质,抓住了google测试这个时代最......一起来看看 《Google软件测试之道》 这本书的介绍吧!