2KB项目,专业的源码交易网站 帮助 收藏 每日签到

奇虎360 和 go

  • 时间:2019-04-09 09:12 编辑:2KB 来源:2KB.COM 阅读:481
  • 扫一扫,手机访问
  • 分享
摘要:
Go 英文原文:Qihoo 360 and Go

在中国,奇虎 360 是一个互联网和手机安全产品及处事的重要供应商,中止到 2014 年 6 月,奇虎具有 5 亿的 PC 生动用户和逾越 6.4 亿挪移用户。奇虎还运营着中国最受欢迎的搜集浏览器和 PC 搜索引擎。

我的团队,推动处事团队,为逾越 50 个公司的产品供应处事(PC 和挪移),包括不可胜数放在我们的开放平台的运用次序。

我们对Go的喜欢要从2012年第一次检验测验为奇虎的一个产品供应推送功用末尾。最初的nginx + lua + redis方案因为负载过大没能满足我们对实时功用的需求。在这类情况下,最新公布的1.0.3版Go惹起了我们的留心,借助它供应的goroutine和channel特点,我们在几周之内开拓完成了一个原型。我们的系统最初运转在20台Server上,可以处理2000万实时连接,每天发送200万信息。现在这套系统在逾越400台Server运转,支持2亿实时连接,每天发送逾越100亿条信息。

随着商业上的快速扩展和对我们推送处事的需求的增加,最初的Go系统很快碰着了瓶颈:堆大小抵达69G、GC停顿最高能到3-6秒。更头疼的是,我们必须每周重启系统来释放内存。谎言谎言,我们思考过放弃Go,用C来重写全部的中间组件作为交换。可是,并未如我们所愿,我们在迁移营业逻辑层的代码时碰着了费事。结果就是,作为事前唯一的人员,我不成能在维护这个Go系统的时分确保营业逻辑顺利迁移到C的处事框架上。

因此,我决定不断留在Go系统上(多是我最迟钝的一次没法选择),并且很快就取得了严重进展。

下面是几个要点和我们总结的小技艺:

  • 用长连接(应用连接池)交换短连接,减少通信进程傍边缓冲区和Tools的创建。
  • 适当的应用Tools池和内存池,减少GC的负载。
  • 应用Task池,事理是由一组协程作为破费者轮询并实行全局的Task也许来自消息行列的Task——由持有连接的协程作为生产者发送Task,用这类方式替代为每个Task生成一个临时协程。
  • 监视并操纵次序中协程的数量。缺少操纵会使GC不堪重负,比如,因为不加操纵的接受外部央求而出现的协程数峰值施加在GC上,同时发往内部处事的RPC调用可能阻塞新创建的协程。
  • 在挪移搜集中,要记得给连接[设置读写超时限制](http://golang.org/pkg/net/#Conn),否则可能招致协程阻塞。在局域网中就要慎重应用此设置,否则会降落RPC通信的效能。
  • 应用Pipeline(在TCP全双工特色下)来增强RPC框架的通信效能。

最后,我们成功的对架构履行了三次迭代,其中有两次对 RPC 框架的迭代还是在人手有限的情况下完成的。这都得益于 Go 开拓的便利性,下面是我们当前的系统架构:

继续优化的过程可以颠末下表来说明:

还有,在这些优化当前,不再需求临时的释放内存也许重启舷?了。

更令人快乐的时我们已经开拓了一个线上实时反响 Go 次序运转概略的可视化平台。现在我们很轻松的就可以够拿到系统形状并做出诊断,消弭隐患。这是系统运转中的截图:

这个平台还可以做一件很棒的任务——模拟数百万用户在线的连接和把持。颠末应用这个分布式的压力测试Tools(也是用 Go 完成),并观察一切这些直观的实时数据。我们评价每次优化的结果并且定位系统瓶颈然后打扫问题。

到目前为止,我们几乎试遍了一切系统优化的伎俩。我们还是期盼 GC 团队能带来更多的好消息让我们进一步的从繁重的开拓Task中解脱出来。想来,也许有一天我们的这些阅历会因为 Go 的继续展开而变得无用武之地。

这也是为什么我要以表达获得了此次列席 Gopher China 的机遇的谢意来终了此次分享的启事。这是一个我们去学习,去分享的盛会,也是一个展现 Go 在中国的普及和兴盛的契机。在奇虎内部有非常多其他的团队末尾去了解 Go,也许已经在试着应用 Go。

在可预见的将来,我相信中国会有更多的互联网公司参与我们的行列,用 Go 来重新创建他们的系统,而 Go 开拓团队的后果会使更多的开拓者和公司收益。

本文中的一切译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译Task依照 CC 协议,假设我们的Task有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|互联网】深入理解 Rust 的动态分派模型(2020-03-30 04:08)
【计算机/互联网|】mysql 索引过长1071-max key length is 767 byte(2020-03-16 04:01)
【计算机/互联网|】maven build卡死在Downloading的解决方法(2020-03-08 12:13)
【计算机/互联网|】Eclipse里的Java项目按住Ctrl + 左键不能进行跳转问题(2020-03-06 15:32)
【计算机/互联网|互联网】Ceph 性能调优(2020-03-03 23:56)
【计算机/互联网|】百度推送返回状态说明(2020-02-22 18:38)
【计算机/互联网|】tomcat建立示例java web项目(2020-02-15 11:27)
【计算机/互联网|】springboot打包成war,部署到tomcat访问404的问题 (2020-02-13 10:54)
【行业动态|】CES 2020教会了我们关于今年手机的知识:更便宜的可折叠材料,5G及更多(2020-02-10 01:32)
【行业动态|】谷歌Chrome的隐私变化将在今年晚些时候登陆网络(2020-02-10 01:28)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部