Dubbo学习笔记

一:Dubbo概念及优点

  1:java开发的面向接口代理的高性能RPC调用

  2:智能容错和负载均衡

  3:服务自动注册和发现

  4:高度可扩展能力

  5:运行期流量调度

  6:可视化的服务治理与运维

二:Dubbo的处理流程

  

 

   调用关系说明

  1. 服务容器负责启动,加载,运行服务提供者。

  2. 服务提供者在启动时,向注册中心注册自己提供的服务。

  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。

  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

三:Dubbo入门实例(XML模式)

  1:项目架构

  

  2:jar包依赖引入

  

  3:开发服务提供端和消费端协议暴漏的公共接口(即需要对外暴漏的服务)

  

  4:开发服务提供端

    4.1:引入api模块依赖并提供对外服务接口的具体实现

    

    4.2:服务端配置声明暴漏服务

    

  5:开发消费端

    5.1:引入api模块依赖并获取bean实例,调用方法  

    

    5.2 编写消费端配置文件,指定注册中心服务地址、应用名、和引用服务对象

    

四:Dubbo 管理控制台Dubbo-Admin

    1:下载控制台项目:https://github.com/apache/dubbo-admin/tree/master

    2:在项目根目录执行命令行 mvn clean package -Dmaven.test.skip=true   将项目打包成一个jar ,若想修改控制台登录账号、密码、访问端口,打包前修改dubbo.properties属性即可,也可在打包后使用java -jar启动时指定

    

 

    

 

五:SPI机制

  1:SPI概念

  JDK内置的一种服务提供发现机制,主要用来作为服务的扩展点,它就是一种动态替换发现的机制。使用SPI机制的优势是实现解耦,使得第三方服务模块的装配控制逻辑与调用者的业务代码分离

  

  2:JDK的SPI案例

    2.1:创建项目,结构如下

    

    2.2:创建测试模块jdk-spi-main引入api和impl模块依赖创建测试类(创建测试类也可,不一定需要创建测试模块)

    

   3:Dubbo的SPI机制案例

    1:创建接口模块并编写对外接口,接口上添加SPI注解

    

    2:创建实现类模块,引入接口模块依赖,编写接口实现

    

    3:创建测试模块dubbo-spi-main引入api和impl模块依赖,创建测试类(创建测试类也可,不一定需要创建测试模块)

    

  4:JDK的spi和Dubbo的spi实现对比

    1. JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源

    2. 如果有扩展点加载失败,则所有扩展点无法使用

    3. 提供了对扩展点包装的功能(Adaptive),并且还支持通过set的方式对其他的扩展点进行注入 

  5:Dubbo的过滤器Filter

    1:创建Filter模块,以后哪个模块想用可以直接引入依赖

    

    2:编写Dubbo过滤器实现,并在实现类上添加Activate注解表明在消费端生效还是服务端生效

    

  6:Dubbo的负载均衡

    1:编写自定义负载均衡策略

    

 

    

 

     2:服务端或者客户端引用自定义负载均衡策略

    

 

   7:自定义线程池(主要用来做性能监控)

    1:编写自定义线程池执行逻辑

    

    2:服务端引入依赖即可使用

  8:Dubbo服务降级

    1:使用Dubbo Admin配置服务降级

    

    2:配置信息中添加mock="指定返回信息"

    

    3:使用注解添加屏蔽或容错策略

    

  附本次笔记代码链接:https://gitee.com/jttstudy/study.git

 

posted @ 2021-05-20 16:59  十二A~  阅读(99)  评论(0)    收藏  举报