Golang在美团的应用用

2020-02-27 229浏览

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