Posts in 2024
如何让你的 Kitex 生成代码击败 99% 的用户
Friday, September 20, 2024 in 新闻
项目:
前言 为什么要生成代码 框架开发有两种常见的风格: Code First 和 Schema First 简单来说,Code First 就是先写代码,再由代码生成数据模型和接口规范(比如先代码写一个 http 接口,然后用 Swagger 来生成 API 信息) 而 RPC 开发更多是 Schema First ,因为 RPC 服务可能是跨语言的,不一定会先写代码,而是用 Thrift、Protobuf 这些通用的 IDL 来描述接口和结构体,再生成对应语言、对应框架的具体代码。 (btw, …
Release v0.11.0
Thursday, September 12, 2024 in Kitex
项目:
建议直接升级 Kitex 版本到 v0.11.3, 因为我们对 v0.11.0 里的一些性能问题进行了优化 重要变更介绍 新特性 重试:新增混合重试功能:支持同时开启「失败重试」+「Backup Request」两种策略,能够在降低长尾请求的同时提高请求的重试成功率,详见 请求重试 自定义 Payload 校验:为避免硬件故障或数据篡改导致收发的数据不一致,Kitex 提供了对 Payload 报文的校验功能,并支持自定义扩展,使用方式参见: payload 校验 功能优化 Frugal …
Release v0.10.0
Wednesday, June 12, 2024 in Kitex
项目:
重要变更介绍 性能优化 新版本探索了更多性能优化的方向和非常规的一些优化手段。 长连接池: 100 并发 qps 提升 4%, p99 降低 18% 多路复用: 100 并发 qps 提升 7%, p99 降低 24% gRPC: 100 并发 qps优化 8%,p99优化 10% 代码产物精简优化 移除非序列化代码(默认):原 kitex_gen Thrift 产物代码为保持与 Apache 的一致性,会生成 Processor 代码,但 Kitex 并不需要这些代码。为解决大家的产物痛点问 …
kitexcall:用 JSON 发起 RPC 请求的命令行神器
Friday, May 31, 2024 in 新闻
项目:
背景 Kitex 是字节跳动基础架构服务框架团队推出的 Go 微服务 RPC 框架,支持 Thrift、Kitex Protobuf、gRPC 等消息协议,具有高性能、强可扩展的特点。Kitex 于 2021 年 9 月正式开源后,已在多家外部企业成功落地,为他们带来了真实的成本、性能和稳定性收益。 然而,对于开发者来说,有一个痛点是,为了验证 Server 端代码,发起 RPC 测试请求的流程比较繁琐。 痛点 给 Kitex 服务发送 RPC 测试请求的过程通常包括: 生成客户端代码: …
Release v0.10.0
Monday, April 08, 2024 in Volo
项目:
Volo 0.10.0 版本中,我们更多的关注在了可扩展性和易用性上。 Break Change 错误处理重构 原先的错误类型存在诸如语义不清晰、可维护性不强、可扩展性不强、容易误用等问题,因此在新版中,我们重构了整个错误处理部分,极大加强了错误处理部分的语义清晰度和可维护性,并通过类型系统降低误用概率。 迁移指南 Server Handler 迁移 如果原先使用 anyhow::Result 的,把 anyhow:Result 改为 volo_thrift::ServerResult 即可: …
Kitex 支持 Dubbo 协议:助力多语言云原生生态融合
Saturday, March 16, 2024 in 新闻
项目:
背景 Kitex 是字节跳动基础架构服务框架团队推出的 Go 微服务 RPC 框架,支持 Thrift、Kitex Protobuf、gRPC 等消息协议,具有高性能、强可扩展的特点。于 2021 年 9 月正式开源后,已在多家外部企业成功落地,为他们带来了真实的成本、性能和稳定性收益。 很多企业用户在使用 Kitex 改造服务的过程中,需要 Kitex 能与现有的 Dubbo 框架实现的服务进行通信,这与 CloudWeGo 社区积极拓展生态的目标不谋而合,因此 Dubbo …
Release v0.9.0
Monday, March 04, 2024 in Kitex
项目:
v0.9.0 针对 Thrift 提供了两个重要的功能:Thrift Streaming 和 Multi-Service,发布多个 RC 版本在内部试点收集反馈,所以正式版本姗姗来迟。 下面就重要变更做一些介绍: 重要变更介绍 功能 1. Thrift Streaming 基于 gRPC(HTTP2) 的 Thrift Streaming 功能正式 Release,用户可以使用 Thrift IDL 定义自己的 Streaming 请求,为保持 IDL 解析的兼容性,Kitex …
Release v0.6.0
Monday, March 04, 2024 in Netpoll
项目:
Feature [#306] feat: 懒加载 pollers 以避免在 netpoll 没有被使用时,创建任何 poller goroutines [#303] feat: 支持 WithOnDisconnect 回调 [#300] feat: netpoll exception 实现 net.Error 接口 [#294] feat: netpoll 支持 SetRunner 参数 Fix [#307] fix: 修复当 disconnect 与 connect 回调同时运行时, …
Release v0.8.0
Friday, January 12, 2024 in Hertz
项目:
Hertz v0.8.0 版本中,除了常规迭代优化之外,我们还带来了一个重要 feature。 Partitioned cookies 在 Hertz v0.8.0 版本中,我们支持了 partitioned cookies 特性。 https://github.com/cloudwego/hertz/pull/1041 背景 三方 Cookie 为 Web 提供了跨站点跟踪的能力,它的存在为 Web 用户的隐私和安全都带来了巨大威胁。Chrome 从 2024 年第一季度开始对 1% 的用户禁 …
Release v0.9.0
Thursday, January 04, 2024 in Volo
项目:
Volo 0.9.0 版本中,我们主要将默认生成的 HashSet/HashMap 类型修改为了 AHashMap/AHashSet, 预期会带来一定的性能提升。此外,随着 Rust 1.75 的发布,Volo 已经可以在 stable rust 中使用了。 Break Change 默认生成的 HashSet / HashMap 类型修改 在新版生成代码中,默认生成的 HashMap/HashSet 类型修改为了 AHashMap/AHashSet,这相比 std 的 map 会带来更高的性 …