1、Golang 从玩具到板斧,tabalt 2015.12Blog: http:/Github: https:/ world解决某个简单问题的小工具有趣的开源项目https:/ 板斧(解决问题)大流量、高并发IM/消息推送导航猜你喜欢底层服务Docker https:/ TIDB https:/ key下划线行长约定一行不超过80个字符,超过的请使用换行展示,尽量保持格式优雅。Import有顺序的引入包,不同的类型采用空格分离,第一种实标准库,第二是项目包,第三是第三方包。不使用相对路径引入包 import “./net”错误处理不丢弃任何有返回err的调用,接收到错误,要么返回err,要么实在
2、不行就panic,或者使用log记录下来,编码规范,检测工具golintgocyclogo_vet综合http:/ test v性能测试go test -v bench接口测试命令行curl工具 https:/ 压力测试https:/ tool pprof -text http:/localhost:9002/debug/pprof/profilego tool pprof -web http:/localhost:9002/debug/pprof/profilego tool pprof -svg http:/localhost:9002/debug/pprof/profile /pprof
3、.svg竞态条件 Data Race Detectorgo test -race mypkggo build -race mycmdgo run -race mysrc.go,性能与优化,缓存数据https:/ Tips并发读写map要加锁gzip、json、redis驱动 等包性能不好减少byte和string的转换,尽量使用byte加锁时尽量使用sync.RWMutex可加多个读锁或一个写锁,常用于读次数远大于写次数的场景先完成业务再谈优化,优雅重启,Socket服务https:/ Http服务https:/ Proxyvhost管理access log, error log高效gzip静
4、态文件Proxy Keepalive,线上运维,高可用负载均衡DNS分地区、运营商解析或智能DNS解析到多个机房VIP同一机房LVS下挂载多个RSLVS健康检查lvscheck.domain/status.phpstatus.php 中curl本机的Golang服务监控报警提供状态检测页面,定时curl,发现问题短信/邮件报警(云监控)自我恢复监控进程状态,挂了尝试重启程序崩溃保持现场 ./mycmd /path/mycmd.log,不要放在/tmp/目录从日志中查找原因,解决问题,线上运维,机器负载CPU空闲率内存使用率网卡流入流出磁盘剩余空间什么时候关注这些?代码调整上线前后机房流量切割前后日常监控任何你想看的时候,板斧的力量,板斧的力量,板斧的力量,进阶高级,官方文档 https:/golang.org/pkg/实效Go编程Golang 源码剖析阅读常用系统包源码,Q&A,