Dubbo 简介

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成

它提供了三大核心能力:

  • 面向接口的远程方法调用
  • 智能容错负载均衡
  • 服务自动注册和发现。

可以看出图中存在着五种角色:

  • Provider:服务提供者
  • Consumer:服务消费者
  • Registry:服务注册中心
  • Monitor:服务监控中心
  • Container:服务运行的容器

图上的过程可以这么来解释:

  1. 在容器(Container)启动服务的提供者(Provider)
  2. 服务的提供者(Provider)将服务以接口的形式注册到注册中心(Registry)
  3. 服务的消费者(Consumer)向注册中心订阅服务
  4. 注册中心向服务的消费者返回服务的提供者提供的服务接口(异步)
  5. 服务的消费者去调用服务的提供者(同步)
  6. 监控中心负责统计服务的调用次数和调用时间的日志服务。

这里我们采用 zookeeper 作为服务注册中心,这里我查阅官方文档发现 Redis 也可以作为Dubbo的注册中心,只不过在应用中比较少见,而且官方文档中也说明了:

如果我们想用的话,只需要把dubbo.registry.addrss的值改为redis://127.0.0.1:6379即可使用。

理论到这里,下面就让我们来进入实战吧~

zookeeper的安装

这里我是在 Mac OS 环境下进行安装,你可以在本地安装虚拟机来完成这个操作。

首先我们需要前往官网下载安装包。

# 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简直强了无数倍,而且贼方便!

具体的功能大家可以跟着操作之后去探讨,这里就不再展开来说了。

今天的文章就到这里,下面宣布一个好消息:

活动通知

原定于粉丝达到一定数量后做送书活动回馈大家,由于本公号博主真爱技术佛系涨粉,无运营无套路,所以增粉速度**超**,原定目标短时间内无法达成,因此决定**清明小长假**过后就开启送书活动,大家久等了!感谢大家的信任支持与相伴,笔芯

扫码即可参加活动

Spring Boot 2.x (十五):Dubbo + Zookeeper + 新版Dubbo Admin的更多相关文章

  1. Spring Boot教程(十五)使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

    在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...

  2. Spring Boot 2.X(十五):集成 Swagger2 开发 API 文档(在线+离线)

    前言 相信很多后端开发在项目中都会碰到要写 api 文档,不管是给前端.移动端等提供更好的对接,还是以后为了以后交接方便,都会要求写 api 文档. 而手写 api 文档的话有诸多痛点: 文档更新的时 ...

  3. 学习Spring Boot:(十五)使用Lombok来优雅的编码

    前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的. 正文 添加依赖 在 pom.xml ...

  4. Java Spring Boot VS .NetCore (五)MyBatis vs EFCore

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  5. spring boot实战(第十二篇)整合RabbitMQ

    前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...

  6. spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求

    spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求 有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想 ...

  7. Spring Boot 2.X(十):自定义注册 Servlet、Filter、Listener

    前言 在 Spring Boot 中已经移除了 web.xml 文件,如果需要注册添加 Servlet.Filter.Listener 为 Spring Bean,在 Spring Boot 中有两种 ...

  8. Spring Boot 2.X(十二):定时任务

    简介 定时任务是后端开发中常见的需求,主要应用场景有定期数据报表.定时消息通知.异步的后台业务逻辑处理.日志分析处理.垃圾数据清理.定时更新缓存等等. Spring Boot 集成了一整套的定时任务工 ...

  9. Spring Boot 2.X(十四):日志功能 Logback

    Logback 简介 Logback 是由 SLF4J 作者开发的新一代日志框架,用于替代 log4j. 主要特点是效率更高,架构设计够通用,适用于不同的环境. Logback 分为三个模块:logb ...

随机推荐

  1. 转 c#性能优化秘密

    原文:http://www.dotnetperls.com/optimization Generally, using the simplest features of the language pr ...

  2. json-server假数据

    1.安装命令(全局安装) npm install json-server -g 2,检查json-server是否安装成功: json-server -h,出现如下图表示安装成功 3.安装成功后,就可 ...

  3. ES6 浏览器兼容性 和 Transpilation

     浏览器兼容性 和 Transpilation 你的 web 浏览器可能每隔几个月就会提示你去更新,你知道为什么吗,主要是一些安全漏洞,新特性,以及支持新的 HTML.CSS 和 JavaScript ...

  4. 删除 id 列表 存进数据库

    当图片写的传id的时候 用着方法存进数据库

  5. 删除API

    Delete API 删除API允许根据ID从指定索引中删除一个类型化的JSON文档. DELETE /twitter/_doc/1 返回结果如下: { "_index": &qu ...

  6. Python基础之面向对象思维解决游戏《天龙八部》

    一.程序设计思维: 以面向对象的思维设计<天龙八部>游戏技能,使得技能效果在增加或者减少时,游戏技能整体框架不改变,仅仅增加或者减少技能效果 二.思路流程图如下: 三.变成框架实现代码: ...

  7. python语法_模块_loggin_hashlib_conifgparser

    loggin模块 日志模块,级别从上往下依次增强,debug 和 info 默认不输出信息,只有后三种级别有输出信息 loggin.debug('') loggin.info('') loggin.w ...

  8. Vue 学习笔记 — css属性计算的问题

    简书 今天在使用Vue时遇到一个问题:在切换css内联属性时某些特殊属性的计算会有问题,无法得到预期的结果. 例子: https://jsfiddle.net/blqw/cLwau40z/ 上面的页面 ...

  9. SQL Server Service Broker创建单个数据库会话(消息队列)

    概述 SQL Server Service Broker 用来创建用于交换消息的会话.消息在目标和发起方这两个端点之间进行交换.消息用于传输数据和触发消息收到时的处理过程.目标和发起方既可以在同一数据 ...

  10. 阿里面试题,深入理解Java类加载机制

    类的生命周期 包括以下 7 个阶段: 加载(Loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始化(Initialization) 使 ...