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() |