The C10M Problem

C10K 도 어제같은데 C10M 이라니 ㄷㄷ..

여기서도 우리의 미운 오리 Java 는 등장합니다.

WhatsApp 의 Erlang 으로 (FreeBSD상에서) 만든 200만 커넥션을 무색하게 만드는,

무려 천2백만 커넥션. Java 로 구현. (Linux 상에서). [1]

Haskell 언어의 2천만 QPS (epoll / kqueue)도 인상적입니다. [2]

Several prominent programming languages provide lightweight threads or processes. Erlang provides lightweight processes that communicate only using message passing. The Go programming language provides sophisticated coroutines, called goroutines. The Go scheduler also uses N (one per cpu) poll serve. In upcoming releases, Go’s IO event notification will be integrated with the scheduler, whereas with Mio, the event notification is implemented entirely in Haskell.

Event libraries such as libevent, libev, and libuv also provide abstraction over platform-specific event notification APIs. These APIs require programmer to express programs as event handle, while Mio is designed and optimized to support a lightweight thread programming model.

Mio has been fully implemented, has been incorporated into the GHC code base, and will be released as part of GHC 7.8.1. Mio includes 874 new lines of code and 359 old lines of code deleted.

쩌.. 쩐다..

 

References:

[1] Scaling to 12 Million Concurrent Connections: How MigratoryData Did It

[2] Mio: A High-Performance Multicore IO Manager for GHC

 

Advertisements

댓글 남기기

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s