Dubbo与SpringBoot的结合

2019-11-09  本文已影响0人  cartoony

前言

这段时间在接触分布式的内容,由于本身比较熟悉rpc的原理,所以我顺其自然地选择了 dubbo 作为我学习的框架。
看了任务清单,这篇文章应该是在6天前出来的,但是因为实习等等的一些事情耽误了,今天立下决心动笔了。

准备

必需
JAVA 环境
注册中心(我选用的是 nacos )

非必需
maven / gradle(本文使用gradle构建)
docker
idea(这个应该是必需吧?当然也可以用记事本(滑稽.jpg))

正文

  1. 新建普通的 gradle 项目(不勾选任何选项)
  2. 新建三个module,分别命名为 Common,DubboProducer,DubboConsumer
Common -- 普通 gradle 项目,用于定义 proucer 以及 consumer 交互的接口以及规范
DubboProducer -- Spring Boot 本地项目,用于为 Common 中定义的服务接口创建实体类
DubboConsumer -- Spring Boot web 项目,接收用户请求,调用 producer 处理请求并返回结果
    includeFlat 'Common'
- setting.gradle 新增

```
includeFlat 'Common'
```
dubbo:
  registry:
    address: nacos://cartoon-ali.com:8848
  application:
    name: dubbo-producer
  protocol:
    port: -1
    name: dubbo
@SpringBootApplication
@EnableDubbo
public class DubboConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerApplication.class, args);
    }

}
  1. 示例搭建(Hello World)
public interface DubboService {

    String say();
}
@org.apache.dubbo.config.annotation.DubboService
@Service
public class DubboServiceImpl implements DubboService {

    @Override
    public String say() {
        return "dubbo producer";
    }

}

注意:@Service 注解是 Srping 的注解,@org.apache.dubbo.config.annotation.Service 已在版本 2.7.7 被 @org.apache.dubbo.config.annotation.DubboService取代

@RestController
public class TestController {

    @DubboReference
    private DubboService dubboService;

    @RequestMapping("/test")
    public String test(){
        return dubboService.say();
    }
}

dubbo 的服务消费应该在消费者中的 Service 层做整合消费后返回处理结果,这里仅为演示。

  1. 运行

先运行 provider 再运行 consumer,否则 dubbo 会因无法找到服务提供者自行关闭消费者。

image image

后记

虽然在网上已经有很多这方面的教程,但是大多是用 zookeeper 作为注册中心。
而个人喜欢接触新技术,nacos 在今年1月才由阿里开源出来。而且我比较喜欢 nacos 的界面风格,虽然 nacos 在功能上不如 zookeeper+dubboAdmin 强大,但是作为入门应该是足够的。

源码地址

本文所涉及代码都已上传到github

修改历史

  1. 2019 年 11 月 09 日
    1. 文章初始版本编写
  2. 2020 年 10 月 11 日
    1. 删减错误的描述
      1. 服务的消费方与生产方启动类都应添加 @EnableDubbo 注解,修改前为生产方启动类应添加 @EnableDubbo 注解
    2. 优化部分描述
      1. 第四点运行中的模拟调用不再使用 RestServices 进行调用,使用更为普遍的 postman 调用
    3. 优化 demo 的代码结构
      1. 使用 gradle 构建,修改前为 maven
      2. 使用多组件方式进行项目的构建,使 demo 不再局限于 demo,可成为更加常用的工具

本文首发于cartoon的博客

转载请注明出处:https://cartoonyu.github.io/cartoon-blog/post/dubbo/dubbo与springboot的结合/

上一篇 下一篇

猜你喜欢

热点阅读