Golang在美团的应 - open.qiniudn.com
Transcript of Golang在美团的应 - open.qiniudn.com
Golang在美团的应⽤用
沈锋 后台服务开发⼯工程师
http://shenfeng.me
2013/12/28
About me
@美团!
后台服务开发(Go) !
推荐系统(C++, Python)!
pre美团!
创业团队,web开发 (Clojure, Javascript)!
Vim,Emacs,IDEs;n种编程语⾔言!
涉猎较⼴广,不求甚解,不亦乐乎!
语⾔言是⼯工具,⼯工具是⼯工具,解决问题
提纲
线上服务!
Thrift Cache Proxy!
Thrift Router:分发流量!
商家筛选服务,推荐服务,评论标签….!
线下:推荐模型训练!
感受
Thrift Cache Proxy透明proxy,cache结果,负载均衡!
failover, cache, load balancer: 提⾼高服务稳定性!
替换Python in process cache!
简化上下游程序!
web页⾯面dump状态!
!
!
!
开发迅速 (数天)!
第⼀一个Q的KPI
Thrift Router!
You can solve every problem with another level of
indirection, except for the problem of too many levels of
indirection
Thrift Router 简介
Thrift Router 简介(⽂文字版)
为推荐系统设计:多模型,分流量(AB测试)!
修改请求:在Request⾥里,补充⽤用户最近⾏行为!
修改结果:调⽤用多个算法,融合结果!
负载均衡,failover!
web界⾯面修改配置 (json),dump状态!
EDM,搜索,排序等流量陆续接⼊入!
美团⾸首页个性化实验:patch默认排序,插⼊入个性化推荐(已下线)!
辅助开发:copy线上流量到测试机
Thrift Router 配置
web界⾯面,编辑json:atomic.StorePointer
Thrift Router 状态监控
Thrift Routr:线上profile
go tool pprof ./rec_router http://10.64.13.146:8656/debug/pprof/profile!
线上真实情况
Thrift Router:cache功能?
Thrift Cache Proxy (串联)!
最近2年,和cache做⽃斗争!
耗了⼀一些时间,感觉得不偿失!
掩盖真实问题!
深⼊入理解系统,业务!
将来可能加上
商家筛选服务
商家筛选服务
Thrift服务!
常规倒排索引 !
提供web界⾯面,供PM查看!
开发初期,⽅方便PM和RD沟通,⽅方便debug!
显⽰示详细信息!
得益于标准库:json, http
其它应⽤用
推荐服务!
评论标签!
离线模型训练!
⽐比python快⼀一个数量级!
同事表⽰示:不错!
其它
Golang使⽤用感受
简单,省⼼心!
并发,⽹网络,性能!
⼯工具好⽤用:fmt, pprof, test等!
标准库(http, json, log, flags, atomic等,代码可读)!
开发活跃;社区
遇到的问题
GC 停顿!
stop-the-world parallel mark and sweep!
1.2 有较⼤大提升,仍需要继续等!
解决办法:!
优化程序(go tool pprof)!
数组!
第三⽅方库!
Thrift!
Redis client!
解决办法:⾃自⼰己动⼿手,丰⾐衣⾜足⾷食