在中国,奇虎 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系统上(多是我最迟钝的一次没法选择),并且很快就取得了严重进展。
下面是几个要点和我们总结的小技艺:
最后,我们成功的对架构履行了三次迭代,其中有两次对 RPC 框架的迭代还是在人手有限的情况下完成的。这都得益于 Go 开拓的便利性,下面是我们当前的系统架构:
继续优化的过程可以颠末下表来说明:
还有,在这些优化当前,不再需求临时的释放内存也许重启舷?了。
更令人快乐的时我们已经开拓了一个线上实时反响 Go 次序运转概略的可视化平台。现在我们很轻松的就可以够拿到系统形状并做出诊断,消弭隐患。这是系统运转中的截图:
这个平台还可以做一件很棒的任务——模拟数百万用户在线的连接和把持。颠末应用这个分布式的压力测试Tools(也是用 Go 完成),并观察一切这些直观的实时数据。我们评价每次优化的结果并且定位系统瓶颈然后打扫问题。
到目前为止,我们几乎试遍了一切系统优化的伎俩。我们还是期盼 GC 团队能带来更多的好消息让我们进一步的从繁重的开拓Task中解脱出来。想来,也许有一天我们的这些阅历会因为 Go 的继续展开而变得无用武之地。
这也是为什么我要以表达获得了此次列席 Gopher China 的机遇的谢意来终了此次分享的启事。这是一个我们去学习,去分享的盛会,也是一个展现 Go 在中国的普及和兴盛的契机。在奇虎内部有非常多其他的团队末尾去了解 Go,也许已经在试着应用 Go。
在可预见的将来,我相信中国会有更多的互联网公司参与我们的行列,用 Go 来重新创建他们的系统,而 Go 开拓团队的后果会使更多的开拓者和公司收益。
本文中的一切译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译Task依照 CC 协议,假设我们的Task有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务