servicecomb-java-chassis icon indicating copy to clipboard operation
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...

Results 278 servicecomb-java-chassis issues
Sort by recently updated
recently updated
newest added

当请求走到doInvoke时 ![image](https://github.com/user-attachments/assets/62a9b16f-1c9a-4d3b-826d-46e14338df5b) 由于在外部进行了++,导致handlerIndex已经是1了 ![image](https://github.com/user-attachments/assets/5aec9dd6-68d8-422d-82c3-5a1b9c895909) 此时放在handlerList中的首个是ProviderQpsFlowControlHandler ![image](https://github.com/user-attachments/assets/02fc7631-27fa-4bc1-9ff1-18607c62c50e) 它的首行会判断invocation的hanlerIndex是否大于0,由于handlerIndex++放在入口前,且handlerIndex不能赋值初始值为-1,也没有其他途径修改值,所以进来这里的代码一定是大于0的,导致ProviderQpsFlowControlHandler可能永远不被执行 ![image](https://github.com/user-attachments/assets/52bac518-b087-4c7c-aeb8-ee835bc25235) 我在走读代码的时候看到了这么个情况,绞尽脑子没有想到缘由,可能不是bug,而是有什么其他设计,希望能够得到解答,万分感谢!

能力:支持对刚启动服务实例流量预热,流量曲线增加,流量预热时间结束后与其他实例均等。 方案: 计算每个实例的权重,根据权重选择一个实例作为负载使用。 1、权重计算 默认每个实例权重为100,预热实例权重为Math.round(Math.pow(实例运行时间/ 设置的预热时间, 曲率) * 默认权重100) 2、选择实例 当存在需要预热实例时(即设置的预热时间未结束),根据计算的权重选择实例返回负载;当不存在需要预热的实例时,全部实例返回。

enhancement
2.x
3.x

#### 背景 当业务定制的filter或者servicecomb自带的filter出现异常时,想要根据对应的异常类型或异常信息来记录日志或告警 #### 分析 查看servicecomb源码,发现ExceptionToProducerResponseConverter只能在业务执行业务逻辑阶段抛出异常才会捕获, Handler,HttpServerFilter 等抛出的异常当前没有通用的拦截机制 #### 诉求 能够针对Handler,HttpServerFilter 等抛出的异常也提供类似异常捕获器的能力

2.x

## 场景 集成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为服务初始化加载,未发现修改的地方,目前还未定位到根因,麻烦帮忙提供下定位方向及定位思路,日志如下 ![20241112-095758](https://github.com/user-attachments/assets/f3104dfd-d397-49a1-925a-c31ba1bb2c76)

1、当前线程A服务代码中第73行使用RPC方式异步调用B服务: ![业务逻辑调用](https://github.com/user-attachments/assets/93710f21-fd75-4bc7-b63a-9e7bde691a1a) 2、负载均衡没有找到B服务可用的地址: ![负载均衡没有可用机器](https://github.com/user-attachments/assets/46a5951a-b952-4071-804b-3d2b53b7e17e) 3、A服务当前线程上下文被清除: ![当前线程上下文被清除](https://github.com/user-attachments/assets/20846a4f-cc1a-4f6e-9eba-0d0ce95f6ed7) 4、A服务当前线程再接着调用C服务时,从上下文中获取参数时报空指针: ![调B服务失败后再取上下文时报空指针异常](https://github.com/user-attachments/assets/d70fe2f6-6b90-408c-b5d8-5316e4b8bc84)

之前使用的是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支持这个功能吗,如果支持我该如何修改,还是版本问题? 请大佬指点