Dubbo延迟暴露、并发控制、连接控制、延迟连接、粘滞连接(十)

1、参考

延迟暴露:http://dubbo.apache.org/zh-cn/docs/user/demos/delay-publish.html

并发控制:http://dubbo.apache.org/en-us/docs/user/demos/concurrency-control.html

连接控制:http://dubbo.apache.org/en-us/docs/user/demos/config-connections.html

延迟连接:http://dubbo.apache.org/en-us/docs/user/demos/lazy-connect.html

粘滞连接:http://dubbo.apache.org/en-us/docs/user/demos/stickiness.html

2、延迟暴露

Dubbo在解析到<dubbo:service />时就会打开端口对外提供服务,有些服务需要一定的预热时间,比如初始化缓存,等待相关资源就位等,如果此时请求进来,则会报错。

Dubbo-2.6.5 之前版本

<dubbo:service delay="-1" />

延迟到spring完成初始化之后。

<dubbo:service delay="5000" />

Spring初始化之后再延长5S。

Dubbo-2.6.5 及以后版本

这个版本之后,所有的服务都在Spring完成初始之后对外暴露,这是默认的。

3、并发控制

示例1

控制接口中所有方法的并发个数:

<dubbo:service interface="com.foo.BarService" executes="10" />

意思应该是这个接口下边全部的方法累积,全部并发不能超过10。

示例2

控制接口中某个特定的方法,并发个数不能超过10:

<dubbo:service interface="com.foo.BarService">
    <dubbo:method name="sayHello" executes="10" />
</dubbo:service>

示例3

限制Consumer端接口:

<dubbo:reference interface="com.foo.BarService" actives="10" />

示例4

限制Consumer端某个接口中的具体方法:

<dubbo:reference interface="com.foo.BarService">
    <dubbo:method name="sayHello" actives="10" />
</dubbo:service>

4、连接控制

来自Provider端限制

<dubbo:provider protocol="dubbo" accepts="10" />

或者:

<dubbo:protocol name="dubbo" accepts="10" />

从文档上看,不知道这个配置是针对整个Provider,还是针对Provider中的每一个服务。也不知道是单个Consumer不超过10还是所有Consumer不超过10。

来自客户端的限制:

<dubbo:reference interface="com.foo.BarService" connections="10" />

或者:

<dubbo:service interface="com.foo.BarService" connections="10" />

如果 <dubbo:service> 和 <dubbo:reference> 都配了 connections,<dubbo:reference> 优先,参见:配置的覆盖策略

官网这句话真让人搞不懂。dubbo:service是Provider端自己的限制,dubbo:reference是Consumer端自己的限制。双方各自限制自己可以使用的连接数。现在这两个不相干的东西可以覆盖,真搞不明白这个连接限制到底在限制谁。看文档越看越糊涂。5、

5、延迟连接

延迟连接用于减少长连接数。当有调用发起时,再创建长连接,只对长连接类型有效:

<dubbo:protocol name="dubbo" lazy="true" />

6、粘滞连接

粘滞连接用于有状态服务,尽可能让Consumer连接相同的Provider,除非Provider挂掉。

很明显在这种情况下,负载均衡策略将失效,并且粘滞连接将自动开启延迟连接,以减少长连接的个数。配置如下:

<dubbo:reference id="xxxService" interface="com.xxx.XxxService" sticky="true" />

沾滞连接可以精确到方法级别:

<dubbo:reference id="xxxService" interface="com.xxx.XxxService">
    <dubbo:mothod name="sayHello" sticky="true" />
</dubbo:reference>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值