服务的提供者
服务的消费者
我们在启动项目的时候可以在spring中配置当前消费者引用的地址可不可用
值为false的时候,是不会检查服务的提供者是否启动
此标签的默认值为true,但是当我们通过api编程延迟调用服务的时候就需要关闭,否则服务临时不可用是会报null设置为false,
就表示总会引用,当服务开启后,会自动连上。
dubbo集群
为什么需要dubbo的集群呢?
因为如果只有一台机器提供服务,万一这台机器宕机了,那么你的dubbo服务就GG了,你因为没有提供者了,所以你的工程也会gg,所以我们需要搭建一个集群的dubbo服务,多台机器都发布同一个dubbo服务。
以上图为例,cluster得到容错机制为默认,,重试次数为2次,不包括第一次连接,超时等待时间为4秒,负载均衡的机制也是随机的。这样就可以实现一个dubbo服务的简单集群
集群容错
什么是集群容错?
表示在一个服务下去暴露多个provider(提供者)当有任何一个提供者宕机时候,不影响服务的
正常使用 .依赖于duubo的自动注册和自动发现功能
duubo集群的时候调用顺序
均衡负载(Dubbo)
Random LoadBalance 随机的
随机:按权重来设置随机概率有利于动态调整
上面表示如果有3000个请求来到就一人一半,如果发现某台机器(服务的提供者)处理请求的效率慢,就可以把那台机器的权重减半。以达到服务的最好优化。
RoundRobin LoadBalance 轮询 和上面说的差不多,以减低权重比例来达到最佳效果。
Least Active loadBalance 活跃的
- 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。
- 使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
Consistent Hash loadBalance 一致性的
- 一致性Hash,相同参数的请求总是发到同一提供者。
- 当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
- 缺省只对第一个参数Hash,如果要修改,请配置<dubbo:parameter key="hash.arguments" value="0,1" />
- 缺省用160份虚拟节点,如果要修改,请配置<dubbo:parameter key="hash.nodes" value="320" />
多注册中心
一个消费者可以连接两个不同的注册中心,并且不同的注册中心,可以提供同一接口的不同实现。当然也可以实现两套不同的接口
服务的升级和降级(留档,看不懂)
Dubbo单独异步调用
一.异步调用和同步调用的区别
我们知道,常见的方法调用都是同步调用,这种调用方式是一种阻塞式的调用方式,即客户端(主调用方)代码一直阻塞等待直到被服务端(被调用方)返回 为止。这种调用方式相对比较直观,也是大部分编程语言直接支持的一种调用方式。但是,如果我们面对是基于粗粒度的服务组件,面对的是一些需要比较长时间才 能有响应的应用场景,那么我们就需要一种非阻塞式调用方式,即异步调用方式。
SCA编程模式( 面向服务组件体系结构)提供了三种方式的异步调用,它们分别是:
1. 单向调用方式。
2. 延迟响应方式。
3. 请求回调方式。
单向调用
单向调用方式是最为简单的异步调用方式,在这种调用方式中,客户端发出请求之后就不再关心服务端的情况,包括是否执行成功,返回值是什么等等。我们可以用下面的图 4示来描述这种单向调用方式:
单向调用方式是一种不管调用结果的方式,但是在很多情况下我们是需要知道调用结果的。我们需要知道调用是否成功,需要知道调用的结果,就算调用失败我们也希望知道错误代码等信息。在这种情况下,延迟响应和请求回调就是两种能够让我们知道调用结果的方式。
延迟响应方式
延迟响应方式是指客户端在发出调用请求之后继续执行,但是经过一段时间之后,客户端再调用相应的方法去检索返回结果,并通过参数指定如何根据 调用的 结果而执行进一步动作。由于是异步调用方式,因此,在第一次发出调用请求的时候,服务端需要返回一个称为票据(Ticket)的对象。这个对象会作为第二 次发出检索结果请求时的一个参数。显然,这个Ticket对象的作用与WEB编程的SessionID非常类似。我们可以用图 5 来表示延迟相应调用方式:
二.dubbo的异步调用
注:如果两个任务都比较耗时,同时这两个代码又没有关联,这可以采用异步调用,让这两个任务同时执行
例子:
一个线程要调用两个方法,一个方法要执行3S,另一个要执行8S,如果是同步调用个的话,至少要11S,但是如果异步调用的话只要8秒
上面的配置就可以实现getPerson方法的异步调用
Dubbo缓存
dubbo的缓存为声明式的缓存,可在服务者的配置文件
id为接口的bean名字,cache为true就表示缓存已经开启
dubbo缓存策略共有三种,我只了解前两种 配置方法cache=“lru”