Posts in 2021
-
RPC 框架 Kitex 实践入门:性能测试指南
Wednesday, November 24, 2021 in 新闻
日前,字节跳动服务框架团队正式开源 CloudWeGo ,在抖音、今日头条均有深度应用的 Golang 微服务 RPC 框架 Kitex 也包含在其中。 本文旨在分享开发者在压测 Kitex 时需要了解的场景和技术问题。这些建议有助于用户更好地结合真实 RPC 场景对 Kitex 进行调优,使之更贴合业务需要、发挥最佳性能。用户也可以参考官方提供的压测项目 kitex-benchmark 了解更多细节。 微服务场景的特点 Kitex 诞生于字节跳动大规模微服务架构实践,面向的场景自然是微服务场 …
-
Release v0.0.8
Friday, November 05, 2021 in Kitex
优化 使用分片 ring 减少连接池的锁开销。 装填 TTHeader 中的上游服务信息到 rpcinfo 中,用于在 decode 出错时输出来源信息。 Unlink uds 调整至 CreateListener 中。 event.go 和 ring_single.go 中的 Mutex 改为 RWMutex。 Bug 修复 修复 netpollmux shard index 溢出的问题。 移除 WithCircuitBreaker option 里对参数的反射, …
-
Release v0.0.5
Sunday, September 26, 2021 in Kitex
功能: 增加默认的 ErrorHandler 封装 Error(用户指定会被覆盖)。 metainfo 支持反向传递。 支持了 JSON 泛化调用,使用指南可参考:Kitex 泛化调用使用指南。 优化: 多路复用场景下使用了新的 netpoll API 来改善吞吐和延迟。 多路复用场景下支持 metainfo 的正向和反向传递。 Client 会在需要的时候默认使用 RPCTimeout 中间件。 连接池配置增加全局空闲连接和单实例空闲连接合法性校验。 当更新 QPS 最大限制时会重置计数 …
-
字节跳动 Go RPC 框架 Kitex 性能优化实践
Thursday, September 23, 2021 in 新闻
前言 Kitex 是字节跳动框架组研发的下一代高性能、强可扩展性的 Go RPC 框架。除具备丰富的服务治理特性外,相比其他框架还有以下特点: 集成了自研的网络库 Netpoll;支持多消息协议(Thrift、Protobuf)和多交互方式(Ping-Pong、Oneway、 Streaming);提供了更加灵活可扩展的代码生成器。 目前公司内主要业务线都已经大范围使用 Kitex,据统计当前接入服务数量多达 8k。Kitex 推出后,我们一直在不断地优化性能,本文将分享我们在 Netpoll …
-
Release v0.0.4
Thursday, September 16, 2021 in Netpoll
优化: 默认支持 TCP_NODELAY 支持在一个循环中读写 返回 nocopy rw 的真实错误 更改了循环策略的默认数量 重新定义了 EventLoop.Serve arg: Listener -> net.Listener 在 DisableGopool 中增加了API 删除了读锁 连接 Flush API 调整为阻塞的 Bug 修复: 设置剩余待读取大小。
-
字节跳动开源内部微服务中间件 CloudWeGo
Tuesday, September 07, 2021 in 新闻
开源背景 CloudWeGo 是一套由字节跳动开源的、以 Go 语言为核心的、可快速构建企业级云原生架构的中间件集合,专注于微服务通信与治理,具备高性能、可扩展、高可靠的特点。 字节跳动内部使用 Golang 作为主要的业务开发语言,我们支持着数万个 Golang 微服务的可靠通信,经过数量众多的微服务和海量流量的验证,我们已经有了较为成熟的微服务最佳实践,于是考虑将内部的实践开源出去丰富社区生态。 但微服务相关的项目较多,每个项目单独开源对外部用户并不友好,为了更好地让大家聚焦于微服务, …
-
Release v0.0.4
Thursday, August 26, 2021 in Kitex
优化: transMetaHandler 在自定义 boundHandlers 之前执行,保证自定义 boundHandlers 可以拿到 RPCInfo 信息。 TransError 暴露封装 error 的 typeID 用于支持自定义 Error 回传错误码。 Bug 修复: 复用 RPCInfo 不对 stats level 重置, 以修复在使用 netpollmux 时 metric 丢失问题。 清理不存在节点的连接池。 Streaming 中增加 Netpoll EOF 错误判 …
-
Release v0.0.2
Friday, July 30, 2021 in Kitex
优化: Kitex 在没有 tracer 时关闭 stats 分阶段耗时采集,避免无 Trace 时额外的性能消耗。 Kitex client 默认使用连接池。 Bug 修复: 修复了一个 lbcache 中 nil-pointer 的错误。 修复了一个 retry 重试(Backup Request)中的 data race 问题。 工具: Kitex 工具去掉默认生成的配置文件。 Kitex 工具现在使用最新的 thriftgo API 以避免老版 API 在生成代码时的几个边角案 …