2021
06-19
06-19
Go实现各类限流的方法
前言在开发高并发系统时,我们可能会遇到接口访问频次过高,为了保证系统的高可用和稳定性,这时候就需要做流量限制,你可能是用的 Nginx 这种来控制请求,也可能是用了一些流行的类库实现。限流是高并发系统的一大杀器,在设计限流算法之前我们先来了解一下它们是什么。限流限流的目的是通过对并发访问请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降...
继续阅读 >
在使用gomod的过程中,发现不容易指定版本号尤其是没有打tag的,不知道怎么指定版本号,不知道有哪版本号正常使用都没有问题,但是当引用的项目用了旧的代码,这时候必须使用旧的版本,无法指定版本,不知道如何入手尤其是k8s.io不知道是什么鬼,从哪里看它的代码,只知道github.com这个时候在go.mod文件中require里面加上github.com/kubernetes/cloud-provider2bf8e45此时会自动生成版本号,其中2bf8e45这个是在github上找到源...
背景公司一个golang的项目,使用到了公司的私有仓库,去执行gomodtidy(下载依赖)的时候,到download公司私有库的时候就报错,报错信息也不明显,只是提示找不到影响版本unkownrevision小知识gomodgolang用来管理用来的,类似java的maven(但肯定没有maven这么好用)gomodtidy,下载更新依赖goinstall这种下载依赖的方式其实是通过goget的方式去下载的goinsall-x加上-x命令,可以查看更多的错误信息golang环境配置lin...
创建项目Location:新项目文件夹GOROOT:go安装根目录Proxy:https://goproxy.io,direct重要:https://goproxy.io是下载go包的代理地址,设置后可在国内正常下载go仓库/github的包。创建一个go文件创建了一个test.go下载安装需要的包这里演示安装mysqldriver包:github.com/go-sql-driver/mysql直接import显示找不到包,使用左下方命令行工具,安装mysqldriver使用goget命令安装包使用gogetgithub.com/go-sql-driver/mysql...
package包导入记录首先需要知道2个值$GOROOT$GOPATH第二个值可以设置多个,2个值之间使用冒号:做连接。系统找包的时候,会去对应路径下的src中去寻找。比如,我在path目录的src目录下新建文件夹HelloWorld,其中有一个文件printHelloWorld.go。其对应的代码为:packageHelloWorldimport"fmt"funcPrintHelloWorld(){fmt.Print("HelloWorld\r\n")printILoveYou()}//注意,小写的printILoveYou是没法在外部调用的,只能在内...
用gomod的时候应该会遇到无法拉取私有仓库的问题从你gitlab平台生成一个token,在~/.gitcoinfig中[http]下增加extraheader=PRIVATE-TOKEN:你的token[url]下增加insteadOf=https://gitlab.你的gitlab服务器.com如果还不生效则增加环境变量后尝试:exportGOPRIVATE=gitlab.你的gitlab服务器.cn补充:gomodule引用码云(或其他私有仓库)的配置go1.13开始引入了gomod包管理。go1.16开始默认开启gomod,以下总结在使用gom...
解决golanggogetgitlab私有仓库的问题(1.13)1.问题描述require(git.xxxxxxx.com/middle/userv0.0.1)gomodtidy导入包失败gogetgit.xxxxxxx.com/middle/user失败gobuild有CHECKSUM过程,无法编译2.现象分析goget不支持代码支持之外的仓库。并且git调用链过程采取了https下载过程如果机器设置了GOPROXY,会导致下载失败编译过程会导致CHECKSUM失败3.物料物料说明...