Dubbo探索(三)

负载均衡策略

一、Random LoadBalance

原理:按权重设置随机概率,假设有A,B两台服务器,权重比例为A:B=2:1,那么假设当前有30000个并发请求,则分配给A的请求数大概20000个,B的请求数大概10000个。

优缺点:

  • 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。

二、RoundRobin LoadBalance

原理:轮循,按公约后的权重设置轮循比率。

优缺点:

  • 存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

解决办法:将性能低的机器的权重设置的低一点

三、LeastActive LoadBalance

原理:最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。

优缺点:

  • 使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

四、ConsistentHash LoadBalance

原理:一致性Hash,相同参数的请求总是发到同一提供者。

优缺点:

  • 当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
  • 算法参见:http://en.wikipedia.org/wiki/Consistent_hashing
  • 缺省只对第一个参数Hash,如果要修改,请配置<dubbo:parameter key="hash.arguments" value="0,1" />
  • 缺省用160份虚拟节点,如果要修改,请配置<dubbo:parameter key="hash.nodes" value="320" />

配置方法:

<dubbo:service interface="..." loadbalance="roundrobin" /> 或

<dubbo:reference interface="..." loadbalance="roundrobin" /> 或

<dubbo:service interface="..."> 或

    <dubbo:method name="..." loadbalance="roundrobin"/> 

</dubbo:service>

<dubbo:reference interface="..."> 或

    <dubbo:method name="..." loadbalance="roundrobin"/>

</dubbo:reference>

一般不再配置文件中写死负载均衡策略, 而是动态使用默认配置,然后在需要时通过dubbo-admin管控台修改策略配置。

时间: 2024-08-07 04:19:57

Dubbo探索(三)的相关文章

Dubbo探索(五)

事件通知 在调用之前,调用之后,出现异常时,会触发oninvoke, onreturn, onthrow三个事件,可以配置当事件发生时,通知哪个类的哪个方法. 消费方实现Notify接口,如下: 1 /** 2 * Version: 3.0 3 * Author: pattywgm 4 * Time: 17/6/29 下午11:01 5 * Desc: 事件通知接口 6 */ 7 public interface Notify { 8 /** 9 * 10 * @param res 返回值 11

Dubbo探索(二)

spring配置解析 1.<dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心 <dubbo:service ref="userService" interface="com.patty.dubbo.api.service.UserService"/>interface用于指定接口名,ref指定服务引用对象,这两者必填,此外还有一些其他属性可供选择,比如:

Nginx探索三

这次探索一下http 请求 request 这节我们讲request,在nginx中我们指的是http请求,详细到nginx中的数据结构是ngx_http_request_t. ngx_http_request_t是对一个http请求的封装. 我们知道,一个http请求.包括请求行.请求头.请求体.响应行.响应头.响应体. http请求是典型的请求-响应类型的的网络协议,而http是文件协议.所以我们在分析请求行与请求头,以及输出响应行与响应头.往往是一行一行的进行处理. 假设我们自己来写一个h

Dubbo(三) -- 多协议支持

一.Dubbo支持的协议 Dubbo协议.Hessian协议.HTTP协议.RMI协议.WebService协议.Thrift协议.Memcached协议.Redis协议 二.协议简介 详细参考:http://blog.csdn.net/songjinbin/article/details/49498431 1.Dubbo协议   Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况.Dubbo缺省协议不适合传送大数据

dubbo系列三、架构介绍及调用过程解析

一.整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口. 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI(可扩展). 图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类. 图中蓝色虚线为初始化过程,即启动时组装链,红色实线为方法调用过程,即运行时调用链,紫色

dubbo学习 三 dubbox概述

当当网根据自身的需求,对dubbo进行了扩展就叫成了dubbox.具体的使用方法可以参照官网各种例子:http://dangdangdotcom.github.io/dubbox/ 支持rest风格远程调用 之前了解过restful服务具体是什么,resteasy也了解过,所以看到就可以理解. 基于非常成熟的之前看过的rest实现jboss-resteasy框架,他把这个框架集成到了dubbo里面实现了rest风格的远程调用,这样就大大简化了服务的开发和更多类型的消费者系统.也使dubbo可以对

学习dubbo(三): dubbo的管控台

第1步:将dubbo-admin-xxx.war放到ZK所在服务器上 第2步:将dubbo-admin-xxx.war解压到tomcat下的dubbo-admin下 进入到dubbo-admin下的WEB-INF下 修改dubbo.properties文件             #主机ip             dubbo.registry.address=zookeeper://192.168.91.3:2181             #用户名与密码             dubbo.

菜鸟爬坑--Redis学习与探索(三):Redis的主从复制

什么是Redis主从复制 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制非常简单. Redis主从复制原理 在Slave启动并连接到Master之后,它将主动发送一个SYNC命令.此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步.而Slave服务器在接收到数据库

dubbo总结(三)——dubbo介绍和工程创建

目前常用的框架是ssh 或者ssm框架,在javaee框架上我选择了springmvc spring和mybatis框架.数据库用到了mysql.使用了maven和git做项目管理. 节点角色说明: Provider: 暴露服务的服务提供方 Consumer: 调用远程服务的服务消费方 Registry: 服务注册与发现的注册中心 Monitor: 统计服务的调用次数和调用时间的监控中心 Container: 服务运行容器 调用关系说明: 0. 服务容器负责启动,加载,运行服务提供者. 1. 服