Golang资源
u012333307 · · 4523 次点击 · · 开始浏览1 Golang在京东列表页实践总结
地址: http://mp.weixin.qq.com/s?__biz=MjM5OTcxMzE0MQ==&mid=206835939&idx=1&sn=c4cbabc4fccdba123d1c49524b0f40d6&scene=23&srcid=TX91jlytOMbwLmA1Cywd#rd
主要内容:
开发过程中遇到的问题
遇到2个比较严重的问题:
-
Golang自身序列化性能低下
-
GolangGC困扰
针对第一个序列化、反序列化问题,我们尝试过golang内置的encoding/json、encoding/gob两种方式,但是效果都特别不理想,耗费cpu过多,qps 一直上不去。
后来请教beego作者的谢大同学,给推荐了ffjson,也亲自写了一些测试ffjson的代码,最终ffson以3倍优势完胜golang内置json序列化,所以最后采用了ffjson。
第二个问题,golang GC问题,相信不少同学在开发的过程中也遇到过这个问题,其实我们认真分析,发现GC时候很大部分时间是浪费的Marking阶段,所以我们可以从以下几个点优化我们的代码:
减少内存中对象数量
尽量重复内存申请,采用对象池,避免重复申请、释放内存,可以非常有效的减少GC;
开启GODEBUG=gctrace=1,可以非常清晰的看到内存中对象数量、内存使用情况。以及各个阶段的时间开销;
另外可以使用golang内置的性能监控工具pprof包,可以方便得监控到内存、cpu的是使用情况。
Go 技术栈选择
-
web框架,采用Asta的beego(http://beego.me)里边的orm部分写的很赞,建议大家仔细读读里边的源码,对lua部分的API设计都是采用beego现成的MVC设计,可以方便得定义接口,并在路由中配置即可提供服务;具体github地址:http://github.com/astaxie/beego
-
json序列化,https://github.com/pquerna/ffjson,里边有详细的使用说明文档;
-
redis:http://github.com/go-redis/redis 在这之上我们内部又对主从操作封装了一层;
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
1 Golang在京东列表页实践总结
地址: http://mp.weixin.qq.com/s?__biz=MjM5OTcxMzE0MQ==&mid=206835939&idx=1&sn=c4cbabc4fccdba123d1c49524b0f40d6&scene=23&srcid=TX91jlytOMbwLmA1Cywd#rd
主要内容:
开发过程中遇到的问题
遇到2个比较严重的问题:
-
Golang自身序列化性能低下
-
GolangGC困扰
针对第一个序列化、反序列化问题,我们尝试过golang内置的encoding/json、encoding/gob两种方式,但是效果都特别不理想,耗费cpu过多,qps 一直上不去。
后来请教beego作者的谢大同学,给推荐了ffjson,也亲自写了一些测试ffjson的代码,最终ffson以3倍优势完胜golang内置json序列化,所以最后采用了ffjson。
第二个问题,golang GC问题,相信不少同学在开发的过程中也遇到过这个问题,其实我们认真分析,发现GC时候很大部分时间是浪费的Marking阶段,所以我们可以从以下几个点优化我们的代码:
减少内存中对象数量
尽量重复内存申请,采用对象池,避免重复申请、释放内存,可以非常有效的减少GC;
开启GODEBUG=gctrace=1,可以非常清晰的看到内存中对象数量、内存使用情况。以及各个阶段的时间开销;
另外可以使用golang内置的性能监控工具pprof包,可以方便得监控到内存、cpu的是使用情况。
Go 技术栈选择
-
web框架,采用Asta的beego(http://beego.me)里边的orm部分写的很赞,建议大家仔细读读里边的源码,对lua部分的API设计都是采用beego现成的MVC设计,可以方便得定义接口,并在路由中配置即可提供服务;具体github地址:http://github.com/astaxie/beego
-
json序列化,https://github.com/pquerna/ffjson,里边有详细的使用说明文档;
-
redis:http://github.com/go-redis/redis 在这之上我们内部又对主从操作封装了一层;