20110120CreatorsNight_僕とErlangと時々Load Balancer

Preview:

DESCRIPTION

2011/1/20のCreators' Nightで使用された資料。 Erlangを使用した簡易load balancerを作ってみた。

Citation preview

Cr ator’s Night2012/01/20

事業創造室(NPLab) 加藤寛之

Friday, January 20, 12

< みなさん、こんばんみー

Friday, January 20, 12

今日のお題

僕とErlangと時々Load Balanc r

Friday, January 20, 12

< 今日はちゃんとコード書いたよ!

Friday, January 20, 12

本題に入る前に・・・思い出して下さい

天下一なるはや配信性能会

Friday, January 20, 12

過ぎ去った思い出達

Friday, January 20, 12

その中でも、C言語で書かれたNginxと遜色ない結果を残した

Erlang

製のWebサーバー達

こいつらFriday, January 20, 12

でもマイナー言語だよ?( ́,_ゝ`)プッ

Friday, January 20, 12

てか、言語的に キモイし( ́,_ゝ`)プッ

Friday, January 20, 12

いいえ、Erlangはできる子です

今日はその一端をご紹介します

Friday, January 20, 12

ということで

Erlang Load Balancer= erlproxy

を作ってみた

Friday, January 20, 12

復習 : Load Balancerって何ぞ?

ユーザーいっぱい

1台のマシンじゃ無理

じゃ、複数マシン使おう

Q. どうやって複数のマシンに振り分ける?Friday, January 20, 12

復習 : Load Balancerって何ぞ?

ユーザーいっぱい

1台のマシンじゃ無理

じゃ、複数マシン使おう

Q. どうやって複数のマシンに振り分ける?

そこでLoad

Balancerで

Friday, January 20, 12

復習 : Load Balancerって何ぞ?

受け取ったリクエストを後ろのサーバーに右から左へ受け流す

ユーザーからのリクエストを受けとる

後ろのサーバーから返ってきたデータをユーザーに返す

Friday, January 20, 12

比較対象巷で使われている代表的な

オープンソースのLoad Balancer達

いづれも大規模サイトで導入実績のある素晴らしいソフトウェアです

Friday, January 20, 12

尚、今回は正に「右から左へ受け流す」

性能の測定です。エンジニア用語で言うとL4 Load Balancingです。

Friday, January 20, 12

用意した環境

・・・ 後ろのサーバー32台

測定するソフトウェア

測定ツール

Friday, January 20, 12

指標 : Req/sec

= 1秒間にどれだけのリクエストをさばけるか。数値が大きい程よい。

同時アクセス数を10, 50, 100, 200, 300, 400, 500に変えて10,000リクエストずつ投げるテストを100回繰り返してみました。

Friday, January 20, 12

さて、その結果は?

Friday, January 20, 12

惨敗です(́・ω・`)

だが待って欲しい!

Friday, January 20, 12

コード量(≒ソフトウェアの複雑さ)で比較すると・・・

Haproxy : 225,047行 Nginx : 122,830行 erlproxy : 375行

Friday, January 20, 12

更にテストが完走した比率で比較すると・・・

Friday, January 20, 12

つまり、理論性能ではHaproxyやNginxには勝てない

でも

少ないコード量で高負荷時でも安定的な配信を実現可能

Friday, January 20, 12

ほら、Erlang素敵でしょ?

Friday, January 20, 12

1> if:format(“~p~n”, [“Thanks!”]).“Thanks!”ok2>

source : https://github.com/devkato/erlproxy

Friday, January 20, 12

尚、布教活動のため今回のスライドの全てのページに

Erlangのロゴが隠れています。

全部見つけられたかな?Friday, January 20, 12