Bez popisu

ncteisen ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
.github 811d39a5bc Add owners to C++ end2end tests to prevent accident API breakage před 7 roky
.vscode d1f3082ff6 Adding shim for debugging node tests using vscode. před 8 roky
bazel 238332272c Update bazel toolchain version. před 7 roky
cmake 4493cea016 Merge pull request #14019 from hacst/cmake-export-fix před 7 roky
doc 35367cc3ed fix typo před 7 roky
etc 69c923ffb7 Updating roots from Mozilla. před 8 roky
examples 6d13712d07 Fix Python example unary/stream conflict před 7 roky
include ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
src ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
summerofcode 009dfea6a0 2018 ideas (gRPC Python Team's, at least) před 8 roky
templates 47e65e7b7e Fix use_openssl.sh.template to pass shellcheck před 7 roky
test ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
third_party a110c74c58 Update BoringSSL to latest chromium-stable ref před 8 roky
tools ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
vsprojects 4dc3c0bdd3 Merge branch 'master' of github.com:grpc/grpc into filters_prio před 8 roky
.clang-format baa14a975e Update clang-format to 5.0 před 8 roky
.clang_complete 4ac2b8e585 Enable clang-tidy as a sanity check, fix up all known failures před 8 roky
.editorconfig ae66d78b8e Adding an editorconfig configuration file. před 11 roky
.gitignore bc4b7891c8 Merge remote-tracking branch 'upstream/master' into create-grpc-c++-podspec před 8 roky
.gitmodules 8472e4032a Ignore zlib submodule if its dirty (due to CMake) před 7 roky
.istanbul.yml 2af89e49cb Moved gRPC node package root to repo root, made it depend on grpc.gyp před 10 roky
.pylintrc 2010985ab2 gRPC Python test infrastructure před 8 roky
.rspec d7e1a10628 Bundled C core with Ruby library před 10 roky
.travis.yml 10726f0421 Have Travis build the Sample app with frameworks too před 9 roky
.yardopts 33c728e1ed Adding a .yardopts file at the root so rubydocs isn't getting lost. před 10 roky
AUTHORS 312ea4a187 change LICENSE, add AUTHORS před 8 roky
BUILD ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
CMakeLists.txt ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
CODE-OF-CONDUCT.md c055a79262 Fix code of conduct před 8 roky
CONTRIBUTING.md 262d59e07c Update CONTRIBUTING.md před 8 roky
Gemfile d7e1a10628 Bundled C core with Ruby library před 10 roky
INSTALL.md fb5adaee61 remove reference to downloading protoc před 7 roky
LICENSE fbb61ed25d fix license file před 8 roky
MANIFEST.md ac586ba21e Remove tox před 9 roky
Makefile ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
NOTICE.txt 312ea4a187 change LICENSE, add AUTHORS před 8 roky
OWNERS c052f363bf Substitute a11r for ctiller in all OWNERS files před 8 roky
PYTHON-MANIFEST.in 1f24b2ad8a Changes před 8 roky
README.md 611ee4ac68 Update README.md Copyright Notice před 8 roky
Rakefile 3be06433af Ruby macos kokoro environment and package build updates před 8 roky
WORKSPACE 174e02ae3e Packs contents of WORKSPACE into a bzl function, so that it can be resued by other projects, and simplifies cares build. před 8 roky
build.yaml ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
build_config.rb 392e2131e1 Removing grpc_alarm from core requires a major version bump for core před 8 roky
composer.json bb3d95b643 Use https://grpc.io consistently as the canonical URL před 8 roky
config.m4 ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
config.w32 ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
gRPC-C++.podspec ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
gRPC-Core.podspec ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
gRPC-ProtoRPC.podspec 43884047c9 Regenerate projects před 8 roky
gRPC-RxLibrary.podspec 43884047c9 Regenerate projects před 8 roky
gRPC.podspec 43884047c9 Regenerate projects před 8 roky
grpc.bzl 4d5c3102a1 fix remaining license notices před 8 roky
grpc.def 18b9133f31 Merge branch 'master' into gpr_review před 7 roky
grpc.gemspec ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
grpc.gyp ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
package.xml ac86f04373 Merge branch 'master' of https://github.com/grpc/grpc into channel-tracing před 7 roky
requirements.txt bfcc99429b Bump minimum Cython version to 0.27 před 8 roky
setup.cfg 06dea573da Enable running Python formatting před 9 roky
setup.py e7a60bd812 Add NOMINMAX flag for Python Windows před 8 roky

README.md

Build Status

gRPC - An RPC library and framework

Copyright 2015 The gRPC Authors

Documentation

You can find more detailed documentation and examples in the doc and examples directories respectively.

Installation & Testing

See INSTALL for installation instructions for various platforms.

See tools/run_tests for more guidance on how to run various test suites (e.g. unit tests, interop tests, benchmarks)

See Performance dashboard for the performance numbers for the latest released version.

Repository Structure & Status

This repository contains source code for gRPC libraries for multiple languages written on top of shared C core library src/core.

Libraries in different languages may be in different states of development. We are seeking contributions for all of these libraries.

Language Source
Shared C [core library] src/core
C++ src/cpp
Ruby src/ruby
Python src/python
PHP src/php
C# src/csharp
Objective-C src/objective-c

Java source code is in the grpc-java repository. Go source code is in the grpc-go repository. NodeJS source code is in the grpc-node repository.

See MANIFEST.md for a listing of top-level items in the repository.

Overview

Remote Procedure Calls (RPCs) provide a useful abstraction for building distributed applications and services. The libraries in this repository provide a concrete implementation of the gRPC protocol, layered over HTTP/2. These libraries enable communication between clients and servers using any combination of the supported languages.

Interface

Developers using gRPC typically start with the description of an RPC service (a collection of methods), and generate client and server side interfaces which they use on the client-side and implement on the server side.

By default, gRPC uses Protocol Buffers as the Interface Definition Language (IDL) for describing both the service interface and the structure of the payload messages. It is possible to use other alternatives if desired.

Surface API

Starting from an interface definition in a .proto file, gRPC provides Protocol Compiler plugins that generate Client- and Server-side APIs. gRPC users typically call into these APIs on the Client side and implement the corresponding API on the server side.

Synchronous vs. asynchronous

Synchronous RPC calls, that block until a response arrives from the server, are the closest approximation to the abstraction of a procedure call that RPC aspires to.

On the other hand, networks are inherently asynchronous and in many scenarios, it is desirable to have the ability to start RPCs without blocking the current thread.

The gRPC programming surface in most languages comes in both synchronous and asynchronous flavors.

Streaming

gRPC supports streaming semantics, where either the client or the server (or both) send a stream of messages on a single RPC call. The most general case is Bidirectional Streaming where a single gRPC call establishes a stream where both the client and the server can send a stream of messages to each other. The streamed messages are delivered in the order they were sent.

Protocol

The gRPC protocol specifies the abstract requirements for communication between clients and servers. A concrete embedding over HTTP/2 completes the picture by fleshing out the details of each of the required operations.

Abstract gRPC protocol

A gRPC RPC comprises of a bidirectional stream of messages, initiated by the client. In the client-to-server direction, this stream begins with a mandatory Call Header, followed by optional Initial-Metadata, followed by zero or more Payload Messages. The server-to-client direction contains an optional Initial-Metadata, followed by zero or more Payload Messages terminated with a mandatory Status and optional Status-Metadata (a.k.a.,Trailing-Metadata).

Implementation over HTTP/2

The abstract protocol defined above is implemented over HTTP/2. gRPC bidirectional streams are mapped to HTTP/2 streams. The contents of Call Header and Initial Metadata are sent as HTTP/2 headers and subject to HPACK compression. Payload Messages are serialized into a byte stream of length prefixed gRPC frames which are then fragmented into HTTP/2 frames at the sender and reassembled at the receiver. Status and Trailing-Metadata are sent as HTTP/2 trailing headers (a.k.a., trailers).

Flow Control

gRPC inherits the flow control mechanisms in HTTP/2 and uses them to enable fine-grained control of the amount of memory used for buffering in-flight messages.