zoukankan      html  css  js  c++  java
  • Spring Boot 2.x (十五):Dubbo + Zookeeper + 新版Dubbo Admin

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

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

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

    活动通知

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

    扫码即可参加活动

  • 相关阅读:
    微软SmartClient高级开发
    JavaScript教程大全目录( 最后更新:2007/2/27 不断更新中...)
    智能客户端的定义
    JavaScript浏览器输出
    事半功倍系列之javascript
    智能客户端SmartClient (三)
    智能客户端SmartClient (一)
    日文假名输入与键盘对应
    连体词、接续词、接续助词相关
    JavaScript表单
  • 原文地址:https://www.cnblogs.com/viyoung/p/10619158.html
Copyright © 2011-2022 走看看