Qihoo 360 and Go

画像



Qihoo 360のエンジニアであるYang Zhouを代表して、Goブログのゲスト投稿の翻訳に注目します。



Qihoo 360は中国のインターネットおよびモバイルデバイス向けのウイルス対策製品の大手プロバイダーであり、Androidモバイルアプリケーション(アプリケーションストア)の大規模な配信プラットフォームを制御しています。 2014年6月末に、Qihooは1か月あたり5億人のアクティブPCユーザーと6億4,000万人以上のモバイルデバイスユーザーに使用されました。 Qihooには独自のブラウザと検索エンジンもあり、どちらも中国人の間で人気があります。



私のチームであるプッシュメッセージング部門は、当社の製品(PCとモバイルデバイスの両方)の50以上のアプリケーション、およびオープンプラットフォームを使用する数千のサードパーティアプリケーションに基本的なメッセージングサービスを提供しています。



Goでの「ロマンス」は、プッシュ機能を使用しようとした2012年に遡ります。 最初のオプションは、nginx + lua + redisの束でしたが、深刻な負荷の下でのパフォーマンスは要件に適合しませんでした。 正しいスタックの次の検索で、Go 1.0.3の最新リリースに注目が集まりました。 言語のプリミティブであるゴルーチン(軽量スレッド)とgo-channel(型付きキュー)のおかげで、ほんの数週間でプロトタイプを作成しました。



当初、当社のコルゲートシステムは20台のサーバーに展開され、合計2,000万のアクティブな接続に対応していました。 彼女は1日に200万通のメッセージしか送信できませんでした。 現在、システムは400台のサーバーに展開され、2億以上のアクティブな接続をサポートし、毎日100億を超えるメッセージを送信しています。



ビジネスの急速な成長とプッシュメッセージングサービスの要件の増加と並行して、元のGoシステムはすぐに限界に達しました。ヒープサイズは69Gに達し、GCの一時停止は3〜6秒でした。 さらに、サーバーを毎週再起動してメモリを解放しました。 正直に言うと、Goを削除してカーネル全体をCに書き換えることさえ考えました。しかし、すぐに計画が変わりました。プラグはビジネスロジックの転送中に発生しました。 1人(私)がGoのシステムのサポートを圧倒することは不可能でしたが、同時にビジネスロジックのCへの移植を提供しました。



そこで私はGoにとどまることにしました(そして、私の意見では、これは私が受け入れることのできる最も賢明な方法です)。定性的な進歩はすぐに始まりました。



以下に、いくつかのトリックと最適化を示します。








画像



結果として、実装する人が限られている場合でも、アーキテクチャの3つの反復、RPCフレームワークの2つの反復が行われます。 この成果は、Goでの開発の容易さに起因します。 私たちのアーキテクチャの新鮮な図を持ってきます:



画像



継続的な改善と表形式での改善の結果:



画像



そして、それだけでなく、Goプログラムをリアルタイムでプロファイリングするためのプラットフォーム(可視性プラットフォーム)を開発しました。 これで、システムステータスと診断情報にアクセスして、問題を予測できます。



スクリーンショット:



画像

画像



すばらしいことから:このツールでは、Distributed Stress Test Toolモジュール(Goでも記述)を使用して数百万人のユーザーの接続と動作をシミュレートし、結果をリアルタイムで視覚化して観察できます。 これにより、あらゆる革新や最適化の有効性を調査し、戦闘状態でのパフォーマンスの問題を防ぐことができます。 ほぼすべての可能なシステム最適化は、すでにテスト済みです。 また、GoのGCを担当するチームからの良いニュースを楽しみにしています。将来のGCのコードの最適化で不必要な作業を省くことができます。 また、Goが進化し続けるにつれて、私たちのトリックはすぐに初歩的なものになると認めています。



Gopher Chinaに参加する機会を与えてくれたことに感謝し、この話を終わらせたいと思います。 これは厳eventなイベントであり、多くのことを学び、知識を共有し、Goの中国での人気と成功を吹き込むことができました。 Qihooの多数のチームは、既にGoに精通し、試してさえいました。 すぐに多くの中国のインターネット企業がこのトレンドに加わり、Goでシステムを書き換えると確信しているため、Goの背後にあるチームの努力は、近い将来、膨大な数の開発者や企業に利益をもたらすでしょう。



All Articles