GoMock框架使用指南

序言 要写出好的测试代码,必须精通相关的测试框架。对于Golang的程序员来说,至少需要掌握下面三个测试框架: GoConvey GoStub GoMock 读者通过前面三篇文章的学习可以对框架GoConvey和GoStub优雅的组合使用了,本文将接着介绍第三个框架GoMock的使用方法,目的是使得读者掌握框架GoConvey + GoStub + GoMock组合使用的正确姿势,从而提高测试代码的质量。 GoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface...阅读全文

2017.06.24 23:40 _张晓龙_
阅读:17671 评论:2

grpc快速使用

使用grpc和protobuf实现rpc通信的例子 ## 创建工程 ``` mkdir grpc_test cd grpc_test go mod init //使用github的grpc替换gp的grpc go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest go mod edit -replace=golang.org/x/net=github.com/gola...阅读全文

2019-11-05 12:24:55 bytemode
阅读:1591 评论:0

etcd实现服务发现和注册

## 原理 etcd实现服务发现和注册,使用的是kv存储、租约、watch. 向etcd 注册 该服务(其实就是 存一个值)然后向etcd 发送心跳,当etcd 没有检测到心跳就会 把这个键值对 删了(这整个动作是etcd里的租约模式),网关那边 就只需要 watch 这个 key ,就能够知道 所有服务的所有动态了. 注册的时候可以使用前缀这样在watch的时候可以watch所有的服务器. ## 服务注册 1. 租约模式,客户端申请一个租约设置过期时间,keepali...阅读全文

2019-11-05 12:39:04 bytemode
阅读:1641 评论:0

etcd快速入门

## 安装 下载地址:https://github.com/etcd-io/etcd/releases 下载完成解压后,目录中有两个二进制文件, etcd以及 etcdctl。其中 etcd就是运行etcd服务的二进制文件, etcdctl是官方提供的命令行etcd客户端,使用 etcdctl可以在命令行中访问etcd服务。 查看etcd版本 `./etcd --version` ## 运行 ### 单点启动 查看启动帮助 `./etcd -h` ...阅读全文

2019-11-05 13:17:37 bytemode
阅读:1434 评论:0

etcd租约及监听key

etcd中kv存储已经租约和监听的基本使.都说源码之下了无秘密,就不打字了. ``` package main import ( "context" "log" "time" "go.etcd.io/etcd/clientv3" ) func main() { var conf = clientv3.Config{ Endpoints: []string{"127.0.0.1:2380"}, DialTimeout: 5 * time.S...阅读全文

2019-11-05 13:21:23 bytemode
阅读:1826 评论:0

etcd API使用

## 连接客户端 访问etcd首先要创建client,它需要传入一个Config配置. `Endpoints`:etcd的多个节点服务地址。 `DialTimeout`:创建client的首次连接超时时间,这里传了5秒,如果5秒都没有连接成功就会返回err;一旦client创建成功,不用再关心后续底层连接的状态了,client内部会重连。 ``` cli,err := clientv3.New(clientv3.Config{ Endpoints:[]...阅读全文

2019-11-06 14:42:02 bytemode
阅读:2695 评论:0

GO语言web框架Gin之完全指南(一)

作为一款企业级生产力的web框架,gin的优势是显而易见的,高性能,轻量级,易用的api,以及众多的使用者,都为这个框架注入了可靠的因素。截止目前为止,github上面已经有了 35,994 star. 一个开源框架,关注数越多,就会越可靠,因为大家会在使用当中不断地对它进行改进。 下面放几个链接方便进行查看: Gin的官方网站 Gin的Github主页 Gin的一些example Gin一些开源中间件 几个流行的go框架进行比较 go几大web框架比较 这个主页对几大web框架进行了一些比较,...阅读全文

2020-03-23 12:32:33 Paul
阅读:1513 评论:0

Golang中的Defer必掌握的7知识点

在用Golang开发的时候,defer这个语法也是必备的知识,但是我们除了知道他是在一个函数退出之前执行,对于defer是否还有其他地方需要注意的呢。 本文整理的defer的全场景使用情况,部分场景源自网络,加上自己的额外观点和分析,完成了这份defer的7个隐性必备知识点。 提纲如下: 知识点1: defer的执行顺序 知识点2:defer与return谁先谁后 知识点3:函数的返回值初始化与defer间接影响 知识点4:有名函数返回值遇见defer情况 知识点5:defer遇见panic 知...阅读全文

阅读:2626 评论:2

GO语言web框架Gin之完全指南(二)

这篇主要讲解自定义日志与数据验证 参数验证 我们知道,一个请求完全依赖前端的参数验证是不够的,需要前后端一起配合,才能万无一失,下面介绍一下,在Gin框架里面,怎么做接口参数验证的呢 gin 目前是使用 go-playground/validator 这个框架,截止目前,默认是使用 v10 版本;具体用法可以看看 validator package · go.dev 文档说明哦 下面以一个单元测试,简单说明下如何在tag里验证前端传递过来的数据 简单的例子 func TestValidation...阅读全文

2020-03-28 08:32:33 Paul
阅读:587 评论:0

Go语言之GRPC

1.RPC的基本知识介绍:RPC叫做远程调用框架(Remote Procedure Call),远程调用原理如下所示:比如 A (client) 调用 B (server) 提供的remoteAdd方法: 首先,A与B之间建立一个TCP连接; 然后,A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去; 接着,B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回; 最...阅读全文

2020-04-16 09:12:14 ZhDavis
阅读:1666 评论:0

使用 timeout、deadline 和 context 取消参数使 Go net/http 服务更灵活

关于超时,可以把开发者分为两类:一类是了解超时多么难以捉摸的人,另一类是正在感受超时如何难以捉摸的人。 超时既难以捉摸,却又真实地存在于我们生活的由网络连接的世界中。在我写这篇文章的同时,隔壁两个同事正在用他们的智能手机打字,也许是在跟与他们相距万里的人聊天。网络使这一切变为可能。 这里要说的是网络及其复杂性,作为写网络服务的我们,必须掌握如何高效地驾驭它们,并规避它们的缺陷。 闲话少说,来看看超时和它们是如何影响我们的 `net/http` 服务的。 ## 服务超时 —...阅读全文

2020-05-05 13:28:17 lxbwolf
阅读:2612 评论:0

ubuntu+docker搭建etcd集群

本文基于compose管理镜像,对此不熟悉的,可以先了解下如何使用。 ####安装compose 下载compose,使用下面的指令下载compose ``` sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` 将可执行权限应用于二进制文件...阅读全文

2020-05-22 16:40:28 kukayou
阅读:1282 评论:0

go-micro+gin+etcd微服务实战之服务注册与发现

在构建微服务时,使用服务发现可以减少配置的复杂性,本文以go-micro为微服务框架,使用etcd作为服务发现服务,使用gin开发golang服务。 使用gin 的原因是gin能够很好的和go-micro进行集成。 本文主要介绍服务注册和发现的实现 关于如何搭建etcd服务可以移步:https://www.jianshu.com/p/ec0e4911236d 本文默认以搭建好了etcd服务,服务的地址是:192.168.109.131:12379 如果你搭建好了自己的e...阅读全文

2020-05-22 16:41:28 kukayou
阅读:3190 评论:0

docker+etcd+go-micro api网关的搭建及使用

在我们使用go-micro框架时,会用到其api网关功能。 本文以etcd作为服务注册和发现工具,实现通过api网关和etcd实现服务间的调用 本文以下内容为基础,未看过的请移步: 【ubuntu+docker搭建etcd集群】:https://www.jianshu.com/p/ec0e4911236d 【go-micro+gin+etcd微服务实战之服务注册与发现】:https://www.jianshu.com/p/1e14a5b0a9db 现默认已经将etcd集群启动,且已...阅读全文

2020-05-22 16:42:00 kukayou
阅读:1689 评论:0

go-micro的etcd服务注册管理界面使用方法

我们在使用consul时,consul提供了管理界面,可很直观的看到我们注册到consul的服务及健康状况。 etcd并未提供此功能,但是我们可以使用go-micro提供的一个简易界面查看我们注册到etcd中的服务 本文是基于【docker+etcd+go-micro api网关的搭建及使用】:https://www.jianshu.com/p/13d1df6e6731,这篇文章的环境基础来实现的,没有搭建docker+etcd+go-micro api网关的,可以按照上面的链接搭建一遍。 ...阅读全文

2020-05-22 16:43:23 kukayou
阅读:2824 评论:0