kitex

package module
v0.10.3 Latest Latest
Warning

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

Go to latest
Published: Jul 26, 2024 License: Apache-2.0 Imports: 0 Imported by: 12

README

CloudWeGo-Kitex

English | 中文

Release WebSite License Go Report Card OpenIssue ClosedIssue Stars Forks Slack

Kitex [kaɪt'eks] is a high-performance and strong-extensibility Golang RPC framework that helps developers build microservices. If the performance and extensibility are the main concerns when you develop microservices, Kitex can be a good choice.

Basic Features

  • High Performance

Kitex integrates Netpoll, a high-performance network library, which offers significant performance advantage over go net.

  • Extensibility

Kitex provides many interfaces with default implementation for users to customize. You can extend or inject them into Kitex to fulfill your needs (please refer to the framework extension section below).

  • Multi-message Protocol

Kitex is designed to be extensible to support multiple RPC messaging protocols. The initial release contains support for Thrift, Kitex Protobuf and gRPC, in which Kitex Protobuf is a Kitex custom Protobuf messaging protocol with a protocol format similar to Thrift. Kitex also supports developers extending their own messaging protocols.

  • Multi-transport Protocol

For service governance, Kitex supports TTHeader and HTTP2. TTHeader can be used in conjunction with Thrift and Kitex Protobuf.

  • Multi-message Type

Kitex supports PingPong, One-way, and Bidirectional Streaming. Among them, One-way currently only supports Thrift protocol.

  • Service Governance

Kitex integrates service governance modules such as service registry, service discovery, load balancing, circuit breaker, rate limiting, retry, monitoring, tracing, logging, diagnosis, etc. Most of these have been provided with default extensions, giving users the option to integrate them as desired.

  • Code Generation

Kitex has built-in code generation tools that support generating Thrift, Protobuf, and scaffold code.

Documentation

  • Getting Started

  • User Guide

    • Basic Features

      Including Message Type, Supported Protocols, Directly Invoke, Connection Pool, Timeout Control, Request Retry, LoadBalancer, Circuit Breaker, Rate Limiting, Instrumentation Control, Logging and HttpResolver.[more]

    • Governance Features

      Supporting Service Discovery, Monitoring, Tracing and Customized Access Control.[more]

    • Advanced Features

      Supporting Generic Call and Server SDK Mode.[more]

    • Code Generation

      Including Code Generation Tool and Combined Service.[more]

    • Framework Extension

      Providing Middleware Extensions, Suite Extensions, Service Registry, Service Discovery, Customize LoadBalancer, Monitoring, Logging, Codec, Transport Module, Transport Pipeline, Metadata Transparent Transmission, Diagnosis Module.[more]

  • Reference

    • For Transport Protocol, Exception Instruction and Version Specification, please refer to doc.
  • Best Practice

    • Kitex best practices in production, such as graceful shutdown, error handling, integration testing. More
  • FAQ

    • Please refer to FAQ.

Performance

Performance benchmark can only provide limited reference. In production, there are many factors can affect actual performance.

We provide the kitex-benchmark project to track and compare the performance of Kitex and other frameworks under different conditions for reference.

  • Netpoll: A high-performance network library.
  • kitex-contrib: A partial extension library of Kitex, which users can integrate into Kitex through options according to their needs.
  • kitex-examples: Examples of Kitex showcasing various features.
  • biz-demo: Business demos using Kitex.

Blogs

Contributing

Contributor guide: Contributing.

License

Kitex is distributed under the Apache License, version 2.0. The licenses of third party dependencies of Kitex are explained here.

Community

Landscapes

  

CloudWeGo enriches the CNCF CLOUD NATIVE Landscape.

Documentation

Index

Constants

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

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.
mocks/diagnosis
Package remote is a generated GoMock package.
Package remote is a generated GoMock package.
mocks/discovery
Package discovery is a generated GoMock package.
Package discovery is a generated GoMock package.
mocks/generic
Package generic is a generated GoMock package.
Package generic is a generated GoMock package.
mocks/klog
Package klog is a generated GoMock package.
Package klog is a generated GoMock package.
mocks/limiter
Package limiter is a generated GoMock package.
Package limiter is a generated GoMock package.
mocks/loadbalance
Package loadbalance is a generated GoMock package.
Package loadbalance is a generated GoMock package.
mocks/net
Package net is a generated GoMock package.
Package net is a generated GoMock package.
mocks/netpoll
Package netpoll is a generated GoMock package.
Package netpoll is a generated GoMock package.
mocks/proxy
Package proxy is a generated GoMock package.
Package proxy is a generated GoMock package.
mocks/remote
Package remote is a generated GoMock package.
Package remote is a generated GoMock package.
mocks/rpc_info
Package rpc_info is a generated GoMock package.
Package rpc_info is a generated GoMock package.
mocks/stats
Package stats is a generated GoMock package.
Package stats is a generated GoMock package.
mocks/utils
Package utils is a generated GoMock package.
Package utils is a generated GoMock package.
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
fallback
Package fallback ...
Package fallback ...
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/http_test
Package test ...
Package test ...
generic/httppb_test
Package test ...
Package test ...
generic/json_test
Package test ...
Package test ...
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 resolver and cache the resolve result
Package lbcache combine balancer with resolver and cache the resolve result
mem
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/codec/protobuf/encoding
Package encoding defines the interface for the compressor and codec, and functions to register and retrieve compressors and codecs.
Package encoding defines the interface for the compressor and codec, and functions to register and retrieve compressors and codecs.
remote/codec/protobuf/encoding/gzip
Package gzip implements and registers the gzip compressor during the initialization.
Package gzip implements and registers the gzip compressor during the initialization.
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, it is used for a scenario that switching KitexProtobuf to gRPC.
Package detection protocol detection, it is used for a scenario that switching KitexProtobuf to gRPC.
remote/trans/gonet
Package gonet contains server and client implementation for go net.
Package gonet contains server and client implementation for go net.
remote/trans/invoke
Package invoke .
Package invoke .
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
The files in grpc package are forked from gRPC[github.com/grpc/grpc-go], and we keep the original Copyright[Copyright 2017 gRPC authors] and License of gRPC for those files.
The files in grpc package are forked from gRPC[github.com/grpc/grpc-go], and we keep the original Copyright[Copyright 2017 gRPC authors] and License of gRPC for those files.
remote/trans/nphttp2/grpc/syscall
Package syscall provides functionalities that grpc uses to get low-level operating system stats/info.
Package syscall provides functionalities that grpc uses to get low-level operating system stats/info.
remote/trans/nphttp2/grpc/testutils/leakcheck
Package leakcheck contains functions to check leaked goroutines.
Package leakcheck contains functions to check leaked goroutines.
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.
utils/kitexutil
Package kitexutil provides some util methods to get RPC information
Package kitexutil provides some util methods to get RPC information
xds
Package server defines the Options of server
Package server defines the Options of server
genericserver
Package genericserver ...
Package genericserver ...
tool
internal_pkg
Package internalpkg contains packages for building the kitex command line tool.
Package internalpkg contains packages for building the kitex command line tool.
internal_pkg/generator
Package generator .
Package generator .
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