go语言的优势?

go语言的优势?

前言

在学习了docker kubenetes之后 我们发现,这两个服务的开发语言都是GO语言,并且纵观很多云平台也是用go开发的,那么go语言有什么优势呢?我们一起来学习下

go语言的优势?

总结一下优点:

  • 部署简单 除了glibc没有其他外部依赖,编译后直接是一个可执行文件。
  • 并发性好,cpu 利用率高
  • 语言设计良好
  • 执行能力好,内存消耗少

go语言的缺陷:

  1. Go的import包不支持版本,有时候升级容易导致项目不可运行,所以需要自己控制相应的版本信息
  2. Go的goroutine一旦启动之后,不同的goroutine之间切换不是受程序控制,runtime调度的时候,需要严谨的逻辑,不然goroutine休眠,过一段时间逻辑结束了,突然冒出来又执行了,会导致逻辑出错等情况。
  3. GC延迟有点大,我开发的日志系统伤过一次,同时并发很大的情况下,处理很大的日志,GC没有那么快,内存回收不给力,后来经过profile程序改进之后得到了改善。
  4. pkg下面的图片处理库很多bug,还是使用成熟产品好,调用这些成熟库imagemagick的接口比较靠谱

go开发的项目:

  1. nsq:bitly开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息
  2. docker:基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建。
  3. packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者
  4. skynet:分布式调度框架
  5. Doozer:分布式同步工具,类似ZooKeeper
  6. Heka:mazila开源的日志处理系统
  7. cbfs:couchbase开源的分布式文件系统
  8. tsuru:开源的PAAS平台,和SAE实现的功能一模一样
  9. groupcache:memcahe作者写的用于Google下载系统的缓存系统
  10. god:类似redis的缓存系统,但是支持分布式和扩展性
  11. gor:网络流量抓包和重放工具
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...