今天介绍的三种不同的 md5 计算方式,其实区别是读文件的不同,也就是磁盘 I/O, 所以也可以举一反三用在网络 I/O 上。 ReadFile先看第一种, 简单粗暴: 123456789func md5sum1(file string) string { data, err := ...
阅读全文 »

最近在对我们的网关服务(gateway)进行压力测试时,发现网关服务产生大量的 TIME_WAIT. Gateway 是用 go 实现的,通过 HTTP 方式与后端服务进行通信,也就是说使用了 net/http 包。 在我的理解中,net/http 是默认保持长连接的,按理说不会有这么多 TIME_ ...
阅读全文 »

一般而言,我们用 etcd 的 watcher 时,都是像下面这样用,永不休止。 12345678910111213141516171819202122232425262728import ( "time" "context" "github.com/coreos/etcd/client")func ...
阅读全文 »

前阵子在小组内部分享过我平时使用的工具和资源,这里权当记录一下,也充当一篇 😜 工具篇开发工具 Alfred / Spotlight 快速检索文件, 二者互补 Sublime Text 3 / Atom / VS Code(看好) Gas Mask (管理 hosts, Mac)同类: Switc ...
阅读全文 »

背景: service_event 服务,是下文提到的消费者服务,会消费 rabbitmq 里面的消息。每个服务起 10 个消费者线程去消费消息,如果连接断开,隔 1秒后会重连。 service_event用到的线上环境的rabbitmq 一览: (A机房的 rabbitmq 是两两节点一个 ...
阅读全文 »

说明:本文测试环境 go version go1.6.2 darwin/amd64 本地开发环境的监控如果是本地开发环境, 可以利用 GODEBUG=gctrace=1 /path/to/binary 的方式输出 GC 信息,然后用 gcvis 作可视化。 GODEBUG=gctrace=1 会 ...
阅读全文 »

问题:如何得知某个二进制的文件的 Git SHA1 值 和编译时间?总的思路都是编译时候通过某种方式将所需信息保存下来。有好几种实现方式: 1. 将这些信息作为文件名的一部分如 XXX_$Version_$Date 12345678910111213141516171819202122232425 ...
阅读全文 »

前方高能提醒:如果你的系统小于 OS X Yosemite (10.10.3),且不准备升级到符合条件的版本,就不用往下看了。 Dlite 是什么?早在2013年底,笔者实习的时候就开始玩 docker,只是那时 docker 还是 dotCloud(现已卖掉,改名为 Docker.Inc)员工的业 ...
阅读全文 »

如果想要和 redis 打交道, 譬如实现某种语言的 redis 的客户端, 实现 redis 的 proxy,都得懂 redis 的数据序列化协议 REdis Serialization Protocol(RESP)(MySQL 同理). Redis使用 TCP 作为其数据传输协议,而分析 TCP ...
阅读全文 »