2009년 05월 18일
Q4M : Message Queue for MySQL5.1
시스템을 개발할 때 증가하는 데이터의 유입으로 인한 병목현상을 해결해 주기 위해 "메시지 큐"라는 미들웨어를 종종 사용하곤 한다. Microsoft Windows환경에서도 MSMQ라는 제품이 있고, Java진영에도 Message Queue 제품이 있는 것으로 안다.
특정 사이트에서 가입자가 폭주하는 경우(약간만 늘어도..-.-) 대부분 DB의 부하로 인해 서버가 다운되는 경험을 많이 겪었을 것이다. 이런 경우 가입 데이터를 처리하는 부분에 메시지 큐를 도입하는 것만으로 다운 없이 서비스를 이용자에게 제공할 수 있다. 다음 그림을 보면 메시지 큐의 위치와 역할을 알 수 있다.
그림에서 Publisher가 가입 페이지에서 데이터 등록을 요청하는 것이고 Subscriber가 요청된 데이터를 처리하는 부분이라고 하면 이해하기 쉬울 것이다. Message Queue로 인해 데이터 유입이 단순화 되었고 DB서버의 부하가 줄게 된다. 유입된 데이터를 처리하는데 시간이 걸리는 단점을 갖고 있기는 하다.
최근 MySQL Conference에 Q4M이라는 Message Queue 제품이 소개 되었다. MySQL을 이용하는 서비스에서도 데이터 유입시의 부하를 해결 할 수 있는 길이 생긴 것이다.
공식 사이트는 http://q4m.31tools.com/ 이고 개발자의 블로그 사이트는 http://labs.cybozu.co.jp/blog/kazuhoatwork/ 이다. 컨퍼런스에 소개된 슬라이드는 http://www.slideshare.net/kazuho/using-q4m-a-message-queue-storage-engine-for-mysql 을 보시라.
Q4M의 소개문 :
Q4M (Queue for MySQL) is a message queue licensed under GPL that works as a pluggable storage engine of MySQL 5.1, designed to be robust, fast, flexible. It is already in production quality, and is used by several web services (see Users of Q4M).
Q4M의 설치 방법
Precompiled binaries for MySQL running on linux i686, linux x86_64, andMac OS X 10.4 are provided. If your MySQL matches the condition, pleasefollow the steps below to install the matching binary distribution.
일본의 최대 SNS 서비스인 믹시에서 믹시 에코라는 서비스에 적용하여 운영 중이라고 한다.적용 내용이 소개된 블로그 http://alpha.mixi.co.jp/blog/?p=195 이다. 중간의 그림을 보면 서비스의 전체에 적용 된 것이 아니라 병목이 발생하는 쓰기 부분에 설치하여 사용됨을 알 수 있다.
단점이라면 큐잉된 데이터를 처리하는데 시간이 걸리므로 많은 데이터가 유입될 때는 실시간 처리가 안된다는 것이다.
그리고 MySQL 5.1이후 버젼에서만 사용할 수 있다는 것도...
오늘 하루는 이 제품을 알았다는 것만으로도 큰 소득이다. ^.^;
특정 사이트에서 가입자가 폭주하는 경우(약간만 늘어도..-.-) 대부분 DB의 부하로 인해 서버가 다운되는 경험을 많이 겪었을 것이다. 이런 경우 가입 데이터를 처리하는 부분에 메시지 큐를 도입하는 것만으로 다운 없이 서비스를 이용자에게 제공할 수 있다. 다음 그림을 보면 메시지 큐의 위치와 역할을 알 수 있다.

최근 MySQL Conference에 Q4M이라는 Message Queue 제품이 소개 되었다. MySQL을 이용하는 서비스에서도 데이터 유입시의 부하를 해결 할 수 있는 길이 생긴 것이다.
공식 사이트는 http://q4m.31tools.com/ 이고 개발자의 블로그 사이트는 http://labs.cybozu.co.jp/blog/kazuhoatwork/ 이다. 컨퍼런스에 소개된 슬라이드는 http://www.slideshare.net/kazuho/using-q4m-a-message-queue-storage-engine-for-mysql 을 보시라.
Q4M의 소개문 :
Q4M (Queue for MySQL) is a message queue licensed under GPL that works as a pluggable storage engine of MySQL 5.1, designed to be robust, fast, flexible. It is already in production quality, and is used by several web services (see Users of Q4M).
Q4M의 설치 방법
Precompiled binaries for MySQL running on linux i686, linux x86_64, andMac OS X 10.4 are provided. If your MySQL matches the condition, pleasefollow the steps below to install the matching binary distribution.
- determine whether if your MySQL installation was compiled with --with-fast-mutexes option, by looking at CONFIGURE_LINE of bin/mysqlbug script.
- download appropriate binary distribution of Q4M from http://q4m.31tools.com/dist/. If your MySQL installation was compiled with --with-fast-mutexes option, then choose a Q4M archive having with-fast-mutexes within its filename. Otherwise, choose one with without-fast-mutexes.
- untar the distribution
- copy support-files/q4m-forward to bin directory of MySQL
- copy libqueue_engine.so to lib/mysql/plugin directory of MySQL (or to lib/plugin directory in case lib/mysql/plugin does not exists)
- run support-files/install.sql
- run the test suite
일본의 최대 SNS 서비스인 믹시에서 믹시 에코라는 서비스에 적용하여 운영 중이라고 한다.적용 내용이 소개된 블로그 http://alpha.mixi.co.jp/blog/?p=195 이다. 중간의 그림을 보면 서비스의 전체에 적용 된 것이 아니라 병목이 발생하는 쓰기 부분에 설치하여 사용됨을 알 수 있다.
단점이라면 큐잉된 데이터를 처리하는데 시간이 걸리므로 많은 데이터가 유입될 때는 실시간 처리가 안된다는 것이다.
그리고 MySQL 5.1이후 버젼에서만 사용할 수 있다는 것도...
오늘 하루는 이 제품을 알았다는 것만으로도 큰 소득이다. ^.^;
# by | 2009/05/18 15:52 | DB | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]