Apache Dubbo学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lhc_makefunny/article/details/82970203

RPC

  • 解释:远程方法调用
  • 影响RPC框架性能的两个因素:
    • 能否在多个服务器之间建立连接(通信)
    • 序列化和反序列化的速度(序列化)

Dubbo简介

  • 高性能JAVA RPC框架

特性

  • 面向接口代理的高性能RPC调用
  • 智能负载均衡
  • 服务自动注册与发现
  • 高度可拓展能力
  • 运行期流量调度
    • 灰度发布:++渐进式发布++
  • 可视化的服务治理和运维

Dubbo设计架构

mark

  1. 对象
    • 服务提供者:Provider
    • 注册中心:Registry,即zookeeper
    • 服务消费者:consumer

实现

  1. 添加Dubbo依赖
        <!--dubbo-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.2</version>
        </dependency>
        <!--zookeeper的客户端-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
    

Dubbo与SpringBoot整合

  1. 添加依赖
    <!--针对spring boot在2.0版本之上-->
    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>0.2.0</version>
    </dependency>
  1. 使用的注解

    • @Service (com.alibaba.dubbo.config.annotation.Service):暴露服务
    • @Reference:远程引用这个service
  2. 其他和之前一样配置即可

Duboo配置dubbo.properties

  1. dubbo配置问价的类型
    mark
    • JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。
    • XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。
    • Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。
    • -D > XML > properties

Dubbo配置超时和配置覆盖

  1. 配置超时设置: 添加timeout属性

timeout的默认值是1000,单位:毫秒

<dubbo:reference interface="com.lhc.provider.service.UserService" id="userService" check="false" timeout="5000"/>
  • 方法级 > 接口级 > 全局配置
  • 如果级别一样,消费方优先于提供方

Dubbo配置重试次数

retries属性表示重试次数,不包含第一次调用,0表示不重试。增加操作不做重试操作,*表示随机调用

<dubbo:reference interface="com.lhc.provider.service.UserService" id="userService" check="false" timeout="5000" retries="5"/>

Dubbo与SpringBoot整合的三种方式

  1. 使用@Service暴露服务,主类上使用@EnableDubbo注解
  2. 添加xml配置文件,在主类上使用@ImportResource("classpaht:provider.xml")加载配置文件
  3. 使用JAVA代码将每一个组件手动添加到容器中

Dubbo高可用 ZooKeeper宕机与Dubbozhilian

  • 现象: zookeeper注册中心宕机,还可以消费dubbo暴露服务

  • 原因:

    • 监控中心宕机不影响使用,只是丢失部分采样数据
    • 数据库宕机后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
    • 注册中心对等集群,任意一台宕机后,将自动切换到另一台
    • 注册中心全部宕机后,服务提供者和服务消费者仍能通过本地缓存通讯
    • 提供者无状态,任意一台宕机后,不影响使用
    • 提供者全部宕机后,消费者应用给将无法使用,并无限次重连等待提供者恢复
  • 如何使用Dubbo直连:

@Service
public class OrderServiceImpl implements OrderService{

    @Reference(url = "127.0.0.1:20880")  // 使用url属性,并赋予提供者的地址,实现dubbo直连
    private UserService userService;

    @Override
    public List<UserAddress> initOrder(String userId) {
        List<UserAddress> list = userService.getUserAddressList("1");
        return list;
    }
}

Dubbo高可用 负载均衡机制

在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用

  1. Dubbo中四种负载均衡机制
    • Random LoadBalance : 随机,按权重设置随机概率
    • RoundRobin LoadBalance :轮询,按公约后的权重设置轮询比率。
    • LeastActive LoadBalance : 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。
    • ConsistentHash LoadBalance : 一致性 Hash,相同参数的请求总是发到同一提供者

Dubbo负载均衡机制配置

Dubbo高可用 服务降级

看文档

demo下载链接:https://share.weiyun.com/54L7ZuE

猜你喜欢

转载自blog.csdn.net/lhc_makefunny/article/details/82970203