Jayant
Jayant
### The New Feature 在v1.25.0版本实现中,xds client通过send协程定时向控制面发起连接和xds请求,recv协程负责异步接收控制面配置。这个实现存在以下两点问题: 1. 控制面&数据面连接故障,无法立即恢复,须等待send协程定时器结束重新发起建立连接请求; 2. 在无变更时,频繁向控制面请求数据是没有必要的,且在大规模场景下容易造成控制面负载增加。 ### Your advice 修改xds client建连逻辑,改为recv协程在感知连接断开后自动重连,单起send协程负责定期断开连接以提供自动负载均衡功能。 ### Environment - MOSN Version
### The New Feature When mosn is used as inbound h2 traffic proxy, if we make hot upgrade or close pod, we need to close mosn inbound listener and downstream...
为解决独立实现的H2库稳定性不可控,容易与标准库脱钩导致后续维护困难的问题,调整H2库的底层实现,复用标准库的主体代码。 但实现上,为了使mosn的io层和内存复用在性能上发挥作用,在代码零侵入的条件上做了妥协。也就是没有和H1代理一样使用pipe封装connection,而是重写了framer和read frame goroutine。 TODO: 1. 性能优化; 2. h2 client支持; 3. 单元测试&集成测试;
#### What type of PR is this? perf/fix #### What this PR does / why we need it (en: English/zh: Chinese): en: reuse rpcinfo to improve performance in long connection...
#### What type of PR is this? feat #### What this PR does / why we need it (en: English/zh: Chinese): en: js_conv annotation of generic call supports map type...
#### What type of PR is this? refactor #### What this PR does / why we need it (en: English/zh: Chinese): en: refactor server detection trans handler to support custom...
为方便Kitex用户上云,计划对接腾讯的开源服务治理平台Polaris,通过集成[go sdk](https://github.com/polarismesh/polaris-go/tree/main/examples/quickstart),满足诸如服务注册发现、熔断限流和动态路由等Polaris平台的治理能力。目前已实现的功能有服务的注册发现,contrib仓库链接 -> [registry-polaris](https://github.com/kitex-contrib/registry-polaris)。 分点描述各部分能力与Kitex集成的方案: 1. 熔断降级: Polaris对熔断的实现是请求结束后,调用consumer接口上报单实例请求结果,再在选择实例时剔除故障实例,参考[使用故障熔断](https://polarismesh.cn/zh/doc/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E7%86%94%E6%96%AD%E9%99%8D%E7%BA%A7/%E6%95%85%E9%9A%9C%E7%86%94%E6%96%AD.html#%E4%BD%BF%E7%94%A8%E6%95%85%E9%9A%9C%E7%86%94%E6%96%AD)。在[registry-polaris](https://github.com/kitex-contrib/registry-polaris)中,已经完成了服务发现的接入,因此,只需要再添加上报ServiceCallResult的Middleware即可。 2. 限流: 在https://github.com/cloudwego/kitex/pull/431 中,扩展支持了外部限流器的实现,在代码中可通过`WithConcurrencyLimiter`和`WithQPSLimiter`传入限流器。 > 注:这里之所以不用middleware,是为了尽量让限流的生效时机提前,在所以middleware执行前便触发其执行。 3. 动态路由&负载均衡: 与[gRPC接入](https://github.com/polarismesh/grpc-go-polaris)类似,Kitex框架扩展Resolver和Balancer,在Resolver中解析出所有的服务实例。 https://github.com/cloudwego/kitex/blob/6c033d991c18de59e106ca5d94e0543f6de94008/pkg/discovery/discovery.go#L56 这个实现可以保留contrib仓库[registry-polaris](https://github.com/kitex-contrib/registry-polaris)的实现。 动态路由和负载均衡的逻辑需要嵌入到LoadBalancer的实现内。目前Kitex框架默认的`weightedBalancer`和`weightedPicker`需要换成Polaris的实现。细节是: > i. 自定义polarisBalancer实现`Loadbalancer`接口,并把传入的`discovery.Result`转换为Polaris的`ServiceInstances`对象,写入内存缓存,并在每次Rebalance时重新赋值; ii. 从对象池中获取polarisPicker,并填充serviceInstances字段,作为后续调用picker.Next()函数获取实例的实例池; iii. 在Next函数内实现动态路由和负载均衡的能力,均由Polaris暴露的sdk函数提供。其中动态路由只在第一次调用Next时执行,得到结果后写入picker的缓存。 这样,在部分实例故障无法建立连接需要重试时,不会每次重新选择实例都要执行一遍路由的逻辑,可以减少计算开销。 > 注:Kitex服务发现Middleware代码位置:...
## Is your feature request related to a problem? Please describe. ### Support customization of limiter implementation Now the server limiter can only be created by `Limits` options, which specify...
## Description close file descriptor after parsing idl file ## Motivation and Context ## Related Issue
## Kind feat ## Description zh: 1. 修复optional的枚举类型添加默认值时的报错问题 2. 增加thrift默认值类型校验 en: 1. Fixed an error when adding default values to optional enumeration types 2. Add thrift default value type check