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 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的更多相关文章
- Spring Boot教程(十五)使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程
在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...
- Spring Boot 2.X(十五):集成 Swagger2 开发 API 文档(在线+离线)
前言 相信很多后端开发在项目中都会碰到要写 api 文档,不管是给前端.移动端等提供更好的对接,还是以后为了以后交接方便,都会要求写 api 文档. 而手写 api 文档的话有诸多痛点: 文档更新的时 ...
- 学习Spring Boot:(十五)使用Lombok来优雅的编码
前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的. 正文 添加依赖 在 pom.xml ...
- Java Spring Boot VS .NetCore (五)MyBatis vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- spring boot实战(第十二篇)整合RabbitMQ
前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...
- spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求
spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求 有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想 ...
- Spring Boot 2.X(十):自定义注册 Servlet、Filter、Listener
前言 在 Spring Boot 中已经移除了 web.xml 文件,如果需要注册添加 Servlet.Filter.Listener 为 Spring Bean,在 Spring Boot 中有两种 ...
- Spring Boot 2.X(十二):定时任务
简介 定时任务是后端开发中常见的需求,主要应用场景有定期数据报表.定时消息通知.异步的后台业务逻辑处理.日志分析处理.垃圾数据清理.定时更新缓存等等. Spring Boot 集成了一整套的定时任务工 ...
- Spring Boot 2.X(十四):日志功能 Logback
Logback 简介 Logback 是由 SLF4J 作者开发的新一代日志框架,用于替代 log4j. 主要特点是效率更高,架构设计够通用,适用于不同的环境. Logback 分为三个模块:logb ...
随机推荐
- Unity-批量修改Prefab上的属性
问题描述:今天发现工程中有些prefab上的脚本丢失了一些引用,本以为手动拖拽上去搞定,后来查看其它prefab,也有类似的问题,于是写了一个小工具,批量修改下. 上代码: [ExecuteInEdi ...
- linux查看分区是否开启acl权限
1.为什么需要ACL权限 ACL的全称是 Access Control List (访问控制列表) .对于文件或者目录,都有相应的操作权限 r(read 读),w(write 写),x(execute ...
- pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
数据介绍 先随机生成一组数据: import pandas as pd import numpy as np state = ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'N ...
- Vue 入门. 如何在HTML代码里面快速使用Vue
概述 browserify是一个 CommonJS风格的模块管理和打包工具,上一篇我们简单地介绍了Vue.js官方基于browserify构筑的一套开发模板.webpack提供了和browserify ...
- 查找datatable 中的重复记录(只查询一个字段)
StringBuilder str = new StringBuilder(); var res = new ResParameter() { code = ResponseCode.exceptio ...
- 0.Git介绍
版本控制工具:SVN,Git Git是分布式版本控制系统,SVN是集中式的版本控制系统.(借一位网友的图以示区别) SVN只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过 ...
- vue font-icon 图标
1.vue 游览器左上角小图标 把.ico文件放在根目录下的static文件夹下,然后link标签引入 <link rel="shortcut icon" href=&quo ...
- Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)
ASP.NET Core知多少系列:总体介绍及目录 Demo路径:GitHub-RPL.Demo 1. Introduction Razor Page Library 是ASP.NET Core 2. ...
- SQL Server 2017 新功能分享
本篇文章是我在MVP直通车分享的关于SQL Server 2017的新功能,现在ppt分享如下,可以点击这里下载.
- 分享13道上海尚学堂拿回来的Java面试真题,这些都是Java核心常见问题,想拿OFFER必看!
上海尚学堂Java培训学员参加面试带回来的真题,分享出来与大家,希望大家能认真地看看做一遍.后面有详细题解答案,对照下,看看自己做得怎么样,把这些面试遇到的真题全部掌握,做好面试笔试前的准备. 一.1 ...