Dubbo 简介
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架, 使得应用可通过高性能的 RPC 实现服务的输出和输入功能, 可以和 Spring 框架无缝集成.
它提供了三大核心能力:
面向接口的远程方法调用
智能容错和负载均衡
服务自动注册和发现.
可以看出图中存在着五种角色:
Provider: 服务提供者
Consumer: 服务消费者
Registry: 服务注册中心
Monitor: 服务监控中心
Container: 服务运行的容器
图上的过程可以这么来解释:
在容器 (Container) 启动服务的提供者(Provider)
服务的提供者 (Provider) 将服务以接口的形式注册到注册中心(Registry)
服务的消费者 (Consumer) 向注册中心订阅服务
注册中心向服务的消费者返回服务的提供者提供的服务接口(异步)
服务的消费者去调用服务的提供者(同步)
监控中心负责统计服务的调用次数和调用时间的日志服务.
这里我们采用 zookeeper 作为服务注册中心, 这里我查阅官方文档发现 Redis 也可以作为 Dubbo 的注册中心, 只不过在应用中比较少见, 而且官方文档中也说明了:
如果我们想用的话, 只需要把 dubbo.registry.addrss 的值改为 Redis://127.0.0.1:6379 即可使用.
理论到这里, 下面就让我们来进入实战吧~
zookeeper 的安装
这里我是在 Mac OS 环境下进行安装, 你可以在本地安装虚拟机来完成这个操作.
首先我们需要前往官网 http://zookeeper.apache.org/releases.html#download 下载安装包.
- # 0. 解压
- tar -zxvf zookeeper-3.4.13.tar.gz
- # 1. 切换到解压后的目录下
- cd zookeeper-3.4.13/
- # 2. 建立 data 和 logs 目录
- mkdir data
- mkdir logs
- # 3. 复制 zoo_sample.cfg 为 zoo.cfg
- cd conf/
- cp zoo_sample.cfg zoo.cfg
- # 4. 修改配置
- vi zoo.cfg
dataDir = 刚刚新建的 data 目录的绝对路径
logDir = 刚刚新建的 data 目录的绝对路径
- # 5. 启动
- cd ../bin
- ./zkServer.sh start
- # 6. 检测是否启动成功
- ./zkServer.sh status
实例
编写 Provider
引入我们项目需要的 Maven 依赖:
- <! -- 这里的包不要写错了, 我试了一下阿里的 starter, 发现有很多问题, 并没有这个好用 -->
- <dependency>
- <groupId>io.dubbo.springboot</groupId>
- <artifactId>spring-boot-starter-dubbo</artifactId>
- <version>1.0.0</version>
- </dependency>
然后对注册中心以及服务接口包的暴露的配置
- spring.dubbo.application.name=provider
- spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
- spring.dubbo.protocol.name=dubbo
- spring.dubbo.protocol.port=27899
- spring.dubbo.scan=indi.viyoung.dubbo.provider.service
编写 Service 接口和实现类:
- public interface TestService {
- String test();
- }
- @Service
- public class TestServiceImpl implements TestService {
- @Override
- public String test() {
- return "Hello Wolrd";
- }
- }
需要注意的是这里的 Service 注解必须是 dubbo 包下的哟, 可千万别写错了!
编写 Consumer
同样要引入依赖:
- <dependency>
- <groupId>io.dubbo.springboot</groupId>
- <artifactId>spring-boot-starter-dubbo</artifactId>
- <version>1.0.0</version>
- </dependency>
Consumer 的配置的话比较少:
- spring.dubbo.application.name=consumer
- spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
直接在 Controller 中引用
- public class TestController {
- @Reference
- private TestService testService;
- @RequestMapping()
- public String hello() {
- return testService.test();
- }
- }
注意这里的 @Reference 注解不要写错, 应该是 Dubbo 包下的!
然后把项目启动后, 我们访问一下:
Nice, 访问成功!
下面, 我们来学习一下 Dubbo-Admin 的使用
Dubbo-Admin
Dubbo-Admin 之前给我的感觉就是没有 UI 的样子:
大概就长这个样子, 贼丑, 但是不知道啥时候悄悄摸摸的更新了一波, 变得让颜值控也是非常满意, 而且支持 jar 包启动, 不用再去单独的安装 Tomcat~
Git clone https://github.com/apache/incubator-dubbo-ops.git
首先从 Git 上把这个项目拉下来, 用 IDEA 打开:
只需要添加一个端口号的配置, 然后使用左侧的 maven 打包工具打包:
然后去 dubbo-admin-server 的 target 的目录下使用以下命令:
java -jar dubbo-admin-server-0.1.jar>run.log &
然后打开浏览器, 输入 localhost:7070
对比之前的 UI 简直强了无数倍, 而且贼方便!
具体的功能大家可以跟着操作之后去探讨, 这里就不再展开来说了.
今天的文章就到这里, 下面宣布一个好消息:
活动通知
原定于粉丝达到一定数量后做送书活动回馈大家, 由于本公号博主真爱技术佛系涨粉, 无运营无套路, 所以增粉速度超~ 级~ 慢~, 原定目标短时间内无法达成, 因此决定清明小长假过后就开启送书活动, 大家久等了! 感谢大家的信任支持与相伴, 笔芯~
扫码即可参加活动
来源: https://www.cnblogs.com/viyoung/p/10619158.html