Posts in 2021

  • Release v0.1.0

    Wednesday, December 01, 2021 in Netpoll

    功能: 增加了分片队列,用于支持连接多路复用 优化方案:尽可能的维护单节点 LinkBuffer 来减少 copy 优化方案:修复了 waitReadSize 的 bug,并优化了 input trigger 效率 优化方案:减少了 waitRead 和 inputAck 冲突时产生的超时错误 逻辑简化:简化了连接状态机 Bug 修复: 修复了 eventLoop 提前 GC 的 bug 文档 更新 README,将 Performance …

    更多

  • RPC 框架 Kitex 实践入门:性能测试指南

    Wednesday, November 24, 2021 in 新闻

    2021 年 9 月 8 日,字节跳动宣布正式开源 CloudWeGo。CloudWeGo 是一套字节跳动内部微服务中间件集合,具备高性能、强扩展性和稳定性的特点,专注于解决微服务通信与治理的难题,满足不同业务在不同场景的诉求。CloudWeGo 第一批开源了四个项目:Kitex、Netpoll、Thriftgo 和 netpoll-http2,以 RPC 框架 Kitex 和网络库 Netpoll 为主。 日前,字节跳动服务框架团队正式开源 CloudWeGo ,在抖音、今日头条均有深度应 …

    更多

  • 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 里对参数的反射, …

    更多

  • 字节跳动在 Go 网络库上的实践

    Saturday, October 09, 2021 in 新闻

    本文选自“字节跳动基础架构实践”系列文章。 “字节跳动基础架构实践”系列文章是由字节跳动基础架构部门各技术团队及专家倾力打造的技术干货内容,和大家分享团队在基础架构发展和演进过程中的实践经验与教训,与各位技术同学一起交流成长。 RPC 框架作为研发体系中重要的一环,承载了几乎所有的服务流量。本文将简单介绍字节跳动自研网络库 netpoll 的设计及实践;以及我们实际遇到的问题和解决思路,希望能为大家提供一些参考。 前言 RPC 框架作为研发体系中重要的一环,承载了几乎所有的服务流量。随着公司 …

    更多

  • 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.3

    Sunday, August 01, 2021 in Kitex

    Bug 修复: 防止连接池被覆盖。

    更多