本文将介绍gRPC和protocol buffers。gRPC可以利用protocol buffers作为其接口定义语言(Interface Definition Language,IDL)和信息交换格式。

预览

在gRPC中,一个客户端应用可以直接调用不同机器上的服务端应用的方法,就好像调用本地方法一样,这使得创建分布式应用和服务变得很容易。和许多RPC系统一样,gRPC基本思想是定义服务,指定可以被远程调用的方法及其入参和返回类型。在服务端一侧,服务端实现这个接口并运行一个gRPC服务来处理客户端调用。在客户端一侧,客户端有一个stub(在有些语言中叫做client),提供和服务端相同的方法。

gRPC客户端和服务端可以用不同的语言,如客户端用java,服务端用python。支持的语言有java、python、c、c++、c#、go等。

默认情况下,gRPC用protocol buffers。protocol buffers是google开源的一套数据序列化方案,目前已经很成熟。当然,gRPC也可以用json。当用protocol buffers时,首先要在proto文件中定义要序列化的数据的结构。示例:

message Person {
string name = 1;
int32 id = 2;
bool has_ponycopter = 3;
}

注意,数据类型都是小写的。

之后,用protocol buffer编译器protoc来生成数据访问类,里面有各属性的getter/setter方法以及序列化/反序列化方法。

在proto文件中还要定义service,入参和返回类型都是protocol buffer message。示例:

message HelloRequest {
string name = 1;
} message HelloReply {
string message = 1;
} service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply)
}

注意,方法名是大写的。

grpc:What is gRPC的更多相关文章

  1. gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架

    gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架 gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架 Google Guava官方教程(中文版 ...

  2. PICE(6):集群环境里多异类端点gRPC Streaming - Heterogeneous multi-endpoints gRPC streaming

    gRPC Streaming的操作对象由服务端和客户端组成.在一个包含了多个不同服务的集群环境中可能需要从一个服务里调用另一个服务端提供的服务.这时调用服务端又成为了提供服务端的客户端了(服务消费端) ...

  3. 带入gRPC:gRPC Streaming, Client and Server

    带入gRPC:gRPC Streaming, Client and Server 原文地址:带入gRPC:gRPC Streaming, Client and Server 前言 本章节将介绍 gRP ...

  4. gRPC官方文档(gRPC基础:C++)

    文章来自gRPC 官方文档中文版 本教程提供了C++程序员如何使用gRPC的指南. 通过学习教程中例子,你可以学会如何: 在一个 .proto 文件内定义服务. 用 protocol buffer 编 ...

  5. 带入gRPC:对 RPC 方法做自定义认证

    带入gRPC:对 RPC 方法做自定义认证 原文地址:带入gRPC:对 RPC 方法做自定义认证项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节中,我们介 ...

  6. 带入gRPC:gRPC Deadlines

    带入gRPC:gRPC Deadlines 原文地址:带入gRPC:gRPC Deadlines项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节中,已经介 ...

  7. grpc:超时机制

    工作中遇到一个问题,上游服务通过grpc调用下游服务,但是由于下游服务负载太高导致上游服务的调用会随机出现超时的情况,但是有一点不太明确:超时之后,下游服务还会继续进行计算么? 于是自己写了一个dam ...

  8. 思考gRPC :为什么是HTTP/2

    Introducing gRPC Support with NGINX 1.13.10 - NGINX https://www.nginx.com/blog/nginx-1-13-10-grpc/ 思 ...

  9. go语言gRPC系列(二) - 为gRPC添加证书

    1. 前言 2. 生成自签证书 2.1 MAC生成自签证书的教程链接: 2.2 Windows生成自签证书的教程 3. 改造服务端使用自签证书 3.1 复制证书至代码下 3.2 改造代码添加证书认证 ...

随机推荐

  1. 【CUDA】CUDA框架介绍

    引用 出自Bookc的博客,链接在此http://bookc.github.io/2014/05/08/my-summery-the-book-cuda-by-example-an-introduct ...

  2. docker安装jenkins自动化部署

    Docker之Jenkins自动化部署 1.拉取jenkins镜像images(类比:java中的类) docker pull jenkinsci/jenkins:lts 或 docker pull ...

  3. 几个关于json序列化 的注解

    一.@JsonProperty 1.此注解用于属性上,作用是把该属性的名称序列化为另外一个名称.例如: @JsonProperty("name") private String N ...

  4. Linux下面误删除文件使用extundelete工具恢复介绍

    操作系统版本:CentOS release 6.4 (Final)      软件版本:extundelete-0.2.4.tar.bz2 PS:该软件恢复文件系统仅支持ext2/ext3/ext4 ...

  5. Linux中/etc下面passwd和shadow文件介绍

    1./etc/passwd root@root:~# cat /etc/passwd root:x:::root:/root:/bin/bash daemon:x:::daemon:/usr/sbin ...

  6. 洛谷 P5239 回忆京都 题解

    题面 裸的杨辉三角前缀和,但----- 在求前缀和的时候有可能得到一个负数(由于取模的原因),所以一定要加上模数后再取模!!!! #include <bits/stdc++.h> #def ...

  7. django1.9安装以及使用

    安装setuptoolswget --no-check-certificate https://pypi.python.org/packages/69/56/f0f52281b5175e3d9ca86 ...

  8. 2.学习Application

    2学习Application Application对象事件 名称 说明 Activated 当应用程序成为前台应用程序时触发 Deactivated 当应用程序不再是前台应用程序时触发 Dispat ...

  9. 未能将文件 bin\zh-CHS\Webdiyer.MvcPager.resources.dll 复制到 obj\Release\Package\PackageTmp\bin\zh-CHS\Webdiyer.MvcPager.resources.dll。 未能找到文件“bin\zh-CHS\Webdiyer.MvcPager.resources.dll”

    在bin下面会生成更dll相同名称的xml文件,可能是因为我之前把项目中的很多部分设置了从项目中排除,关于dll也提示复制的问题解决办法是直接把那些生成的xml文件删除.在发布时还会提示obj文件夹下 ...

  10. jstl用法 简介

    <c:choose> <c:when test="${salary <= 0}"> 太惨了. </c:when> <c:when t ...