Spring Boot 2.x(十五):Dubbo + Zookeeper + Dubbo Admin
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 环境下进行安装,你可以在本地安装虚拟机来完成这个操作。
首先我们需要前往官网下载安装包。
# 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相关推荐
- Spring Boot教程(十五)使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程...
在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...
- 学习Spring Boot:(十五)使用Lombok来优雅的编码
前言 Lombok 是一种 Java? 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的. 正文 添加依赖 在 pom.xml ...
- Spring Boot教程(二十):Spring Boot使用String Task定时任务
一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...
- Spring Boot Ajax实例(十六)
这篇博文主要用于新手学习Spring Boot,同时也记录自己学习的过程- 文章内容主要来源于易百教程 本文将展示如何使用jQuery.ajax将HTML表单请求发送到Spring REST API并 ...
- Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )
Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...
- Dubbo(十五)springboot工程dubbo整合SpringCloud Hystrix
本章将编写一个使用SpringBoot工程集成dubbo使用hystrix组件实现服务熔断示例.包含服务提供者工程和服务消费者工程.主要在实现整合springcloud hystrix过程步骤如下: ...
- 学习Spring Boot:(十)使用hibernate validation完成数据后端校验
前言 后台数据的校验也是开发中比较注重的一点,用来校验数据的正确性,以免一些非法的数据破坏系统,或者进入数据库,造成数据污染,由于数据检验可能应用到很多层面,所以系统对数据校验要求比较严格且追求可变性 ...
- spring boot实战(第十篇)Spring boot Bean加载源码分析
前言 前面的文章描述了Application对应Bean的创建,本篇将阐述spring boot中bean的创建过程 refresh 首先来看SpringApplication#run方法中refre ...
- Vue + Spring Boot 项目实战(五):数据库的引入
文章目录 一.引入数据库 1.安装数据库 2. 安装mysql 3. MySQL客户端 4. .使用 Navicat 创建数据库与表 二.使用数据库验证登录 1.项目相关配置 2.登录控制器 2.1. ...
最新文章
- IDEAWebstorm使用
- 计算机应用基础是高中吗,职业高中学业水平测试计算机应用基础试卷(A)及答案...
- python爬虫工程师-Python爬虫工程师
- navicat 8 mysql生成关系_MySQL数据库通过navicat建立多对多关系
- Value Investment
- ubuntu mysql修改字符集后不能启动mysql_解决ubuntu下修改my.cnf设置字符集导致mysql无法启动...
- Chrome调试WebView时Inspect出现空白的解决方法(使用离线包不Fan墙)
- 第一节:什么是ES6?新手该如何理解
- vue 打印 某块内容成pdf
- Android APP压力测试 之Monkey日志自动分析脚本
- C语言求素数个数及素数之和
- 微信音乐回复时出现“链接无效,无法播放”的情况
- android7.0后台,安卓7.0带来一键清理后台 真能使手机变快吗
- ROS可以不扫描地图,自己制作地图
- 基于Python查询某个ip是否属于某个或多个ip段
- Windows CE下中文输入法编辑器
- SpringBoot单元测试Mock静态方法
- windows中oracle自动备份
- sw2urdf使用探索
- 科大讯飞2014公布会看点二:智能语音装进车载车机!
热门文章
- Cocos2dx学习笔记(1) Ref类型数据 垃圾回收机制
- 批量添加DNS的A记录和PTR记录
- spring依赖注入_Spring源码阅读:Spring依赖注入容器
- python3 xml 对象转字符串_Python3 基本数据类型详解
- Linux 从源码编译安装 OpenSSL
- mac 使用 php artisan,在Mac php artisan上設置Laravel遷移錯誤:沒有這樣的文件或目錄[duplicate]...
- tf.nn.dropout和tf.keras.layers.Dropout的区别(TensorFlow2.3)与实验
- 狱警招计算机专业干啥,狱警迎来“大扩招”消息,福利待遇不输公务员,大专学历也能报...
- c 写c语言代码编辑器,最好用的c/cpp代码编辑器是vim,没有之一
- php 网站数量,PHP给网站添加在线人数统计