摘要:
参考 https://golang2.eddycjy.com/posts/ch3/08-grpc-interceptor/ https://www.lixueduan.com/post/grpc/05-Interceptor/#1-%E6%A6%82%E8%BF%B0 https://segment 阅读全文
摘要:
Metadata 和 RPC 自定义认证 一、Metadata 介绍 在 HTTP/1.1 中,我们常常通过直接操纵 Header 来传递数据,而对于 gRPC 来讲,它基于 HTTP/2 协议,本质上也可是通过 Header 来进行传递,但我们不会直接的去操纵它,而是通过 gRPC 中的 meta 阅读全文
摘要:
拦截器Interceptor 一、概述 想在每个 RPC 方法的前或后做某些事情,怎么做? gRPC 提供了 Interceptor 功能,包括客户端拦截器和服务端拦截器。可以在接收到请求或者发起请求之前优先对请求中的数据做一些处理后再转交给指定的服务处理并响应,很适合在这里处理验证、日志等流程。 阅读全文
摘要:
gRPC转换HTTP 一、前言 我们通常把RPC用作内部通信,而使用Restful Api进行外部通信。为了避免写两套应用,我们使用grpc-gateway把gRPC转成HTTP。服务接收到HTTP请求后,grpc-gateway把它转成gRPC进行处理,然后以JSON形式返回数据。本篇代码以上篇为 阅读全文
摘要:
proto数据验证 一、前言 上篇介绍了go-grpc-middleware的grpc_zap、grpc_auth和grpc_recovery使用,本篇将介绍grpc_validator,它可以对gRPC数据的输入和输出进行验证。https://github.com/envoyproxy/proto 阅读全文
摘要:
grpc-自定义token认证 一、前言 前面篇章的gRPC都是明文传输的,容易被篡改数据。本章将介绍如何为gRPC添加安全机制,Token认证。 官方grpc-eg 源码 二、新建proto文件 主要是定义我们服务的方法以及数据格式,创建simple.proto文件。 1.定义发送消息的信息 me 阅读全文
摘要:
grpc-middleware使用 一、前言 上篇介绍了gRPC中TLS认证和自定义方法认证,最后还简单介绍了gRPC拦截器的使用。gRPC自身只能设置一个拦截器,所有逻辑都写一起会比较乱。本篇简单介绍go-grpc-middleware的使用,包括grpc_zap、grpc_auth和grpc_r 阅读全文
摘要:
Go gRPC-超时设置 一、前言 gRPC默认的请求的超时时间是很长的,当你没有设置请求超时时间时,所有在运行的请求都占用大量资源且可能运行很长的时间,导致服务资源损耗过高,使得后来的请求响应过慢,甚至会引起整个进程崩溃。 为了避免这种情况,我们的服务应该设置超时时间。前面的提到,当客户端发起请求 阅读全文
摘要:
grpc-tts证书认证 一、前言 前面篇章的gRPC都是明文传输的,容易被篡改数据。本章将介绍如何为gRPC添加安全机制,包括TLS证书认证和Token认证。 二、TLS证书认证 什么是TLS TLS(Transport Layer Security,安全传输层),TLS是建立在传输层TCP协议之 阅读全文
摘要:
Go gRPC教程-双向流式RPC 一、前言 上一篇介绍了客户端流式RPC,客户端不断的向服务端发送数据流,在发送结束或流关闭后,由服务端返回一个响应。本篇将介绍双向流式RPC。 双向流式RPC:客户端和服务端双方使用读写流去发送一个消息序列,两个流独立操作,双方可以同时发送和同时接收。 情景模拟: 阅读全文
摘要:
Go gRPC教程-客户端流式gRPC 一、前言 上一篇介绍了服务端流式RPC,客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流的数据。本篇将介绍客户端流式RPC。 客户端流式RPC:与服务端流式RPC相反,客户端不断的向服务端发送数据流,而在发送结束后,由服务端返回一个 阅读全文
摘要:
服务端流式RPC 一、前言 当数据量大或者需要不断传输数据时候,我们应该使用流式RPC,它允许我们边处理边传输数据。本篇先介绍服务端流式RPC。 服务端流式RPC:客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流,直到里面没有任何消息。 情景模拟:实时获取股票走势。 1. 阅读全文
摘要:
grpc简单应用 一、gRPC主要有4种模式 gRPC主要有4种请求和响应模式,分别是简单模式(Simple RPC)、服务端流式(Server-side streaming RPC)、客户端流式(Client-side streaming RPC)、和双向流式(Bidirectional stre 阅读全文
摘要:
protobuf简单使用 本教程提供了一个基本的 Go 程序员介绍使用协议缓冲区,使用协议缓冲区语言的proto3版本。通过创建一个简单的示例应用程序,它向您展示了如何 在文件中定义消息格式.proto。 使用协议缓冲区编译器。 使用 Go 协议缓冲区 API 来写入和读取消息。 这不是在 Go 中 阅读全文
摘要:
protobuf语法 官网 定义一个消息类型 先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类型的.proto文件了: syntax = "proto3"; mess 阅读全文
摘要:
protobuf安装 一、protobuf的简介 Protocol buffers是用于序列化结构化数据的灵活、高效、自动化的机制——比如XML,但是更小、更快、更简单。您只需定义一下希望如何对数据进行结构化,然后就可以使用特殊生成的源代码来轻松地编写和读取到各种数据流中的结构化数据,并使用各种 阅读全文
摘要:
gRPC [01] protoco安装 [02] protobuf语法 [03] protobuf简单使用 [04] 简单的grpc [05] 服务端流式grpc [06] 客户端流式grpc [07] 双向流式grpc [08] 超时设置grpc [09] TLS认证 [10] 自定义Token认 阅读全文