Без опису

Noah Eisen fbcd75a0e0 Merge pull request #13728 from ncteisen/yapf-experimental 8 роки тому
.github e1a00b3457 Add OWNERS to protect scenario_result_schema.json 8 роки тому
.vscode d1f3082ff6 Adding shim for debugging node tests using vscode. 8 роки тому
bazel b94346f541 pass intended invocation args to bazel tests under poller script 8 роки тому
cmake 9d1d0529d3 move cmake config files to /cmake 8 роки тому
doc 7cb1f18dc2 Make load balancing policy name case insensitive 8 роки тому
etc 69c923ffb7 Updating roots from Mozilla. 8 роки тому
examples 848a749f7a yapf examples/python 8 роки тому
include 9c5d8267cd resolve comments 8 роки тому
src 66d10191b0 Merge pull request #13631 from sreecha/cv-wait-monotonic 8 роки тому
summerofcode d13a780be0 Add project overview for gsoc submission 9 роки тому
templates 138ee78529 yapf grpcio_tests 8 роки тому
test 66d10191b0 Merge pull request #13631 from sreecha/cv-wait-monotonic 8 роки тому
third_party c8bf2da1e0 Enabling hermetic testing for running tests on Foundry. 8 роки тому
tools fbcd75a0e0 Merge pull request #13728 from ncteisen/yapf-experimental 8 роки тому
vsprojects 4dc3c0bdd3 Merge branch 'master' of github.com:grpc/grpc into filters_prio 8 роки тому
.clang-format baa14a975e Update clang-format to 5.0 8 роки тому
.clang_complete 4ac2b8e585 Enable clang-tidy as a sanity check, fix up all known failures 8 роки тому
.editorconfig ae66d78b8e Adding an editorconfig configuration file. 11 роки тому
.gitignore 53d5503fac Pass a pollset_set to some client handshakers. 8 роки тому
.gitmodules b7a8cace34 Add abseil to core, use it for InlinedVector 8 роки тому
.istanbul.yml 2af89e49cb Moved gRPC node package root to repo root, made it depend on grpc.gyp 10 роки тому
.pylintrc 2010985ab2 gRPC Python test infrastructure 8 роки тому
.rspec d7e1a10628 Bundled C core with Ruby library 10 роки тому
.travis.yml 10726f0421 Have Travis build the Sample app with frameworks too 9 роки тому
.yardopts 33c728e1ed Adding a .yardopts file at the root so rubydocs isn't getting lost. 9 роки тому
AUTHORS 312ea4a187 change LICENSE, add AUTHORS 8 роки тому
BUILD f0b952824b Merge pull request #13442 from adelez/foundry_integration 8 роки тому
CMakeLists.txt 6fa206de8f Merge pull request #13336 from markdroth/server_connection_timeout 8 роки тому
CODE-OF-CONDUCT.md c055a79262 Fix code of conduct 8 роки тому
CONTRIBUTING.md a9209ae39c Updated CLA link to reflect migration to Linux Foundation. 8 роки тому
Gemfile d7e1a10628 Bundled C core with Ruby library 10 роки тому
INSTALL.md cf6c2ed5c4 address comments 8 роки тому
LICENSE fbb61ed25d fix license file 8 роки тому
MANIFEST.md ac586ba21e Remove tox 9 роки тому
Makefile 6fa206de8f Merge pull request #13336 from markdroth/server_connection_timeout 8 роки тому
NOTICE.txt 312ea4a187 change LICENSE, add AUTHORS 8 роки тому
OWNERS aa49cbfd9d Add policy to comment 8 роки тому
PYTHON-MANIFEST.in 1f24b2ad8a Changes 8 роки тому
README.md 00867f2cbe Fix node source code link error 8 роки тому
Rakefile c7eaff15c0 Ignoring all ruby build errors for now 8 роки тому
WORKSPACE 0384127aa8 Copy key data 8 роки тому
binding.gyp 9714e0376a Add thread pool reset on fork with FORKING_SUPPORT_ENABLED 8 роки тому
build.yaml 6fa206de8f Merge pull request #13336 from markdroth/server_connection_timeout 8 роки тому
build_config.rb 58c33ba19b Decouple alarm construction from setting to avoid races in MT code 8 роки тому
composer.json bb3d95b643 Use https://grpc.io consistently as the canonical URL 8 роки тому
config.m4 195cf1ebfd Move histogram to test/core/util 8 роки тому
config.w32 195cf1ebfd Move histogram to test/core/util 8 роки тому
gRPC-Core.podspec 08aa228771 Merge pull request #13196 from muxi/upgrade-cocoapods-min-version 8 роки тому
gRPC-ProtoRPC.podspec 361f8108e4 Merge branch 'master' of https://github.com/grpc/grpc into upmerge-from-v1.7 8 роки тому
gRPC-RxLibrary.podspec 361f8108e4 Merge branch 'master' of https://github.com/grpc/grpc into upmerge-from-v1.7 8 роки тому
gRPC.podspec 361f8108e4 Merge branch 'master' of https://github.com/grpc/grpc into upmerge-from-v1.7 8 роки тому
grpc.bzl 4d5c3102a1 fix remaining license notices 8 роки тому
grpc.def 195cf1ebfd Move histogram to test/core/util 8 роки тому
grpc.gemspec 195cf1ebfd Move histogram to test/core/util 8 роки тому
grpc.gyp f0b952824b Merge pull request #13442 from adelez/foundry_integration 8 роки тому
package.json 9f5163eb85 Bump v1.7.x branch to 1.7.2 8 роки тому
package.xml 195cf1ebfd Move histogram to test/core/util 8 роки тому
requirements.txt 0df9c8acdc Update Python dependency to protobuf v3.5.0.post1 8 роки тому
setup.cfg 06dea573da Enable running Python formatting 9 роки тому
setup.py d4a3bb817d Allow compiling grpc without use of pthread_atfork 8 роки тому

README.md

Build Status

gRPC - An RPC library and framework

Copyright 2015 Google Inc.

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 Status
Shared C [core library] src/core 1.6
C++ src/cpp 1.6
Ruby src/ruby 1.6
Python src/python 1.6
PHP src/php 1.6
C# src/csharp 1.6
Objective-C src/objective-c 1.6

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.