随笔分类 - GoGoGo
摘要:下载 $ go get github.com/fsnotify/fsnotify 使用fsnotify监控文件 package main; import ( "github.com/fsnotify/fsnotify" "fmt" "path/filepath" "os" ) type Watch
阅读全文
摘要:Cobra介绍 一个用于生成命令行工具的框架(本身也是个命令行工具) 非常简单,易用 k8s/docker/hugo/etcd等... 下载安装 https://github.com/spf13/cobra $ go get -u github.com/spf13/cobra // github.c
阅读全文
摘要:使用简单 hystrix的使用是非常简单的,同步执行,直接调用Do方法。 err := hystrix.Do("my_command", func() error { // talk to other services return nil }, func(err error) error { //
阅读全文
摘要:option参数的各种用法 Error对象的处理 主要在 main.go中 httpTransport.NewServer() 函数中的 ServerOption 选传参数 我们可以看到 // ServerOption设置服务器的可选参数。 type ServerOption func(*Serve
阅读全文
摘要:首先,让我们来回顾一下我们的项目架构 // 项目结构 -| Server | server.go -| EndPoint | endpoint.go -| Transport | Transport.go - main.go 使用外部路由组件扩充服务 我们这里使用 https://github.co
阅读全文
摘要:我们客户端的架构与服务的类似 根据我们Demo的示例,我们创建一个客户端,客户端与服务端架构类似 // 项目结构 -| Client | Client.go -| EndPoint | endpoint.go -| Transport | Transport.go - main.go 1.首先我们还
阅读全文
摘要:手把手带你使用 go-kit go-kit 是什么 Go kit 是一个微服务工具包集合。利用它提供的额API和规范可以创建健壮、可维护性高的微服务体系 Go-kit的三层架构 1、Service 这里就是我们的业务类、接口等相关信息存放 2、EndPoint 定义Request、Response格
阅读全文
摘要:首先我们看下标准库文档中定义以及解释 func StripPrefix(prefix string, h Handler) Handler StripPrefix返回一个处理器,该处理器会将请求的URL.Path字段中给定前缀prefix去除后再交由h处理。StripPrefix会向URL.Path
阅读全文
摘要:转自 为什么需要Docker? 使用docker的主要目标是容器化。也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机。 想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很多的依赖环境或包,甚至对依赖的具体版本都有严格的要求,当开发过程完成后,你希望将应用程序部署到
阅读全文
摘要:转自 部署Go语言项目 本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。 独立部署 Go 语言支持跨平台交叉编译,也就是说我们可以在 Windows 或 Mac 平台下编写代码,并且将代码编译成能够在 Linux amd64 服务器上运行的程序。
阅读全文
摘要:转自 HTTP服务压力测试工具 在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好的匹配项目的实际需求,节约资源成本。 压测相关术语 响应时间(RT) :指系统对请求作出响应的时间. 吞吐量(Throughpu
阅读全文
摘要:转自 限流 限流又称为流量控制(流控),通常是指限制到达系统的并发请求数。 我们生活中也会经常遇到限流的场景,比如:某景区限制每日进入景区的游客数量为8万人;沙河地铁站早高峰通过站外排队逐一放行的方式限制同一时间进入车站的旅客数量等。 限流虽然会影响部分用户的使用体验,但是却能在一定程度上报障系统的
阅读全文
摘要:转自 HTTP服务压力测试工具 在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好的匹配项目的实际需求,节约资源成本。 压测相关术语 响应时间(RT) :指系统对请求作出响应的时间. 吞吐量(Throughpu
阅读全文
摘要:转自 swagger生成接口文档 swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源软件工具一起使用,以设计、构建、记录和使用RESTful Web服务。Swagger包括自动文档,代码生成和测试用例生成。 在前后端
阅读全文
摘要:转自 你需要知道的那些go语言json技巧 基本的序列化 首先我们来看一下Go语言中json.Marshal()(系列化)与json.Unmarshal(反序列化)的基本用法。 type Person struct { Name string Age int64 Weight float64 } f
阅读全文
摘要:【Go】获取用户真实的ip地址 go get github.com/thinkeridea/go-extend/exnet 用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip 非常困难,大多数的框架及工具库都会封装各种获取用户真实 ip 的方法,在 exnet 包中也封装了各
阅读全文
摘要:使用Air实现gin框架实时重新加载 为什么需要实时加载? 之前使用Python编写Web项目的时候,常见的Flask或Django框架都是支持实时加载的,你修改了项目代码之后,程序能够自动重新加载并执行(live-reload),这在日常的开发阶段是十分方便的。 在使用Go语言的gin框架在本地做
阅读全文
摘要:为Go项目编写Makefile 借助Makefile我们在编译过程中不再需要每次手动输入编译的命令和编译的参数,可以极大简化项目编译过程。 make介绍 make是一个构建自动化工具,会在当前目录下寻找Makefile或makefile文件。如果存在相应的文件,它就会依据其中定义好的规则完成构建任务
阅读全文
摘要:转自 validator库参数校验若干实用技巧 在web开发中一个不可避免的环节就是对请求参数进行校验,通常我们会在代码中定义与请求参数相对应的模型(结构体),借助模型绑定快捷地解析请求中的参数,例如 gin 框架中的Bind和ShouldBind系列方法。本文就以 gin 框架的请求参数校验为例,
阅读全文
摘要:文章转自 优雅地关机或重启 我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢? 阅读本文需要了解一些UNIX系统中信号的概念,请提前查阅资料
阅读全文