You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@dubbo.apache.org by 陆 T斐 <lc...@outlook.com> on 2020/07/21 17:50:07 UTC

回复: Adaptive thread isolation between services about Dubbo

Hi, Jason

Thank you for your reply.

Maybe I didn't express it very clearly before. The introduction of other systems such as Sentinel can indeed satisfy most scenarios. However, setting a threshold such as qps requires experience and cannot be dynamically adjusted. If the setting is unreasonable, the effect will not be ideal. Moreover, when the number of services is huge, it is difficult to cover every service.

My original intention was to enable Dubbo to protect itself, to ensure that thread resources will not be exhausted and can be allocated reasonably.

Finally, thank you for your answers :)



________________________________
������: Jason Joo <hb...@163.com>
����ʱ��: 2020��7��21�� 23:27
�ռ���: dev@dubbo.apache.org <de...@dubbo.apache.org>
����: Re: Adaptive thread isolation between services about Dubbo

Hi, ½

The scenario you described in last post is more like a scene in which a protector may participate in. General implementation includes hystrix[1], sentinel[2], etc. . They can introduce abilities like flow control, traffic shaping, circuit breaking to various systems including Dubbo, servlet, gateway and so on. You can take a look and have a try with any of them to see whether it can match your concern.

For your information :)

[1] Hystrix https://github.com/Netflix/Hystrix
[2] Sentinel https://github.com/alibaba/sentinel/

best regards,

Jason

> On Jul 21, 2020, at 22:25, ½ �T� <lc...@outlook.com> wrote:
>
> Hello everyone, I'm trying to make a little contribution to Dubbo by adding a new feature. In this feature, threads can be allocated dynamically according to service invocations, so as to achieve thread isolation between services. In this way, we can set the minimum number of threads per service to prevent thread pool resources from being exhausted by some services and thus affecting other services.
>
> Now the problem is how to set up an evaluation model according to the service call situation, such as QPS, RT, success, exception, reject, and so on, so as to reasonably allocate threads to each service.
>
> I am lack of experience in this area, I hope you can give some suggestions, either algorithm or book is OK, thank you!


Re: Adaptive thread isolation between services about Dubbo

Posted by Jun Liu <li...@apache.org>.
Hi, 陆

If I understand correctly, you want to adjust the thread pool on Provider side dynamically by constantly checking the load of the Provider. I am not sure of the details of how to do to achieve that. But I think maybe it will be more meaningful if we can do that on the Consumer side, for example, all Consumers make sure that the the RPC request is send to the most idle Provider by checking the status of each Provider it can see. 

When the traffic is evenly distributed, the resource problem on the Provider side will be alleviated to some extend.

Jun

> On Jul 22, 2020, at 1:50 AM, 陆 錞斐 <lc...@outlook.com> wrote:
> 
> Hi, Jason
> 
> Thank you for your reply.
> 
> Maybe I didn't express it very clearly before. The introduction of other systems such as Sentinel can indeed satisfy most scenarios. However, setting a threshold such as qps requires experience and cannot be dynamically adjusted. If the setting is unreasonable, the effect will not be ideal. Moreover, when the number of services is huge, it is difficult to cover every service.
> 
> My original intention was to enable Dubbo to protect itself, to ensure that thread resources will not be exhausted and can be allocated reasonably.
> 
> Finally, thank you for your answers :)
> 
> 
> 
> ________________________________
> 发件人: Jason Joo <hb...@163.com>
> 发送时间: 2020年7月21日 23:27
> 收件人: dev@dubbo.apache.org <de...@dubbo.apache.org>
> 主题: Re: Adaptive thread isolation between services about Dubbo
> 
> Hi, 陆
> 
> The scenario you described in last post is more like a scene in which a protector may participate in. General implementation includes hystrix[1], sentinel[2], etc. . They can introduce abilities like flow control, traffic shaping, circuit breaking to various systems including Dubbo, servlet, gateway and so on. You can take a look and have a try with any of them to see whether it can match your concern.
> 
> For your information :)
> 
> [1] Hystrix https://github.com/Netflix/Hystrix
> [2] Sentinel https://github.com/alibaba/sentinel/
> 
> best regards,
> 
> Jason
> 
>> On Jul 21, 2020, at 22:25, 陆 錞斐 <lc...@outlook.com> wrote:
>> 
>> Hello everyone, I'm trying to make a little contribution to Dubbo by adding a new feature. In this feature, threads can be allocated dynamically according to service invocations, so as to achieve thread isolation between services. In this way, we can set the minimum number of threads per service to prevent thread pool resources from being exhausted by some services and thus affecting other services.
>> 
>> Now the problem is how to set up an evaluation model according to the service call situation, such as QPS, RT, success, exception, reject, and so on, so as to reasonably allocate threads to each service.
>> 
>> I am lack of experience in this area, I hope you can give some suggestions, either algorithm or book is OK, thank you!
>