博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dubbo启动检查、负载均衡、多协议支持
阅读量:4185 次
发布时间:2019-05-26

本文共 2027 字,大约阅读时间需要 6 分钟。

文章目录

一、dubbo启动检查

在服务的消费者项目里,项目在启动过程中,默认如果检测到没有服务可供调用的话,就会报错。

  • 服务启动过程中验证服务提供者的可用性。
  • 验证过程出现问题,则阻止整个spring容器的初始化。
  • 服务启动检查可以尽可能早的发现服务问题。

在项目启动过程中,如果在服务消费者中不想去做服务检查,可以做如下配置;

通过 spring 配置文件

关闭某个服务的启动时检查 (没有提供者时报错):

关闭所有服务的启动时检查 (没有提供者时报错):

关闭注册中心启动时检查 (注册订阅失败时报错):

通过 dubbo.properties

dubbo.reference.com.foo.BarService.check=falsedubbo.reference.check=falsedubbo.consumer.check=falsedubbo.registry.check=false

通过 -D 参数

java -Ddubbo.reference.com.foo.BarService.check=falsejava -Ddubbo.reference.check=falsejava -Ddubbo.consumer.check=false java -Ddubbo.registry.check=false

配置的含义

dubbo.reference.check=false,强制改变所有 reference 的 check 值,就算配置中有声明,也会被覆盖。

dubbo.consumer.check=false,是设置 check 的缺省值,如果配置中有显式的声明,如:<dubbo:reference check=“true”/>,不会受影响。

dubbo.registry.check=false,前面两个都是指订阅成功,但提供者列表是否为空是否报错,如果注册订阅失败时,也允许启动,需使用此选项,将在后台定时重试。

springboot中对单个服务配置

@Reference(interfaceClass = UserAPI.class,check = false)

二、 负载均衡

什么是负载均衡?

在集群服务环境中,为了是多个服务的调用,达到一种均衡状态的目的。

负载均衡策略

1、Random LoadBalance(随机负载均衡)
  • 随机,按权重设置随机概率
  • 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。
2、RoundRobin LoadBalance(轮询负载均衡)
  • 轮询,按公约后的权重设置轮询比率。
  • 存在慢的提供者累计请求的问题: 比如:第二台机器很慢,但没挂,当请求调到第二台时,就卡在那,久而久之,所有请求都卡在调到的第二台上。
3、LeastActive LoadBalance (最小活跃数负载均衡)
  • 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。
  • 使慢的提供者收到更少请求,因为越慢的提供者的的调用前后计数差会越大。
4、ConsistentHash LoadBalance (一致哈希负载均衡)
  • 一致性 Hash,相同参数的请求总是发到同一提供者。
  • 当某一台提供挂时,原本发往该提供者的请求,基于虚拟节点,平摊其他提供者,不会引起剧烈变动。

Spring配置

服务端服务级别
客户端服务级别
服务端方法级别
客户端方法级别

springboot-dubbo 服务配置

客户端配置:

@Reference(interfaceClass = UserAPI.class, loadbalance = "roundrobin")

服务端配置:

@Service(interfaceClass = UserAPI.class, loadbalance = "roundrobin")

三、多协议支持

Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。

特性对比 dubbo RMI Hessian
连接数 单连接 多连接 多连接
连接方式 长连接 短连接 短连接
传输协议 TCP协议 TCP协议 HTTP协议
传输方式 NIO异步传输 同步传输 同步传输
适用场景 1、数据包较小 2、消费者个数多 3、常规方式 1、数据包大小不一 2、消费者和提供者数量相差不大 1、数据包大小不一 2、消费者和提供者数量相差不大
不同服务不同协议

不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议小数据大并发用长连接协议

多协议暴露服务

转载地址:http://pbfoi.baihongyu.com/

你可能感兴趣的文章
GP数据库参数配置
查看>>
GP数据库参数配置
查看>>
MySQL实现了四种通信协议
查看>>
Lucene基本API组件
查看>>
什么是AI,叫人工智能,和BI,商业智能有什么区别
查看>>
根域名服务器
查看>>
Java基础 字符、字符串
查看>>
堆,栈,队列,串
查看>>
Java集合框架List,Map,Set等全面介绍
查看>>
流式大数据处理的三种框架:Storm,Spark和Samza
查看>>
Cypher查询语言--Neo4j中的SQL
查看>>
ha----双机集群(HA)系统简称
查看>>
Linux 高可用(HA)集群之keepalived详解
查看>>
neo4j初次使用学习简单操作-cypher语言使用
查看>>
hadoop和关系型数据库系统比较
查看>>
Hadoop、Spark等5种大数据框架对比
查看>>
Neo4J简介与安装
查看>>
HBase条件查询(多条件查询)
查看>>
云服务
查看>>
hive的介绍
查看>>