go build 生成的二进制文件被增加到 git 提交记录里面,需要在历史记录清除.
使用 bfg 工具清除
工具下载: https://rtyley.github.io/bfg-repo-cleaner/#download
1 | # clone 项目 注意加上 --mirror |
go build 生成的二进制文件被增加到 git 提交记录里面,需要在历史记录清除.
使用 bfg 工具清除
工具下载: https://rtyley.github.io/bfg-repo-cleaner/#download
1 | # clone 项目 注意加上 --mirror |
高并发写多读少的场景下,对 map 的写需要加锁,急剧影响性能.
1 | package main |
跟方案 1 类似,减小锁的粒度到字段.潜在的问题是当数据量过大的,锁需要占用大量内存.
在并发场景下,对同一个值的修改,数据的完整性不能保证.对 key 的 val1,val2 的写入,可能写入val1 成功一半,val2 成功一半,即 val1 half+ val2 half.为了保证数据的正确性.可以在数据的末尾增加 crc32 校验,计算数据的签名.取出数据时,需要校验签名是否正确.签名不正确,直接丢弃,从数据库拉取.
参考链接
最近配了一台服务器,配置清单cpu: e2660、内存: 16*2 ecc。
使用 proxmox 安装了多台虚拟机,使用其中的 3 台 4c 8g 的搭建了一个 3 节点的 k8s 集群。因为没有公网 ip或者说进不了电信光猫改不了配置,不能直接通过公网访问到内网,所以使用 frp 内网穿透,提供公网访问。
预期实现的功能:

fprs http监听的 7080端口。这样流量就会通过 frps -> frpc 到内网宿主机。公网服务器nginx配置
1 |
|
fprs 配置
1 | bind_addr = 0.0.0.0 |
内网 frpc 配置
1 | upstream k8s { |
内网宿主机nginx配置
1 | [common] |
https 证书通过 letsencrypt 申请的
1 | map $http_upgrade $connection_upgrade { |
1 | upstream k8s { |
参考:
http 1.1 默认开启了 tcp keepalive,复用 tcp 连接. go 中发起 http 请求,如何使用 keepalive 呢?
1 | package main |
发起 http 请求时,使用 QHTTPClient.go 服务端 http.ListenAndServe(":8080",nil) 默认开启了 keepalive.
使用 man 7 tcp查看 tcp_keepalive_time,默认保持时间是 7200秒,tcp_keepalive_intvl默认是 75秒
自定义:
1 | srv := http.Server{ |
或者自定义 listener
1 | type tcpKeepAliveListener struct { |
gin 框架自定义 keepalive
1 | router := gin.Default() |