ハイテキストライブストリーミング





私たちのサイトの生活において重要な役割を果たしているのは 、Appleプレゼンテーションのオンラインブロードキャストです。 多くのロシア語のリソースが行うテキストとグラフィックの放送に加えて、チャットでディスカッションを行うだけでなく、発生するすべてについてのコメント付きのライブオーディオブロードキャストを行うこともできます。 以前のように、私たちの常設プレゼンターは、 Kira Tverskaya (モスクワのエコー)とEldar Murtazinに助けられました。 このような活気のある形式により、発表者の反応をリアルタイムで聞くことができますが、これは非常に興味深いことです。



前回のiPhone 4Sのプレゼンテーションでは、少し間違えていましたが、訪問者の流入に十分に備えることができませんでした(ところで、約3,500人の顧客がいました)。 主な間違いは、翻訳ページがWordpressプラグインの出力であったため、PHPインタープリター自体が各呼び出し中にぴくぴく動くだけでなく、Wordpressシステム全体でした。 放送後、そのような恥ずべきスキームを取り除く必要があることが明らかになりました。



噂によると、Appleは3月にiPad 3タブレットの新しいバージョンを導入する予定です。 明らかな理由から、Appleの教育用プレゼンテーションに興味を持つ人は少なかった。



あらゆる面でオンラインブロードキャストを行いました。イベントの写真を含むテキストブロードキャスト、オーディオストリーム、人々がお互いに何が起こっているかを話し合うことができるチャットです。 次に、 テキストブロードキャストが編成されたテクノロジーについて説明します



一般的なテキストコンテンツ配信スキームを次に示します。







このスキームの重要な役割は、数千の長寿命HTTP接続をサポートできるサーバーを配布し、接続されたクライアントにほぼ瞬時に新しいデータを配布することによって果たされます。 彼らの仕事は、開発者DmitryKoterov自身 ハブで 書いたComet-server Dklab Realplexorに基づいています。



Adminは、PHPで書かれたシンプルなWebインターフェースです。 複数のブロードキャストを行い、フィードストリーム内の個々のメッセージを追加、削除、編集できます。 管理パネルの操作原理は次のとおりです。

  1. 管理者がブロードキャストテープの新しいメッセージを紹介します
  2. メッセージが管理データベースに追加されます
  3. 最初の10個のメッセージがデータベースから取得され、index.htmファイルが生成されます
  4. すべてのメッセージがデータベースから取得され、full.htmファイルが生成されます
  5. 結果のindex.htmおよびfull.htmファイルは、OpenStack APIを使用してCloudStorage CDNにアップロードされます
  6. およそ次のPOST要求を使用して、すべてのCometサーバーに配信するために新しいメッセージが送信されます。

     POST / HTTP / 1.1
    ホスト:comet1.live.appleinsider.ru
    コンテンツの長さ:30
     X-Realplexor:識別子= ai
    
     {「時間」:「07:36」、「テキスト」:「テスト」} 
さて、クライアント側、つまり オンラインブロードキャストのリスナー/リーダー。



クライアントはアドレスlive.appleinsider.ruを入力し、キャッシュされたHTMLページは比較的迅速にロードされます。 CloudStorageは、幅広いチャネルと高速コンテンツ配信を備えたClodoのクラウドストレージです。



この「シード」には、1〜4の乱数を選択し、comet1-comet4 Comet-serversのいずれかに接続するJavascriptコードがあります。

<script type="text/javascript"> var comet = new Dklab_Realplexor("http://comet"+(1+Math.floor(Math.random()*4))+".live.appleinsider.ru"); comet.subscribe("ai", receive_post); comet.execute(); function receive_post (msg, id) { if(msg){ $("#onair .new").removeClass("new"); html = "<li class='new'><span class='date'>"+msg.time+"</span> "+msg.text+"</li>"; $("#onair").prepend(html); } $("#chat").append(msg.text); document.title = "* *"; setTimeout( function(){document.title = "AppleInsider.ru";}, 5000); } </script>
      
      



一般的に、それらは異なるデータセンターに分散することができますが、私たちのケースでは、4つのプロセッサコアを煩わせず、単にロードすることにしました。 各dklab_realplexorプロセスは1つのコアを使用し、nginxはカーネルバランシングを実行しました。 ディストリビューターの1つに新しいメッセージが表示されると、それに接続されている顧客にほぼ即座に配信されます。



そして、結論として、放送に関する小さな技術レポート:



 日付:1月19日
オーディオ放送時間AppleInsider.ru:18:00:30-20:00
 Appleプレゼンテーション時間:午後7時-午後8時
オーディオストリームを聴く:最大750人
読むテキスト翻訳:最大420人
チャットの土曜日:最大140人 




テキストディストリビューター



CloudStorageの静的ストレージトラフィック、 live.appleinsider.ru / index.htm





動的ディストリビュータープロセッサのトラフィックと使用、comet * .live.appleinsider.ru







ラジオ



オーディオストリームは私の以前の投稿で説明さたスキームに従って配布されました。 エントリはここにあります









チャット



チャットは、Jabberサーバー会議用の非常に有名なCandy Webインターフェイスです(ejabberdがあります)。









いつものように、私はあらゆる形の批判を待っています。



All Articles