我觉得dubbo在小型化微服务中非常方便, 今天就集成一个精简的demo, 帮助更好的理解和使使用dubbo
简要概念
Dubbo: 是一款高性能的Java RPC框架
zookeeper: 是一个分布式的,开放源码的分布式应用程序协调服务
第一步zookeeper安装
- 单独写一篇zookeeper安装, 并启动起来
第二步整合dubbo
运行环境:JDK8,Maven 3.0+
技术栈:SpringBoot 2.0+、Dubbo 2.5+、ZooKeeper 3.3+
将服务生产方和调用发分为了两个项目, 分别是dubbo-springboot-provide和dubbo-springboot-consumer, 两个项目的api模块和项目的POM.XML是一样的。
项目的POM.XML文件
这里两个项目用的pom.xml是一样的, 引入两个东西, zookeeper和dubbo
1 | <?xml version="1.0" encoding="UTF-8"?> |
api模块
这里只有两处需要编写, 一处是对外开放的接口HelloService, 另一处就是pom.xml了
HelloService内容如下
api模块的POM.XML内容如下
1 | <?xml version="1.0" encoding="UTF-8"?> |
provide服务生产者项目
- 项目的端口是9091
- provide的文件结构是这个样子
1.HelloServiceImpl
需要为这个提供的服务提供版本(hello.service.version), 提供的服务是sayHello
1 | package com.example.provider.service.impl; |
2.生产者的启动类
使用@EnableDubbo来开启dubbo
1 | package com.example.provider; |
3. 模块的配置文件application.properties
内容包括: 设置项目名称、启动端口、dubbo上的名称、对外服务的版本、dubbo协议、注册中心地址、服务超时时间
1 | spring.application.name = dubbo-provider |
4.服务生产者模块的POM.XML
里面值引入了api模块
1 | <?xml version="1.0" encoding="UTF-8"?> |
consumer服务消费者项目
项目的端口是9091
api模块
和生产者项目的api模块一模一样, 上面已经做了说明, 所以这里不做说明了
concumer模块
项目结构是这个样子的
1. 消费者控制层
1 | package com.example.consumer.controller; |
2. 消费者启动类
1 | import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; |
3. 消费者application.properties
1 | # 项目名称 |
4. 消费者的POM.XML
这里只引入了api模块
1 | <?xml version="1.0" encoding="UTF-8"?> |
项目测试
- 启动zookeeper
- 启动生产者项目, 端口是9090
- 启动消费者项目, 端口是9091
- 访问消费者的接口 http://localhost:9091/sayHello/HelloWorld
项目的地址在这哦: https://gitee.com/minili/dubbo-demo.git
最后
拜拜啦, 希望大家能更快的入手dubbo!