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 datamkdir logs# 3. 复制zoo_sample.cfg 为 zoo.cfgcd conf/cp zoo_sample.cfg zoo.cfg# 4. 修改配置vi zoo.cfgdataDir=刚刚新建的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=providerspring.dubbo.registry.address=zookeeper://127.0.0.1:2181spring.dubbo.protocol.name=dubbospring.dubbo.protocol.port=27899spring.dubbo.scan=indi.viyoung.dubbo.provider.service

编写Service接口和实现类:

public interface TestService {    String test();}
@Servicepublic 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=consumerspring.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简直强了无数倍,而且贼方便!

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

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

活动通知

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

扫码关注即可参加活动。


我从没见过一个不孤独的人会发出耀眼的光芒

纯原创技术公号

作者:Vi.Young

扫码获取更多干货

博客园:Vi的技术博客

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:(十五)使用Lombok来优雅的编码

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

  3. Spring Boot教程(二十):Spring Boot使用String Task定时任务

    一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...

  4. Spring Boot Ajax实例(十六)

    这篇博文主要用于新手学习Spring Boot,同时也记录自己学习的过程- 文章内容主要来源于易百教程 本文将展示如何使用jQuery.ajax将HTML表单请求发送到Spring REST API并 ...

  5. Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )

    Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...

  6. Dubbo(十五)springboot工程dubbo整合SpringCloud Hystrix

    本章将编写一个使用SpringBoot工程集成dubbo使用hystrix组件实现服务熔断示例.包含服务提供者工程和服务消费者工程.主要在实现整合springcloud hystrix过程步骤如下: ...

  7. 学习Spring Boot:(十)使用hibernate validation完成数据后端校验

    前言 后台数据的校验也是开发中比较注重的一点,用来校验数据的正确性,以免一些非法的数据破坏系统,或者进入数据库,造成数据污染,由于数据检验可能应用到很多层面,所以系统对数据校验要求比较严格且追求可变性 ...

  8. spring boot实战(第十篇)Spring boot Bean加载源码分析

    前言 前面的文章描述了Application对应Bean的创建,本篇将阐述spring boot中bean的创建过程 refresh 首先来看SpringApplication#run方法中refre ...

  9. Vue + Spring Boot 项目实战(五):数据库的引入

    文章目录 一.引入数据库 1.安装数据库 2. 安装mysql 3. MySQL客户端 4. .使用 Navicat 创建数据库与表 二.使用数据库验证登录 1.项目相关配置 2.登录控制器 2.1. ...

最新文章

  1. IDEAWebstorm使用
  2. 计算机应用基础是高中吗,职业高中学业水平测试计算机应用基础试卷(A)及答案...
  3. python爬虫工程师-Python爬虫工程师
  4. navicat 8 mysql生成关系_MySQL数据库通过navicat建立多对多关系
  5. Value Investment
  6. ubuntu mysql修改字符集后不能启动mysql_解决ubuntu下修改my.cnf设置字符集导致mysql无法启动...
  7. Chrome调试WebView时Inspect出现空白的解决方法(使用离线包不Fan墙)
  8. 第一节:什么是ES6?新手该如何理解
  9. vue 打印 某块内容成pdf
  10. Android APP压力测试 之Monkey日志自动分析脚本
  11. C语言求素数个数及素数之和
  12. 微信音乐回复时出现“链接无效,无法播放”的情况
  13. android7.0后台,安卓7.0带来一键清理后台 真能使手机变快吗
  14. ROS可以不扫描地图,自己制作地图
  15. 基于Python查询某个ip是否属于某个或多个ip段
  16. Windows CE下中文输入法编辑器
  17. SpringBoot单元测试Mock静态方法
  18. windows中oracle自动备份
  19. sw2urdf使用探索
  20. 科大讯飞2014公布会看点二:智能语音装进车载车机!

热门文章

  1. Cocos2dx学习笔记(1) Ref类型数据 垃圾回收机制
  2. 批量添加DNS的A记录和PTR记录
  3. spring依赖注入_Spring源码阅读:Spring依赖注入容器
  4. python3 xml 对象转字符串_Python3 基本数据类型详解
  5. Linux 从源码编译安装 OpenSSL
  6. mac 使用 php artisan,在Mac php artisan上設置Laravel遷移錯誤:沒有這樣的文件或目錄[duplicate]...
  7. tf.nn.dropout和tf.keras.layers.Dropout的区别(TensorFlow2.3)与实验
  8. 狱警招计算机专业干啥,狱警迎来“大扩招”消息,福利待遇不输公务员,大专学历也能报...
  9. c 写c语言代码编辑器,最好用的c/cpp代码编辑器是vim,没有之一
  10. php 网站数量,PHP给网站添加在线人数统计