前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 2.x(十五):Dubbo + Zookeeper + Dubbo Admin

Spring Boot 2.x(十五):Dubbo + Zookeeper + Dubbo Admin

作者头像
山禾说
发布2019-04-24 15:27:58
8080
发布2019-04-24 15:27:58
举报
文章被收录于专栏:Vi的技术博客Vi的技术博客

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 环境下进行安装,你可以在本地安装虚拟机来完成这个操作。

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

代码语言:javascript
复制
# 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依赖:

代码语言:javascript
复制
<! --这里的包不要写错了,我试了一下阿里的starter,发现有很多问题,并没有这个好用 -->
<dependency>
    <groupId>io.dubbo.springboot</groupId>
    <artifactId>spring-boot-starter-dubbo</artifactId>
    <version>1.0.0</version>
</dependency>

然后对注册中心以及服务接口包的暴露的配置

代码语言:javascript
复制
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接口和实现类:

代码语言:javascript
复制
public interface TestService {
    String test();
}
代码语言:javascript
复制
@Service
public class TestServiceImpl implements TestService {

    @Override
    public String test() {
        return "Hello Wolrd";
    }
}

需要注意的是这里的Service注解必须是dubbo包下的哟,可千万别写错了!

编写Consumer

同样要引入依赖:

代码语言:javascript
复制
<dependency>
    <groupId>io.dubbo.springboot</groupId>
    <artifactId>spring-boot-starter-dubbo</artifactId>
    <version>1.0.0</version>
</dependency>

Consumer的配置的话比较少:

代码语言:javascript
复制
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181

直接在Controller中引用

代码语言:javascript
复制
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~

代码语言:javascript
复制
git clone https://github.com/apache/incubator-dubbo-ops.git

首先从Git上把这个项目拉下来,用IDEA打开:

只需要添加一个端口号的配置,然后使用左侧的maven打包工具打包:

然后去dubbo-admin-server的target的目录下使用以下命令:

代码语言:javascript
复制
 java -jar dubbo-admin-server-0.1.jar >run.log &

然后打开浏览器,输入localhost:7070

对比之前的UI简直强了无数倍,而且贼方便!

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Vi的技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dubbo 简介
  • zookeeper的安装
  • 实例
    • 编写Provider
      • 编写Consumer
      • Dubbo-Admin
      相关产品与服务
      微服务引擎 TSE
      微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档