用Golang实现基于kafka中间件

鱼儿的博客 · · 1466 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

这两天用Go写了第一个项目,还在demo阶段,后续会持续记录关于Go开发的一些坑点。

项目叫做bigpipe,是为了解决服务之间异步Http调用而生的,用Go实现起来非常的简单,并发能力也很不错。

我为项目做了一个简单的分享PPT供下载。

项目地址:https://github.com/owenliang/bigpipe,编辑器一定要用Gogland,错误提示太强大,很难写出错误的代码!

目前有几个心得记录一下:

  • 配置文件我用的json,因为go是强类型,所以解析json异常痛苦,但是开源库我也不放心,所以就用标准库json慢慢搞。
  • 一个目录下的go文件属于一个包,包就是目录的名字,包内互相调用不需要import了。
  • 管道是引用的,不需要指针。
  • 格式化字符串时,传string*和string是不一样的,前者会打印出指针,后者才是值。
  • log库我自己写的,用channel传输保证并发安全,单个goroutine顺序写文件。
  • context库是比较冷门但又必须用到的东西,可以特别看看。
  • http库很强大,无论是服务端还是客户端,都是异步的,并发的。
  • go自带的go get包管理太难用,不会自动下载依赖,也没有版本的概念,必须用第三方的包管理工具。
  • GOROOT指向go的安装目录,GOPATH指向项目目录(它在目录的src目录下找代码),它俩都是import时候用来寻找代码用的。
  • 程序入口随便放在哪里,但是一定要定义为package main包。
  • 分析go程序性能可以用pprof,它能直接画出调用图并在浏览器里查看。
  • go程序在启动后需要根据runtime包指定线程数量,否则不一定能用到所有的Cpu core。
  • 擅用interface抽象接口,以便依赖抽象而不是依赖实现,这和C/C++/JAVA的抽象原理一致,只是表现形式太特别,还不太习惯。

后续会继续完善项目,随便记录一些GO的心得。


有疑问加站长微信联系(非本文作者)

本文来自:鱼儿的博客

感谢作者:鱼儿的博客

查看原文:用Golang实现基于kafka中间件

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1466 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传