05 2022 档案
摘要:Go RabbitMQ [01] RabbitMQ介绍 [02] RabbitMQ安装 [03] RabbitMQ-HelloWorld [04] RabbitMQ-工作队列 [05] RabbitMQ-发布订阅 [06] RabbitMQ-路由 [07] RabbitMQ-topic [08] R
阅读全文
摘要:参考 https://www.rabbitmq.com/ https://www.liwenzhou.com/posts/Go/go_rabbitmq_tutorials_01/ https://zhuanlan.zhihu.com/p/375157411
阅读全文
摘要:python-RabbitMQ从入门到集群架构 一 消息队列介绍 1.1 什么是消息队列 MQ(Message Quene) : 消息队列,是典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。 因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务
阅读全文
摘要:RabbitMQ —topic 一、topic交换器(主题交换器) 发送到topic交换器的消息不能具有随意的routing_key——它必须是单词列表,以点分隔。这些词可以是任何东西,但通常它们指定与消息相关的某些功能。一些有效的routing_key示例:“stock.usd.nyse”,“ny
阅读全文
摘要:RabbitMQ Go—RPC 一、远程过程调用(RPC) 我们学习了如何使用工作队列在多个worker之间分配耗时的任务。 但是,如果我们需要在远程计算机上运行函数并等待结果怎么办?好吧,那是一个不同的故事。这种模式通常称为远程过程调用或RPC。 在本教程中,我们将使用RabbitMQ构建一个RP
阅读全文
摘要:RabbitMQ——路由 一、路由 (使用Go RabbitMQ客户端) 我们构建了一个简单的日志记录系统。我们能够向许多接收者广播日志消息。 我们将向它添加一个特性-我们将使它能够只订阅消息的一个子集。例如,我们将只能将关键错误消息定向到日志文件(以节省磁盘空间),同时仍然能够在控制台上打印所有日
阅读全文
摘要:RabbitMQ——发布/订阅 一、发布/订阅 创建了一个工作队列。工作队列背后的假设是每个任务只传递给一个工人。在这一部分中,我们将做一些完全不同的事情——我们将向多个消费者传递一个消息。这就是所谓的“订阅/发布模式”。 为了说明这种模式,我们将构建一个简单的日志系统。它将由两个程序组成——第一个
阅读全文
摘要:RabbitMQ——工作队列 一、任务队列/工作队列 (使用Go RabbitMQ客户端) 我们编写程序从命名的队列发送和接收消息。在这一节中,我们将创建一个工作队列,该队列将用于在多个工人之间分配耗时的任务。 工作队列(又称任务队列)的主要思想是避免立即执行某些资源密集型任务并且不得不等待这些任务
阅读全文
摘要:RabbitMQ—HelloWorld 一、介绍 RabbitMQ是一个消息代理:它接受并转发消息。你可以把它想象成一个邮局:当你把你想要邮寄的邮件放进一个邮箱时,你可以确定邮差先生或女士最终会把邮件送到你的收件人那里。在这个比喻中,RabbitMQ是一个邮箱、一个邮局和一个邮递员。 RabbitM
阅读全文
摘要:Rabbitmq安装 一、Rabbitmq介绍 基于AMQP协议,erlang语言开发,是部署最广泛的开源消息中间件,是最受欢迎的开源消息中间件之一。 AMQP 协议advanced message queuing protocol 在2003年时被提出,最早用于解决金融领不同平台之间的消息传递交互
阅读全文
摘要:消息队列介绍 一、什么是消息队列 MQ(Message Quene) : 消息队列,是典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。 因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。 消息队列也可称作:消
阅读全文
摘要:参考 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认
阅读全文
摘要:Go语言基础之反射 本文介绍Go语言反射的意义和基本使用。 一、变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 二、反射介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编
阅读全文
摘要:Go单测—编写可测试的代码 在这一篇中我们不再介绍编写单元测试的工具而是专注于如何编写可测试的代码。源码地址 一、编写可测试的代码 编写可测试的代码可能比编写单元测试本身更加重要,可测试的代码简单来说就是指我们可以很容易的为其编写单元测试代码。编写单元测试的过程也是一个不断思考的过程,思考我们的代码
阅读全文
摘要:Go单测—goconvey的使用 介绍如何使用goconvey更好地编写单元测试,让单元测试结果更直观、形象。在这一篇中我们将介绍一个人性化的单元测试利器——goconvey。源码地址 一、GoConvey介绍 GoConvey是一个非常非常好用的Go测试框架,它直接与go test集成,提供了很多
阅读全文
摘要:Go单测—使用monkey打桩 介绍如何在单元测试中使用monkey进行打桩。将介绍一个更强大的打桩工具——monkey,它支持为任意函数及方法进行打桩。源码地址 一、monkey介绍 monkey是一个Go单元测试中十分常用的打桩工具,它在运行时通过汇编语言重写可执行文件,将目标函数或方法的实现跳
阅读全文
摘要:Go单测-mock接口测试 介绍如何在单元测试中使用gomock和gostub工具mock接口和打桩。在开发中也会经常用到各种各样的接口类型。本文就举例来演示如何在编写单元测试的时候对接口类型进行mock以及如何进行打桩。 有一本书叫《Writing An Interpreter In Go》, 作
阅读全文
摘要:Go单测—MySQL和Redis测试 介绍如何使用go-sqlmock和miniredis工具进行MySQL和Redis的mock测试。 一、go-sqlmock sqlmock 是一个实现 sql/driver 的mock库。它不需要建立真正的数据库连接就可以在测试中模拟任何 sql 驱动程序的行
阅读全文
摘要:网络测试 如何使用httptest和gock工具进行网络测试。 而实际工作中的业务场景往往会比较复杂,无论我们的代码是作为server端对外提供服务或者还是我们依赖别人提供的网络服务(调用别人提供的API接口)的场景,我们通常都不想在测试过程中真正的建立网络连接。本文就专门介绍如何在上述两种场景下m
阅读全文
摘要:Go语言基础之单元测试 不写测试的开发不是好程序员。崇尚TDD(Test Driven Development)的, 在Go语言中如何做单元测试和基准测试。源码地址 一、go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规
阅读全文

浙公网安备 33010602011771号