原文地址:从实践到原理,带你参透 gRPC gRPC 在 Go 语言中大放异彩,越来越多的小伙伴在使用,最近也在公司安利了一波,希望能通过这篇文章能带你一览 gRPC 的爱与恨。本文篇幅较长,希望你做好阅读准备,目录如下: 简述 gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, ...
-
从实践到原理,带你参透 gRPC
-
gRPC+gRPC Gateway 能不能不用证书?
如果你以前有涉猎过 gRPC+gRPC Gateway 这两个组件,你肯定会遇到这个问题,就是 “为什么非得开 TLS,才能够实现同端口双流量,能不能不开?” 又或是 “我不想用证书就实现这些功能,行不行?”。我被无数的人问过无数次这些问题,也说服过很多人,但说服归说服,不代表放弃。前年不行,不代表今年不行,在今天我希望分享来龙去脉和具体的实现方式给你。 原文地址:gRPC+gRPC Gateway 能不能不用证书? 过去 为什么 h2 不行 因为 net/http2 仅支持 "h2" 标识,而...
-
Grpc+Grpc Gateway实践三 Swagger了解一下
Swagger了解一下 在上一节,我们完成了一个服务端同时支持Rpc和RESTful Api后,你以为自己大功告成了,结果突然发现要写Api文档和前端同事对接= = 。。。 你寻思有没有什么组件能够自动化生成Api文档来解决这个问题,就在这时你发现了Swagger,一起了解一下吧! 介绍 Swagger Swagger是全球最大的OpenAPI规范(OAS)API开发工具框架,支持从设计和文档到测试和部署的整个API生命周期的开发 Swagger是目前最受欢迎的RESTful Api文档生成工具...
-
Grpc+Grpc Gateway实践二 有些复杂的Hello World
Hello World 在上一节中我们已经完成了对环境的基本配置 这节将开始编写一个复杂的Hello World,涉及到许多的知识,建议大家认真思考其中的概念 需求 由于本实践偏向Grpc+Grpc Gateway的方面,我们的需求是同一个服务端支持Rpc和Restful Api,那么就意味着http2、TLS等等的应用,功能方面就是一个服务端能够接受来自grpc和Restful Api的请求并响应 一、初始化目录 我们先在$GOPATH中新建grpc-hello-world文件夹,我们项目的初...
-
带入gRPC:分布式链路追踪 gRPC-Opentracing-Zipkin
带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin 原文地址:带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin项目地址:https://github.com/EDDYCJY/go... 前言 在实际应用中,你做了那么多 Server 端,写了 N 个 RPC 方法。想看看方法的指标,却无处下手? 本文将通过 gRPC + Opentracing + Zipkin 搭建一个分布式链路追踪系统来实现查看整个系统的链路、性能等指标 ...
-
带入gRPC:gRPC Deadlines
带入gRPC:gRPC Deadlines 原文地址:带入gRPC:gRPC Deadlines项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节中,已经介绍了 gRPC 的基本用法。那你想想,让它这么裸跑真的没问题吗? 那么,肯定是有问题了。今天将介绍 gRPC Deadlines 的用法,这一个必备技巧。内容也比较简单 Deadlines Deadlines 意指截止时间,在 gRPC 中强调 TL;DR(Too long, Don't read)...
-
带入gRPC:对 RPC 方法做自定义认证
带入gRPC:对 RPC 方法做自定义认证 原文地址:带入gRPC:对 RPC 方法做自定义认证项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节中,我们介绍了两种(证书算一种)可全局认证的方法: TLS 证书认证 基于 CA 的 TLS 证书认证 Unary and Stream interceptor 而在实际需求中,常常会对某些模块的 RPC 方法做特殊认证或校验。今天将会讲解、实现这块的功能点 课前知识 type PerRPCCredentia...
-
带入gRPC:让你的服务同时提供 HTTP 接口
带入gRPC:让你的服务同时提供 HTTP 接口 原文地址:带入gRPC:让你的服务同时提供 HTTP 接口项目地址:https://github.com/EDDYCJY/go... 前言 接口需要提供给其他业务组访问,但是 RPC 协议不同无法内调,对方问能否走 HTTP 接口,怎么办? 微信(公众号、小程序)等第三方回调接口只支持 HTTP 接口,怎么办 我相信你在实际工作中都会遇到如上问题,在 gRPC 中都是有解决方案的,本章节将会进行介绍 ???? 为什么可以同时提供 HTTP 接口 ...
-
带入gRPC:Unary and Stream interceptor
带入gRPC:Unary and Stream interceptor 原文地址:带入gRPC:Unary and Stream interceptor项目地址:https://github.com/EDDYCJY/go... 前言 我想在每个 RPC 方法的前或后做某些事情,怎么做? 本章节将要介绍的拦截器(interceptor),就能帮你在合适的地方实现这些功能 ???? 有几种方法 在 gRPC 中,大类可分为两种 RPC 方法,与拦截器的对应关系是: 普通方法:一元拦截器(grpc.U...
-
带入gRPC:基于 CA 的 TLS 证书认证
带入gRPC:基于 CA 的 TLS 证书认证 原文地址:带入gRPC:基于 CA 的 TLS 证书认证项目地址:https://github.com/EDDYCJY/go... 前言 在上一章节中,我们提出了一个问题。就是如何保证证书的可靠性和有效性?你如何确定你 Server、Client 的证书是对的呢? CA 为了保证证书的可靠性和有效性,在这里可引入 CA 颁发的根证书的概念。其遵守 X.509 标准 根证书 根证书(root certificate)是属于根证书颁发机构(CA)的公钥...
-
带入gRPC:TLS 证书认证
带入gRPC:TLS 证书认证 原文地址:带入gRPC:TLS 证书认证项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节里,我们介绍了 gRPC 的四种 API 使用方式。是不是很简单呢 ???? 此时存在一个安全问题,先前的例子中 gRPC Client/Server 都是明文传输的,会不会有被窃听的风险呢? 从结论上来讲,是有的。在明文通讯的情况下,你的请求就是裸奔的,有可能被第三方恶意篡改或者伪造为“非法”的数据 抓个包 嗯,明文传输无误。这是...
-
Grpc+Grpc Gateway实践一 介绍与环境安装
介绍与环境安装 假定我们有一个项目需求,希望用Rpc作为内部API的通讯,同时也想对外提供Restful Api,写两套又太繁琐不符合 于是我们想到了Grpc以及Grpc Gateway,这就是我们所需要的 准备环节 在正式开始我们的Grpc+Grpc Gateway实践前,我们需要先配置好我们的开发环境 Grpc Protoc Plugin Protocol Buffers Grpc-gateway Grpc 是什么 Google对Grpc的定义: A high performance, op...
-
带入gRPC:gRPC Streaming, Client and Server
带入gRPC:gRPC Streaming, Client and Server 原文地址:带入gRPC:gRPC Streaming, Client and Server 前言 本章节将介绍 gRPC 的流式,分为三种类型: Server-side streaming RPC:服务器端流式 RPC Client-side streaming RPC:客户端流式 RPC Bidirectional streaming RPC:双向流式 RPC 流 任何技术,因为有痛点,所以才有了存在的必要性。如...
-
带入gRPC:gRPC Client and Server
带入gRPC:gRPC Client and Server 原文地址:带入gRPC:gRPC Client and Server 前言 本章节将使用 Go 来编写 gRPC Server 和 Client,让其互相通讯。在此之上会使用到如下库: google.golang.org/grpc github.com/golang/protobuf/protoc-gen-go 安装 gRPC go get -u google.golang.org/grpc Protocol Buffers v3 wg...
-
带入gRPC:gRPC及相关介绍
带入gRPC:gRPC及相关介绍 原文地址:带入gRPC:gRPC及相关介绍 作为开篇章,将会介绍 gRPC 相关的一些知识。简单来讲 gRPC 是一个 基于 HTTP/2 协议设计的 RPC 框架,它采用了 Protobuf 作为 IDL 你是否有过疑惑,它们都是些什么?本文将会介绍一些常用的知识和概念,更详细的会给出手册地址去深入 一、RPC 什么是 RPC RPC 代指远程过程调用(Remote Procedure Call),它的调用包含了传输协议和编码(对象序列号)协议等等。允许运行于...