Open-Falcon更换hash算法

背景

原生的open-falcon使用一致性哈希来进行存储的分片。其使用到的一致性哈希算法库是github.com/stathat/consistent
这个库使用了CRC32作为hash算法。CRC32用于一致性哈希时,结果是非常不均匀的。
而且open-falcon只使用500个虚拟节点,统计进到graph的点数速度,标准差结果甚至到了15k+。
更换hash算法成为当务之急。

我们将CRC32 + 500虚拟节点,变成了murmur3 + 10000虚拟节点, 看官可能觉得在跑着业务的系统上,难度很高,而实际上整个过程简单的一逼

通过pprof获取golang gc信息

背景 服务在开启了pprof的情况下,可以使用如下方式,简单粗暴的的获取gc情况 实现 #!/bin/bash _lastNumGC=0 _first=true while : ; do r=$(curl -s 127.0.0.1:6071/debug/pprof/heap?debug=1 | tail -22) _NumGC=$(echo $r | sed 's/#/\n#/g' | grep "^# NumGC" | awk '{print $NF}') NumGC=$[ ${_NumGC} -

使用iterm2的coprocess完成自动登录

背景

日常工作中,经常需要通过跳板机登录线上机器。
而为了安全起见,系统部的同学又启用了otp,动态生成code
给经常登录线上机器的使用者,带来了很大不便

作为iterm2的使用者,其coprocess的功能,可以实现自动登录,极大减少了手工输入动态密码及个人密码的次数。
什么是iterm2的coprocess,可参见其官方说明 coprocesses

organizing golang projects and dependencies

背景

golang的依赖一直是让人头疼的问题, 大家对其自有的package管理也是褒贬不一
而对于一个公司内部项目来讲, 主要的需求有以下几点

  1. 方便的依赖包版本管理
  2. 方便协同开发
  3. 尽可能不依赖其编译所在环境
  4. 除基础包之外, 第三方包尽可能的自包含

基于此, 有了本文, 打算以最小的环境变更及工具, 打造一个可协同工作的golang projects