kitex

package module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2021 License: Apache-2.0 Imports: 0 Imported by: 9

README

CloudWeGo-Kitex

Kitex 字节跳动内部的 Golang 微服务 RPC 框架,具有高性能强可扩展的特点,针对字节内部做了定制扩展。如今越来越多的微服务选择使用 Golang,我们考虑将 Kitex 开源出来丰富开源社区。如果对微服务性能有要求,又希望定制扩展融入自己的治理体系,Kitex 会是一个不错的选择。

框架特点

  • 高性能

    使用自研的高性能网络库 Netpoll,性能相较 go net 具有显著优势。

  • 扩展性

    提供了较多的扩展接口以及默认扩展实现,使用者也可以根据需要自行定制扩展,具体见下面的框架扩展。

  • 多消息协议

    RPC 消息协议默认支持 ThriftKitex ProtobufgRPC。Thrift 支持 Buffered 和 Framed 二进制协议;Kitex Protobuf 是 Kitex 自定义的 Protobuf 消息协议,协议格式类似 Thrift;gRPC 是对 gRPC 消息协议的支持,可以与 gRPC 互通。除此之外,使用者也可以扩展自己的消息协议。

  • 多传输协议

    传输协议封装消息协议进行 RPC 互通,传输协议可以额外透传元信息,用于服务治理,Kitex 支持的传输协议有 TTHeaderHTTP2。TTHeader 可以和 Thrift、Kitex Protobuf 结合使用;HTTP2 目前主要是结合 gRPC 协议使用,后续也会支持 Thrift。

  • *多种消息类型

    支持 PingPongOneway双向 Streaming。其中 Oneway 目前只对 Thrift 协议支持,双向 Streaming 只对 gRPC 支持,后续会考虑支持 Thrift 的双向 Streaming。

  • 服务治理

    支持服务注册/发现、负载均衡、熔断、限流、重试、监控、链路跟踪、日志、诊断等服务治理模块,大部分均已提供默认扩展,使用者可选择集成。

  • 代码生成

    Kitex 内置代码生成工具,可支持生成 ThriftProtobuf 以及脚手架代码。

框架性能

性能测试只能提供相对参考,工业场景下,有诸多因素可以影响实际的性能表现。

由于开源社区缺少支持 thrift 的优秀 RPC 框架,当前对比项目为 grpc, rpcx, 均使用 protobuf 协议。

我们通过 测试代码 比较了它们的性能,测试表明 Kitex 具有明显优势。

测试环境
  • CPU: Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz, 4 cores
  • Memory: 8GB
  • OS: Debian 5.4.56.bsk.1-amd64 x86_64 GNU/Linux
  • Go: 1.15.4
并发表现 (Echo 1KB, 改变并发量)
QPS TP99 TP999
image image image
吞吐表现 (并发 100, 改变包大小)
QPS TP99 TP999
image image image

详细文档

相关项目

  • Netpoll: 自研的高性能网络库,Kitex 默认集成的。
  • kitex-contrib:Kitex 的部分扩展库,使用者可以根据需求通过 Option 集成进 Kitex 中。
  • Example:Kitex 的使用示例。

相关文章

贡献代码

Contributing

开源许可

Kitex 基于Apache License 2.0 许可证,其依赖的三方组件的开源许可见 Licenses

联系我们

Documentation

Index

Constants

View Source
const (
	Name    = "Kitex"
	Version = "v0.0.4"
)

Name and Version info of this framework, used for statistics and debug

Variables

This section is empty.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
Package client contains core part of Kitex client.
Package client contains core part of Kitex client.
callopt
Package callopt contains options that control the behavior of client on request level.
Package callopt contains options that control the behavior of client on request level.
genericclient
Package genericclient ...
Package genericclient ...
client
Package client defines the Options of client
Package client defines the Options of client
configutil
Package configutil .
Package configutil .
mocks
Package mocks contains mocks of interfaces.
Package mocks contains mocks of interfaces.
server
Package server defines the Options of server
Package server defines the Options of server
pkg
acl
Package acl implements ACL functionality.
Package acl implements ACL functionality.
circuitbreak
Package circuitbreak implements the circuit breaker logic.
Package circuitbreak implements the circuit breaker logic.
diagnosis
Package diagnosis provide support to register probe func that can get some infos to do diagnosis.
Package diagnosis provide support to register probe func that can get some infos to do diagnosis.
discovery
Package discovery defines interfaces for service discovery.
Package discovery defines interfaces for service discovery.
exception
Package exception is deprecated
Package exception is deprecated
generic
Package generic ...
Package generic ...
generic/binary_test
Package test ...
Package test ...
generic/descriptor
Package descriptor the idl descriptor for describe the idls with golang
Package descriptor the idl descriptor for describe the idls with golang
generic/map_test
Package test ...
Package test ...
generic/thrift
Package thrift provides thrift idl parser and codec for generic call
Package thrift provides thrift idl parser and codec for generic call
http
Package http is used to implement RPC over HTTP.
Package http is used to implement RPC over HTTP.
loadbalance/lbcache
Package lbcache combine balancer with reslover and cache the resolve result
Package lbcache combine balancer with reslover and cache the resolve result
protocol/bthrift
Package bthrift .
Package bthrift .
registry
Package registry is the API definition of service registry.
Package registry is the API definition of service registry.
remote
Package remote defines all interfaces that are used to do transport with peer side and contains default extension implementations.
Package remote defines all interfaces that are used to do transport with peer side and contains default extension implementations.
remote/connpool
Package connpool provide short connection and long connection pool.
Package connpool provide short connection and long connection pool.
remote/remotecli
Package remotecli for remote client
Package remotecli for remote client
remote/trans/detection
Package detection protocol detection
Package detection protocol detection
remote/trans/invoke
Package invoke .
Package invoke .
remote/trans/netpoll
Package netpoll contains server and client implementation for netpoll.
Package netpoll contains server and client implementation for netpoll.
remote/trans/nphttp2
Package nphttp2 transport powered by netpoll
Package nphttp2 transport powered by netpoll
remote/trans/nphttp2/codes
Package codes defines the canonical error codes used by gRPC.
Package codes defines the canonical error codes used by gRPC.
remote/trans/nphttp2/grpc
Package grpc defines and implements message oriented communication channel to complete various transactions (e.g., an RPC).
Package grpc defines and implements message oriented communication channel to complete various transactions (e.g., an RPC).
remote/trans/nphttp2/metadata
Package metadata define the structure of the metadata supported by gRPC library.
Package metadata define the structure of the metadata supported by gRPC library.
remote/trans/nphttp2/status
Package status implements errors returned by gRPC.
Package status implements errors returned by gRPC.
remote/transmeta
Package transmeta .
Package transmeta .
retry
Package retry implements rpc retry
Package retry implements rpc retry
rpctimeout
Package rpctimeout implements logic for timeout controlling.
Package rpctimeout implements logic for timeout controlling.
streaming
Package streaming interface
Package streaming interface
transmeta
Package transmeta metadata handler for translation
Package transmeta metadata handler for translation
utils
Package utils contains utils.
Package utils contains utils.
Package server defines the Options of server Package server .
Package server defines the Options of server Package server .
genericserver
Package genericserver ...
Package genericserver ...
tool
internal/pkg/generator
Package generator .
Package generator .
internal/pkg/tpl
Package tpl .
Package tpl .
Package transport provides predefined transport protocol.
Package transport provides predefined transport protocol.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL