servicecomb-java-chassis
servicecomb-java-chassis copied to clipboard
ServiceComb Java Chassis is a Software Development Kit (SDK) for rapid development of microservices in Java, providing service registration, service discovery, dynamic routing, and service management...
当请求走到doInvoke时  由于在外部进行了++,导致handlerIndex已经是1了  此时放在handlerList中的首个是ProviderQpsFlowControlHandler  它的首行会判断invocation的hanlerIndex是否大于0,由于handlerIndex++放在入口前,且handlerIndex不能赋值初始值为-1,也没有其他途径修改值,所以进来这里的代码一定是大于0的,导致ProviderQpsFlowControlHandler可能永远不被执行  我在走读代码的时候看到了这么个情况,绞尽脑子没有想到缘由,可能不是bug,而是有什么其他设计,希望能够得到解答,万分感谢!
能力:支持对刚启动服务实例流量预热,流量曲线增加,流量预热时间结束后与其他实例均等。 方案: 计算每个实例的权重,根据权重选择一个实例作为负载使用。 1、权重计算 默认每个实例权重为100,预热实例权重为Math.round(Math.pow(实例运行时间/ 设置的预热时间, 曲率) * 默认权重100) 2、选择实例 当存在需要预热实例时(即设置的预热时间未结束),根据计算的权重选择实例返回负载;当不存在需要预热的实例时,全部实例返回。
#### 背景 当业务定制的filter或者servicecomb自带的filter出现异常时,想要根据对应的异常类型或异常信息来记录日志或告警 #### 分析 查看servicecomb源码,发现ExceptionToProducerResponseConverter只能在业务执行业务逻辑阶段抛出异常才会捕获, Handler,HttpServerFilter 等抛出的异常当前没有通用的拦截机制 #### 诉求 能够针对Handler,HttpServerFilter 等抛出的异常也提供类似异常捕获器的能力
## 场景 集成spring-boot-actuator组件,业务通过curl命令调用actuator/health接口检测服务状态,业务自定义AbstractHealthIndicator里面调用cse的health接口,代码如下: ```java @Component public class HealthChecker extends AbstractHealthIndicator { @Override protected void doHealthCheck(Health.Builder builder) throws Exception { RestTemplate restTemplate = RestTemplateBuilder.create(); String result = restTemplate.getForObject("cse://provider/test/health", String.class); if ("UP".equals(result))...
#### 背景 servicecomb的qps-flowcontrol-provider提供了针对于服务粒度和接口粒度的流控配置,当超过流控阈值后,接口会调度失败,servicecomb默认的health接口一般用于检测服务当前状态 #### 问题 当health接口触发流控后,可能导致误判将对应服务实例下线导致流量受损等情况 #### 诉求 服务开启流控功能后,health接口默认不参与全局流控值的计算,此时health流控不会对当前高负载场景有所缓解,且触发实例下线后会加剧流量承载压力
服务正常运行过程中部分接口出现locate path failed, status:Not Found异常导致4040异常,源码发现RestOperationMeta为服务初始化加载,未发现修改的地方,目前还未定位到根因,麻烦帮忙提供下定位方向及定位思路,日志如下 
1、当前线程A服务代码中第73行使用RPC方式异步调用B服务:  2、负载均衡没有找到B服务可用的地址:  3、A服务当前线程上下文被清除:  4、A服务当前线程再接着调用C服务时,从上下文中获取参数时报空指针: 
之前使用的是nacos作为注册中心,是支持的,举个例子 http://localhost:8080/query_service_name/query/xxx localhost:8080是网关的地址IP query_service_name是应用服务注册在nacos的注册服务名,相当于service comb的service name 这样请求,在SpringCloud网关不加任何路由规则是可以请求成功的 现在改成service comb为注册中心了,但是这种方式直接报错,网关报错404找不到了 也试过如下请求方式,但是也是同样报错, http://localhost:8080/appName:query_service_name/query/xxx 现在就是疑问,service comb支持这个功能吗,如果支持我该如何修改,还是版本问题? 请大佬指点