golang--2016gopher北京大会(1)

    大会感想:牛人真的很能写代码,实现很多功能,而且开源的精品越多,影响力越大,越能过上dream life。比如beego的作者,去了America,进入了Apple。另外,精英们特点是表达能力很强,也能撕逼。比如Golang和Rust性能pk就争论得不可开交。参与这种技术社群真的是让人脑洞大开,记得谁说过那么一句话--不让你感到惊喜的语言不值得学。我想表达的是不让我感到惊喜的会议不值得花钱参加。

    好多人从nodejs转向了golang,原因无非在于golang是高吞吐低延迟,适合CPU负载密集型,非中断式的后台加载。而nodejs能很好用于IO密集型的服务,解释执行和动态类型,在单线程加载解释方面会有延迟如JSON编译工作(摘自infoq)。

  来个倒叙吧:我只记录我感兴趣的,有些东西我不知道什么意思,纯记录

    一、网易云的人分享: 

pipeline测试:树莓派+facebook argmented traffic control
cat /proc/sys/net/ipv4/tcp_wmem
##go和nginx lua性能对比测试:
ab -n 1000000 -c 5000 -k "http://127.0.0.1:8081/512b"

    二、grabtaxi:

docker优化经验:内存swap off

路由优化经验:

  • nethttp->fasthttp
  • Pool bufferio Reader/Writer
  • Pool conn,buffer
  • header struct
  • string->[]byte

代码看不懂,上图

代码规范

golint go vet go errcheck goimports gofmt
gometalinter

代码测试

stretchr/testify
rafaeljusto/redisgomock
测试时替换函数指针

不能总来图片,抄写下代码

package main
import "testing"
var realImpl = func() int {
    //do something for real
}

func TestSomething(t *testing.T) {
    defer func(org func() int) {
        realImpl = org
    }(realImpl)
    realImpl = func() int {
        return 0
    }
    //carry on with the testing
}

工作流程

1.好的工作流程

  • 让普通的人表现得更牛
  • 让牛人逆天

2.糟糕的工作流程

  • 普通人想辞职
  • 牛人已经辞职了

持续集成

  • TravisCI->drone.io->Jenkins 

持续部署

  • DataDog->NewRelic->Scalyr->Slack

资源和程序一起发布

  • https://github.com/jteeuwen/go-bindata

debug性能问题

  • pprof
  • github prometheus/prometheus
  • github tsenart/vegeta

 

posted @ 2016-04-17 00:53  zzuse  阅读(592)  评论(0编辑  收藏  举报