You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2021/10/08 01:36:42 UTC

[servicecomb-docs] branch master updated: add Retry Policy Considerations (#247)

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git


The following commit(s) were added to refs/heads/master by this push:
     new 83eb06d  add Retry Policy Considerations (#247)
83eb06d is described below

commit 83eb06dd8517ea98e98339321e70e1421f9d41b4
Author: fanjiwang <fj...@163.com>
AuthorDate: Fri Oct 8 09:36:35 2021 +0800

    add Retry Policy Considerations (#247)
    
    Co-authored-by: fanjiwang <18...@163.com>
---
 .../zh_CN/docs/references-handlers/loadbalance.md                  | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md b/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
index f288936..789d321 100644
--- a/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
+++ b/java-chassis-reference/zh_CN/docs/references-handlers/loadbalance.md
@@ -166,8 +166,11 @@ servicecomb:
 
 retryOnNext表示失败以后,根据负载均衡策略,重新选择一个实例重试(可能选择到同一个实例)。 retryOnSame表示仍然使用上次失败的实例进行重试。
 
-***注意:*** 并不是所有的异常都会触发重试。缺省的情况,只有网络异常,或者 503 错误码才会触发重试。 详细可以
-参考 `DefaultRetryExtensionsFactory` 的定义。
+**注意事项:**
+
+​     1.并不是所有的异常都会触发重试。缺省的情况,只有网络异常,或者 503 错误码才会触发重试。 详细可以参考 `DefaultRetryExtensionsFactory` 的定义。
+
+​     2.retry的场景下,对于同步调用, 同步调用的主线程已经被挂起,无法再主线程中进行重试,重试也不能在网络线程(event-loop)中进行,未被保护的阻塞操作会导致网络线程挂起,因此当前的重试机制会另起一个retry-pool-thread进行重试,因此如果业务在扩展`HttpClientFilter`的时候,如果涉及到通过ThreadLocal获取线程上下文的时候,会存在获取不到的情况,针对这种场景,建议在获取的时候做个判断处理,或者针对涉及ThreadLocal获取线程上下文的业务场景,建议采取通过扩展Handler的机制,进行处理,并保证扩展的Handler在loadbalance之前执行。
 
 ## 自定义
 负载均衡模块提供的功能已经非常强大,能够通过配置支持大部分应用场景。同时它也提供了强大的扩展能力,包括DiscoveryFilter、ServerListFilterExt、ExtensionsFactory(扩展IRule,RetryHandler等)。loadbalance模块本身包含了每一个扩展的实现,这里不再详细描述如何扩展,只简单描述步骤。开发者可以自行下载ServiceComb源码进行参考。