GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - trpc-group/trpc-cpp: A pluggable, high-performance RPC framework written in cpp

BranchesTags
Open more actions menu

Latest commit

 

History

129 Commits
129 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
cmake
cmake
 
 
docker
docker
 
 
docs
docs
 
 
doxygen
doxygen
 
 
examples
examples
 
 
test
test
 
 
third_party
third_party
 
 
trpc
trpc
 
 
.bazelignore
.bazelignore
 
 
.bazelrc
.bazelrc
 
 
.clang-format
.clang-format
 
 
.gitignore
.gitignore
 
 
BUILD
BUILD
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CODE_OF_CONDUCT.zh_CN.md
CODE_OF_CONDUCT.zh_CN.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
CONTRIBUTING.zh_CN.md
CONTRIBUTING.zh_CN.md
 
 
CONTRIBUTORS.md
CONTRIBUTORS.md
 
 
CONTRIBUTORS.zh_CN.md
CONTRIBUTORS.zh_CN.md
 
 
DEVELOP_SPECIFICATIONS.md
DEVELOP_SPECIFICATIONS.md
 
 
DEVELOP_SPECIFICATIONS.zh_CN.md
DEVELOP_SPECIFICATIONS.zh_CN.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
README.zh_CN.md
README.zh_CN.md
 
 
WORKSPACE
WORKSPACE
 
 
build.sh
build.sh
 
 
clean.sh
clean.sh
 
 
run_examples.sh
run_examples.sh
 
 
run_examples_cmake.sh
run_examples_cmake.sh
 
 

Repository files navigation

English | 中文

tRPC-Cpp

API Docs LICENSE Releases Build Status Coverage

tRPC-Cpp is the cpp version of tRPC, it follows the overall design principles of tRPC.

Overall Architecture

architecture design

The overall architecture consists of two parts: "framework core" and "plugins". As shown in the figure above, the dotted box is tRPC. The red solid line box in the middle is the framework core, and the blue box is the plugin part.

The framework core can be divided into three layers:

  • Runtime: It consists of thread model and io model, responsible for scheduling of framework cpu tasks and io operations. thread model currently supports: ordinary thread model (io/handle separated or merged thread model), M:N coroutine model (fiber thread model). io model currently supports: reactor model for network IO and asyncIO model for disk io(based on io-uring, currently only supported in the merged thread model);

  • Transport: Responsible for data transmission and protocol encoding and decoding. The framework currently supports tcp/udp/unix-socket and uses the tRPC protocol to carry RPC messages, and also supports other protocol through codec plugin;

  • RPC: Encapsulates services and service proxy entities, provides RPC interfaces and support synchronous, asynchronous, one-way, and streaming calls;

In addition, the framework also provides an admin management interface, which is convenient for users or operating platforms to manage services. The management interface includes functions such as updating configuration, viewing version, modifying log level, viewing framework runtime information, and the framework also supports user interface to meet the customized needs.

more details:architecture design

Features

  • Runtime
    • thread-model: supportfiber(m:n coroutine) and thread(io/handle merge or separate)
    • io-model: support reactor(for network) and async-io(for disk)
  • Server
    • network: support tcp/udp/ssl/unix domain socket
    • rpc-impl: support rpc/streaming-rpc/non-rpc
  • Client
    • network: support tcp/udp/ssl
    • connection-way: support conn-complex/conn-pool/conn-pipeline
    • rpc-call: support rpc/streaming-rpc/non-rpc/one-way
  • Plugin
    • protocol(codec): support trpc/http(s/2.0)/grpc/...
    • serialization/deserialization: support pb/flatbuffers/json/noop(text and binary)
    • compressor/decompressor: support gzip/zlib/snappy/lz4
    • naming: support polarismesh
    • config: support etcd
    • logging: support cls
    • metrics: support prometheus
    • tracing: support jaeger
    • telemetry: support opentelemetry
  • Tools
    • support: admin/tvar/rpcz
    • proto IDL dependency management
  • Components
    • redis

To start using tRPC

Docs

  • compile & install
  • quick start
  • basic tutorial
  • user guide
  • api reference

Examples

  • helloworld demo
  • various features demo

How to contribute

If you're interested in contributing, please take a look at the CONTRIBUTING and check the unassigned issues in the repository. Claim a task and let's contribute together to tRPC-Cpp.

Feedback

Report bugs, ask questions or give suggestions by Issues

LICENSE

LICENSE

The copyright notice pertaining to the Tencent code in this repo was previously in the name of “THL A29 Limited.” That entity has now been de-registered. You should treat all previously distributed copies of the code as if the copyright notice was in the name of “Tencent.”

About

A pluggable, high-performance RPC framework written in cpp

Resources

Readme
License

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

360 stars

Watchers

8 watching

Forks

111 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.