SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
 
   
            CTO




2011 7 16         2
 Palmscape
       1997               Xiino
       Palm OS                        (   )
             IBM WorkPad, Sony CLIE
             NTT DoCoMo
       M.I.T. TR100/2002
       
   Web
       IPA           2004 –

2011 7 16                                      3
(2)	

                :
        2005 8              2010 11
        Japanize
             Web UI                    	
        
             
        Q4M
                              (MySQL        )	



2011 7 16                                          4
(3)	

                :
        2010 11
                             IT
        2011 5              CTO 	




2011 7 16                             5
              DeNA
                       OSS
   DeNA                      OSS

   
            	



2011 7 16                           6
2011 7 16        7
Q4M	




2011 7 16           8
What is Q4M?	

   A message queue
       runs as a storage plugin of MySQL 5.1
   Why is it a MySQL plugin?
       accessible by using existing MySQL clients
             no need for a new client library
       administrable by using SQL
             friendly to DB admins

   First release: Jan 2008	

2011 7 16                                            9
Design Goals of Q4M	

   Robust
       Does not lose data on OS crash or power failure
             necessary for Tokyo wo. nuclear power plants… orz

   Fast
       Transfer thousands of messages per second
   Easy to Use
       Use SQL for access / maintenance
       Integration into MySQL
             no more separate daemons to take care of	
2011 7 16                                                         10
Users of Q4M	

   Many leading web services in Japan
       DeNA Co., Ltd.
       livedoor Co., Ltd.
       mixi, Inc.
       Zynga Japan (formerly Unoh, Inc.)




2011 7 16                                   11
What is a Message Queue?	




2011 7 16                                12
What is a Message Queue?	

   Middleware for persistent asynchronous
    communication
       communicate between fixed pairs (parties)
       a.k.a. Message Oriented Middleware
   MQ is intermediate storage
       RDBMS is persistent storage
   Senders / receivers may go down


2011 7 16                                           13
Minimal Configuration of a Message Queue	

   Senders and receivers access a single
    queue	




             Sender             Receiver

                       Queue



2011 7 16                                        14
Using MQ as a Relay	

   Separate queue for sender and receiver
   Messages relayed between queues	



                             Relay
            Sender                           Receiver

                     Queue           Queue



2011 7 16                                               15
Merits of using Message Relays	

   Destination can be changed easily
       Relays may transfer messages to different
        locations depending on their headers
   Robustness against network failure
       no loss or duplicates when the relay fails
   Logging and Multicasting, etc.	



2011 7 16                                            16
Message Brokers	

   Publish / subscribe model
       Separation between components and their
        integration
       Components read / write to predefined queues
       Integration is definition of routing rules between
        the message queues
       Messages are often transformed (filtered) within
        the relay agent



2011 7 16                                                    17
What about Q4M?	

   Q4M itself is a message queue
   Can connect Q4M instances to create a
    message relay
   Provides API for creating message relays
    and brokers




2011 7 16                                  18
Performance of Q4M	

   over 7,000 mess/sec.
       message size: avg. 512 bytes
       syncing to disk
   Outperforming most needs
       if you need more, just scale out
       Can coexist with other storage engines without
        sacrificing their performance


      see http://labs.cybozu.co.jp/blog/kazuhoatwork/2008/06/q4m_06_release_and_benchmarks.php

2011 7 16                                                                                        19
Q4M in DeNA	

   uses Q4M for sending notifications
    asynchronously
                    http://engineer.dena.jp/2010/03/dena-technical-
                                                  seminar-1-2.html




2011 7 16                                                        20
Q4M in DeNA	

   Q4M
        2,000   /
                    DeNA
   

        




2011 7 16                   21
HandlerSocket Plugin	




2011 7 16                            22
Memcached                       	

   
        RDBMS                  /
        
   
        RDBMS
             
        
             Memcached                  RDBMS
        
             primary storage
2011 7 16                                        23
Memcached             	

   RDBMS
        
        

                   +
                        :
        
                  SQL


2011 7 16                         24
SQL
            (   )	




2011 7 16               25
Mycached	

   2009 8
   mysqld       memcached

                      memcached   get
                            get
                SQL   	




2011 7 16                                26
Mycached –                  	




                                                                             mycached	
            http://dev.mysql.com/doc/refman/5.1/en/pluggable-storage-overview.html             	
2011 7 16                                                                                 27
Mycached –           	

   1,200
   JSON, msgpack,

   Picoev               (I/O           )
       MySQL
                                (   )
       
             get
                    	

2011 7 16                               28
Mycached –           	

   SQL      40,000qps        	




2011 7 16                          29
Mycached   	

   

        




2011 7 16           30
HandlerSocket Plugin          	

   DeNA
       2010 8
       
       MySQL Contributor Award 2011
   MySQL           SQL

                  qps
                mycached

2011 7 16                              31
…   	




2011 7 16            32
…




2011 7 16       33
…
            …	




2011 7 16         34
…	
            …	
            …	



2011 7 16         35
2011 7 16        36
 
        
        
        
        
   



2011 7 16        37
HandlerSocket Plugin   	

   mycached
        
   
        FastEther
   




2011 7 16                                  38
2011 7 16        39
2011 7 16        40
–   	

   

        
   

   

                     ?	
2011 7 16                  41
–        	

   
        Server::Starter –
        Parallel::Prefork –

        Starlet –                  PSGI




2011 7 16                                  42
–                       	

   
        fork
                  : mod_bumpy_life (Apache)
        by hirose31++
        MaxRequestsPerChild
             


                       Parallel::Prefork

2011 7 16                                        43
–              	

   
            MaxRequestsPerChild
   
                  fork            …	




2011 7 16                                    44
–            : Slow Restart	

   
                                                fork                       	




               listen	
                                       accept	
                                 fork & exec	
                                  SIGUSR1	

                                                         accept	
 logic	
                                                            app.
              spawn
            app. servers	
       fork & exec	
                                                        app. logic	



              SIGHUP	
2011 7 16                                                                        45
–          OSS      	

              Perl               github
            CPAN
        
                     …	




2011 7 16                                  46
 Q.                         ?
  $SIG{HUP} = sub { $got_sig = 1 };
  …
  while (! $got_sig) {
    sleep(1000); //
  }




2011 7 16                             47
 Q.                         ?
  $SIG{HUP} = sub { $got_sig = 1 };
  …
  while (! $got_sig) {
    //                                1000
    sleep(1000); //
  }




2011 7 16                                    48
                              Parallel::Prefork
        
        
                 …
                :                     pselect
                         FAQ
                    : Perl   pselect
                     XS (Perl     C       )
                                Perl XS             	

2011 7 16                                                 49
OSS   DeNA   	




2011 7 16                 50
 Perl             …
        2009              Plack
             Perl       WSGI or Rack
        Furl (                              HTTP            )
                                            DeNA   id:xaicron


   

        MySQL

2011 7 16                                                        51
 
                                MySQL
        YAPC
        MySQL Conference
   
        
              : MySQL Casual
        
        
2011 7 16                                52
2011 7 16        53
 OSS
        
   
                 OSS

   

                      	
2011 7 16                   54

Más contenido relacionado

La actualidad más candente

Large customers want postgresql too !!
Large customers want postgresql too !!Large customers want postgresql too !!
Large customers want postgresql too !!rosensteel
 
Faster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzFaster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzJBug Italy
 
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...TelecomValley
 
Samba Optimization and Speed Tuning f...
Samba Optimization and Speed Tuning f...Samba Optimization and Speed Tuning f...
Samba Optimization and Speed Tuning f...wensheng wei
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixBruce Snyder
 
HTTP/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 IntroductionWalter Liu
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New EvolutionAllan Huang
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2Ido Flatow
 
Kea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCKea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCMen and Mice
 
SquirrelMail for webmail
SquirrelMail for webmailSquirrelMail for webmail
SquirrelMail for webmailAryman Gautam
 
PLNOG 4: Jens Link - IPv6 Address Assignment Considerations
PLNOG 4: Jens Link - IPv6 Address Assignment ConsiderationsPLNOG 4: Jens Link - IPv6 Address Assignment Considerations
PLNOG 4: Jens Link - IPv6 Address Assignment ConsiderationsPROIDEA
 
5503 cake php-tutorial-no-1-from-ibm
5503 cake php-tutorial-no-1-from-ibm5503 cake php-tutorial-no-1-from-ibm
5503 cake php-tutorial-no-1-from-ibmbalajipala
 
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureDevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureAngelo Failla
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishArun Gupta
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan Edstrom
 
Realtime applications with EmberJS and XMPP
Realtime applications with EmberJS and XMPPRealtime applications with EmberJS and XMPP
Realtime applications with EmberJS and XMPPrjvegasf
 

La actualidad más candente (20)

Large customers want postgresql too !!
Large customers want postgresql too !!Large customers want postgresql too !!
Large customers want postgresql too !!
 
Session11 Ucc Intro
Session11 Ucc IntroSession11 Ucc Intro
Session11 Ucc Intro
 
Faster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzFaster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzz
 
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
 
Samba Optimization and Speed Tuning f...
Samba Optimization and Speed Tuning f...Samba Optimization and Speed Tuning f...
Samba Optimization and Speed Tuning f...
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
 
HTTP/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 Introduction
 
WebSocket protocol
WebSocket protocolWebSocket protocol
WebSocket protocol
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New Evolution
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
NFS and Oracle
NFS and OracleNFS and Oracle
NFS and Oracle
 
Kea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCKea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISC
 
My First FD.io VPP
My First FD.io VPPMy First FD.io VPP
My First FD.io VPP
 
SquirrelMail for webmail
SquirrelMail for webmailSquirrelMail for webmail
SquirrelMail for webmail
 
PLNOG 4: Jens Link - IPv6 Address Assignment Considerations
PLNOG 4: Jens Link - IPv6 Address Assignment ConsiderationsPLNOG 4: Jens Link - IPv6 Address Assignment Considerations
PLNOG 4: Jens Link - IPv6 Address Assignment Considerations
 
5503 cake php-tutorial-no-1-from-ibm
5503 cake php-tutorial-no-1-from-ibm5503 cake php-tutorial-no-1-from-ibm
5503 cake php-tutorial-no-1-from-ibm
 
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureDevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFish
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
Realtime applications with EmberJS and XMPP
Realtime applications with EmberJS and XMPPRealtime applications with EmberJS and XMPP
Realtime applications with EmberJS and XMPP
 

Destacado

HTTP/2の課題と将来
HTTP/2の課題と将来HTTP/2の課題と将来
HTTP/2の課題と将来Kazuho Oku
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
OSS開発者を増やしたい!
OSS開発者を増やしたい!OSS開発者を増やしたい!
OSS開発者を増やしたい!Kouhei Sutou
 
20161122_How to start Recruiting Engineers_mercari_ishiguro
20161122_How to start Recruiting Engineers_mercari_ishiguro20161122_How to start Recruiting Engineers_mercari_ishiguro
20161122_How to start Recruiting Engineers_mercari_ishiguroTakaya Ishiguro
 
Kaizenがしてきた失敗に学ぶpm論 公開用
Kaizenがしてきた失敗に学ぶpm論 公開用Kaizenがしてきた失敗に学ぶpm論 公開用
Kaizenがしてきた失敗に学ぶpm論 公開用Kaizen Platform Inc.
 
プロダクトマネージャーにたちはだかる壁を、どう乗り越えるか
プロダクトマネージャーにたちはだかる壁を、どう乗り越えるかプロダクトマネージャーにたちはだかる壁を、どう乗り越えるか
プロダクトマネージャーにたちはだかる壁を、どう乗り越えるかMizuki Tanno
 
Transient v Persistent data on Twitter
Transient v Persistent data on TwitterTransient v Persistent data on Twitter
Transient v Persistent data on TwitterPaul Johnston
 
Product Development at the Smithsonian Libraries
Product Development at the Smithsonian LibrariesProduct Development at the Smithsonian Libraries
Product Development at the Smithsonian Librarieseclemrush
 
Two Options - One Virtual World
Two Options - One Virtual WorldTwo Options - One Virtual World
Two Options - One Virtual WorldMartin Rehm
 
Zelena čistka
Zelena čistkaZelena čistka
Zelena čistkaGavranica
 
Virtuous Spiral or Vicious Circle?
Virtuous Spiral or Vicious Circle?Virtuous Spiral or Vicious Circle?
Virtuous Spiral or Vicious Circle?Martin Rehm
 
Вебинары как новая интерактивная форма обучения
Вебинары как новая интерактивная форма обученияВебинары как новая интерактивная форма обучения
Вебинары как новая интерактивная форма обученияMoscow State University
 
Lyddie: Unit3 lesson7
Lyddie: Unit3 lesson7Lyddie: Unit3 lesson7
Lyddie: Unit3 lesson7Terri Weiss
 
香港六合彩 » SlideShare
香港六合彩 » SlideShare香港六合彩 » SlideShare
香港六合彩 » SlideSharepiwnioyh
 
ASP.NET MVC 3 in area of Javascript and Ajax improvement
ASP.NET MVC 3 in area of Javascript and Ajax improvementASP.NET MVC 3 in area of Javascript and Ajax improvement
ASP.NET MVC 3 in area of Javascript and Ajax improvementSuthep Sangvirotjanaphat
 
What's in a habitat?
What's in a habitat?What's in a habitat?
What's in a habitat?Russell Ogden
 
تفريغ دورة فريق العمل الفعال
تفريغ دورة فريق العمل الفعالتفريغ دورة فريق العمل الفعال
تفريغ دورة فريق العمل الفعالHani Al-Menaii
 
Shapes learning
Shapes  learningShapes  learning
Shapes learningGavranica
 

Destacado (20)

HTTP/2の課題と将来
HTTP/2の課題と将来HTTP/2の課題と将来
HTTP/2の課題と将来
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
OSS開発者を増やしたい!
OSS開発者を増やしたい!OSS開発者を増やしたい!
OSS開発者を増やしたい!
 
20161122_How to start Recruiting Engineers_mercari_ishiguro
20161122_How to start Recruiting Engineers_mercari_ishiguro20161122_How to start Recruiting Engineers_mercari_ishiguro
20161122_How to start Recruiting Engineers_mercari_ishiguro
 
Kaizenがしてきた失敗に学ぶpm論 公開用
Kaizenがしてきた失敗に学ぶpm論 公開用Kaizenがしてきた失敗に学ぶpm論 公開用
Kaizenがしてきた失敗に学ぶpm論 公開用
 
プロダクトマネージャーにたちはだかる壁を、どう乗り越えるか
プロダクトマネージャーにたちはだかる壁を、どう乗り越えるかプロダクトマネージャーにたちはだかる壁を、どう乗り越えるか
プロダクトマネージャーにたちはだかる壁を、どう乗り越えるか
 
Transient v Persistent data on Twitter
Transient v Persistent data on TwitterTransient v Persistent data on Twitter
Transient v Persistent data on Twitter
 
Corel
CorelCorel
Corel
 
Product Development at the Smithsonian Libraries
Product Development at the Smithsonian LibrariesProduct Development at the Smithsonian Libraries
Product Development at the Smithsonian Libraries
 
Two Options - One Virtual World
Two Options - One Virtual WorldTwo Options - One Virtual World
Two Options - One Virtual World
 
Zelena čistka
Zelena čistkaZelena čistka
Zelena čistka
 
Unit 1.4
Unit 1.4Unit 1.4
Unit 1.4
 
Virtuous Spiral or Vicious Circle?
Virtuous Spiral or Vicious Circle?Virtuous Spiral or Vicious Circle?
Virtuous Spiral or Vicious Circle?
 
Вебинары как новая интерактивная форма обучения
Вебинары как новая интерактивная форма обученияВебинары как новая интерактивная форма обучения
Вебинары как новая интерактивная форма обучения
 
Lyddie: Unit3 lesson7
Lyddie: Unit3 lesson7Lyddie: Unit3 lesson7
Lyddie: Unit3 lesson7
 
香港六合彩 » SlideShare
香港六合彩 » SlideShare香港六合彩 » SlideShare
香港六合彩 » SlideShare
 
ASP.NET MVC 3 in area of Javascript and Ajax improvement
ASP.NET MVC 3 in area of Javascript and Ajax improvementASP.NET MVC 3 in area of Javascript and Ajax improvement
ASP.NET MVC 3 in area of Javascript and Ajax improvement
 
What's in a habitat?
What's in a habitat?What's in a habitat?
What's in a habitat?
 
تفريغ دورة فريق العمل الفعال
تفريغ دورة فريق العمل الفعالتفريغ دورة فريق العمل الفعال
تفريغ دورة فريق العمل الفعال
 
Shapes learning
Shapes  learningShapes  learning
Shapes learning
 

Similar a History and Design of the Q4M Message Queue Plugin for MySQL

Using Q4M - a message queue for MySQL #osdc.tw
Using Q4M - a message queue for MySQL #osdc.twUsing Q4M - a message queue for MySQL #osdc.tw
Using Q4M - a message queue for MySQL #osdc.twKazuho Oku
 
Hyper v.nu-windows serverhyperv-networkingevolved
Hyper v.nu-windows serverhyperv-networkingevolvedHyper v.nu-windows serverhyperv-networkingevolved
Hyper v.nu-windows serverhyperv-networkingevolvedhypervnu
 
Mpls conference 2016-data center virtualisation-11-march
Mpls conference 2016-data center virtualisation-11-marchMpls conference 2016-data center virtualisation-11-march
Mpls conference 2016-data center virtualisation-11-marchAricent
 
LS11 SHOW202 - Enterprise 2.0 Hero - a Beginner's Guide to Installing IBM Lot...
LS11 SHOW202 - Enterprise 2.0 Hero - a Beginner's Guide to Installing IBM Lot...LS11 SHOW202 - Enterprise 2.0 Hero - a Beginner's Guide to Installing IBM Lot...
LS11 SHOW202 - Enterprise 2.0 Hero - a Beginner's Guide to Installing IBM Lot...Stuart McIntyre
 
Mellanox hpc day 2011 kiev
Mellanox hpc day 2011 kievMellanox hpc day 2011 kiev
Mellanox hpc day 2011 kievVolodymyr Saviak
 
HPCMPUG2011 cray tutorial
HPCMPUG2011 cray tutorialHPCMPUG2011 cray tutorial
HPCMPUG2011 cray tutorialJeff Larkin
 
SLES 11 SP2 PerformanceEvaluation for Linux on System z
SLES 11 SP2 PerformanceEvaluation for Linux on System zSLES 11 SP2 PerformanceEvaluation for Linux on System z
SLES 11 SP2 PerformanceEvaluation for Linux on System zIBM India Smarter Computing
 
MySQL Cluster performance best practices
MySQL Cluster performance best practicesMySQL Cluster performance best practices
MySQL Cluster performance best practicesMat Keep
 
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...OpenStack Korea Community
 
Froscon2011: How i learned to use sql and then learned not to use it
Froscon2011:  How i learned to use sql and then learned not to use itFroscon2011:  How i learned to use sql and then learned not to use it
Froscon2011: How i learned to use sql and then learned not to use itHenrik Ingo
 
Mysql User Camp : 20th June - Mysql New Features
Mysql User Camp : 20th June - Mysql New FeaturesMysql User Camp : 20th June - Mysql New Features
Mysql User Camp : 20th June - Mysql New FeaturesTarique Saleem
 
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
 Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL SupportMysql User Camp
 
Unikraft: Fast, Specialized Unikernels the Easy Way
Unikraft: Fast, Specialized Unikernels the Easy WayUnikraft: Fast, Specialized Unikernels the Easy Way
Unikraft: Fast, Specialized Unikernels the Easy WayScyllaDB
 
Design and implementation of a reliable and cost-effective cloud computing in...
Design and implementation of a reliable and cost-effective cloud computing in...Design and implementation of a reliable and cost-effective cloud computing in...
Design and implementation of a reliable and cost-effective cloud computing in...Francesco Taurino
 
Thu 1100 duncan_john_color
Thu 1100 duncan_john_colorThu 1100 duncan_john_color
Thu 1100 duncan_john_colorDATAVERSITY
 
Memsql product overview_2013
Memsql product overview_2013Memsql product overview_2013
Memsql product overview_2013Khazret Sapenov
 
ELCE 2011 - BZ - Embedded Linux Optimization Techniques - How Not To Be Slow
ELCE 2011 - BZ - Embedded Linux Optimization Techniques - How Not To Be SlowELCE 2011 - BZ - Embedded Linux Optimization Techniques - How Not To Be Slow
ELCE 2011 - BZ - Embedded Linux Optimization Techniques - How Not To Be SlowBenjamin Zores
 
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Enterprise Java in 2012 and Beyond, by Juergen Hoeller Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Enterprise Java in 2012 and Beyond, by Juergen Hoeller Codemotion
 
The Modern Telco Network: Defining The Telco Cloud
The Modern Telco Network: Defining The Telco CloudThe Modern Telco Network: Defining The Telco Cloud
The Modern Telco Network: Defining The Telco CloudMarco Rodrigues
 

Similar a History and Design of the Q4M Message Queue Plugin for MySQL (20)

Using Q4M - a message queue for MySQL #osdc.tw
Using Q4M - a message queue for MySQL #osdc.twUsing Q4M - a message queue for MySQL #osdc.tw
Using Q4M - a message queue for MySQL #osdc.tw
 
Hyper v.nu-windows serverhyperv-networkingevolved
Hyper v.nu-windows serverhyperv-networkingevolvedHyper v.nu-windows serverhyperv-networkingevolved
Hyper v.nu-windows serverhyperv-networkingevolved
 
Mpls conference 2016-data center virtualisation-11-march
Mpls conference 2016-data center virtualisation-11-marchMpls conference 2016-data center virtualisation-11-march
Mpls conference 2016-data center virtualisation-11-march
 
LS11 SHOW202 - Enterprise 2.0 Hero - a Beginner's Guide to Installing IBM Lot...
LS11 SHOW202 - Enterprise 2.0 Hero - a Beginner's Guide to Installing IBM Lot...LS11 SHOW202 - Enterprise 2.0 Hero - a Beginner's Guide to Installing IBM Lot...
LS11 SHOW202 - Enterprise 2.0 Hero - a Beginner's Guide to Installing IBM Lot...
 
Mellanox hpc day 2011 kiev
Mellanox hpc day 2011 kievMellanox hpc day 2011 kiev
Mellanox hpc day 2011 kiev
 
HPCMPUG2011 cray tutorial
HPCMPUG2011 cray tutorialHPCMPUG2011 cray tutorial
HPCMPUG2011 cray tutorial
 
SLES 11 SP2 PerformanceEvaluation for Linux on System z
SLES 11 SP2 PerformanceEvaluation for Linux on System zSLES 11 SP2 PerformanceEvaluation for Linux on System z
SLES 11 SP2 PerformanceEvaluation for Linux on System z
 
MySQL Cluster performance best practices
MySQL Cluster performance best practicesMySQL Cluster performance best practices
MySQL Cluster performance best practices
 
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
 
Froscon2011: How i learned to use sql and then learned not to use it
Froscon2011:  How i learned to use sql and then learned not to use itFroscon2011:  How i learned to use sql and then learned not to use it
Froscon2011: How i learned to use sql and then learned not to use it
 
Mysql User Camp : 20th June - Mysql New Features
Mysql User Camp : 20th June - Mysql New FeaturesMysql User Camp : 20th June - Mysql New Features
Mysql User Camp : 20th June - Mysql New Features
 
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
 Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL Support
 
Unikraft: Fast, Specialized Unikernels the Easy Way
Unikraft: Fast, Specialized Unikernels the Easy WayUnikraft: Fast, Specialized Unikernels the Easy Way
Unikraft: Fast, Specialized Unikernels the Easy Way
 
Design and implementation of a reliable and cost-effective cloud computing in...
Design and implementation of a reliable and cost-effective cloud computing in...Design and implementation of a reliable and cost-effective cloud computing in...
Design and implementation of a reliable and cost-effective cloud computing in...
 
Thu 1100 duncan_john_color
Thu 1100 duncan_john_colorThu 1100 duncan_john_color
Thu 1100 duncan_john_color
 
Memsql product overview_2013
Memsql product overview_2013Memsql product overview_2013
Memsql product overview_2013
 
HP Virtual Connect technical fundamental101 v2.1
HP Virtual Connect technical fundamental101   v2.1HP Virtual Connect technical fundamental101   v2.1
HP Virtual Connect technical fundamental101 v2.1
 
ELCE 2011 - BZ - Embedded Linux Optimization Techniques - How Not To Be Slow
ELCE 2011 - BZ - Embedded Linux Optimization Techniques - How Not To Be SlowELCE 2011 - BZ - Embedded Linux Optimization Techniques - How Not To Be Slow
ELCE 2011 - BZ - Embedded Linux Optimization Techniques - How Not To Be Slow
 
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Enterprise Java in 2012 and Beyond, by Juergen Hoeller Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
 
The Modern Telco Network: Defining The Telco Cloud
The Modern Telco Network: Defining The Telco CloudThe Modern Telco Network: Defining The Telco Cloud
The Modern Telco Network: Defining The Telco Cloud
 

Más de Kazuho Oku

HTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときHTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときKazuho Oku
 
QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7Kazuho Oku
 
Reorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondReorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondKazuho Oku
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsivenessKazuho Oku
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsivenessKazuho Oku
 
Developing the fastest HTTP/2 server
Developing the fastest HTTP/2 serverDeveloping the fastest HTTP/2 server
Developing the fastest HTTP/2 serverKazuho Oku
 
TLS & LURK @ IETF 95
TLS & LURK @ IETF 95TLS & LURK @ IETF 95
TLS & LURK @ IETF 95Kazuho Oku
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向Kazuho Oku
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先Kazuho Oku
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Kazuho Oku
 
HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計Kazuho Oku
 
H2O - making the Web faster
H2O - making the Web fasterH2O - making the Web faster
H2O - making the Web fasterKazuho Oku
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP betterKazuho Oku
 
H2O - the optimized HTTP server
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP serverKazuho Oku
 
JSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedJSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedKazuho Oku
 
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法Kazuho Oku
 
JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013Kazuho Oku
 
Using the Power to Prove
Using the Power to ProveUsing the Power to Prove
Using the Power to ProveKazuho Oku
 
JSX - 公開から1年を迎えて
JSX - 公開から1年を迎えてJSX - 公開から1年を迎えて
JSX - 公開から1年を迎えてKazuho Oku
 
JSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebJSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebKazuho Oku
 

Más de Kazuho Oku (20)

HTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときHTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないとき
 
QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7
 
Reorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondReorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and Beyond
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsiveness
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsiveness
 
Developing the fastest HTTP/2 server
Developing the fastest HTTP/2 serverDeveloping the fastest HTTP/2 server
Developing the fastest HTTP/2 server
 
TLS & LURK @ IETF 95
TLS & LURK @ IETF 95TLS & LURK @ IETF 95
TLS & LURK @ IETF 95
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5
 
HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計
 
H2O - making the Web faster
H2O - making the Web fasterH2O - making the Web faster
H2O - making the Web faster
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP better
 
H2O - the optimized HTTP server
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP server
 
JSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedJSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons Learned
 
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法
 
JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013
 
Using the Power to Prove
Using the Power to ProveUsing the Power to Prove
Using the Power to Prove
 
JSX - 公開から1年を迎えて
JSX - 公開から1年を迎えてJSX - 公開から1年を迎えて
JSX - 公開から1年を迎えて
 
JSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebJSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the Web
 

Último

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Último (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

History and Design of the Q4M Message Queue Plugin for MySQL

  • 1.
  • 2.     CTO 2011 7 16 2
  • 3.  Palmscape  1997 Xiino  Palm OS ( )  IBM WorkPad, Sony CLIE  NTT DoCoMo  M.I.T. TR100/2002    Web  IPA 2004 – 2011 7 16 3
  • 4. (2)   :  2005 8 2010 11  Japanize  Web UI      Q4M   (MySQL ) 2011 7 16 4
  • 5. (3)   :  2010 11   IT  2011 5 CTO 2011 7 16 5
  • 6.   DeNA   OSS  DeNA OSS   2011 7 16 6
  • 9. What is Q4M?  A message queue  runs as a storage plugin of MySQL 5.1  Why is it a MySQL plugin?  accessible by using existing MySQL clients  no need for a new client library  administrable by using SQL  friendly to DB admins  First release: Jan 2008 2011 7 16 9
  • 10. Design Goals of Q4M  Robust  Does not lose data on OS crash or power failure  necessary for Tokyo wo. nuclear power plants… orz  Fast  Transfer thousands of messages per second  Easy to Use  Use SQL for access / maintenance  Integration into MySQL  no more separate daemons to take care of 2011 7 16 10
  • 11. Users of Q4M  Many leading web services in Japan  DeNA Co., Ltd.  livedoor Co., Ltd.  mixi, Inc.  Zynga Japan (formerly Unoh, Inc.) 2011 7 16 11
  • 12. What is a Message Queue? 2011 7 16 12
  • 13. What is a Message Queue?  Middleware for persistent asynchronous communication  communicate between fixed pairs (parties)  a.k.a. Message Oriented Middleware  MQ is intermediate storage  RDBMS is persistent storage  Senders / receivers may go down 2011 7 16 13
  • 14. Minimal Configuration of a Message Queue  Senders and receivers access a single queue Sender Receiver Queue 2011 7 16 14
  • 15. Using MQ as a Relay  Separate queue for sender and receiver  Messages relayed between queues Relay Sender Receiver Queue Queue 2011 7 16 15
  • 16. Merits of using Message Relays  Destination can be changed easily  Relays may transfer messages to different locations depending on their headers  Robustness against network failure  no loss or duplicates when the relay fails  Logging and Multicasting, etc. 2011 7 16 16
  • 17. Message Brokers  Publish / subscribe model  Separation between components and their integration  Components read / write to predefined queues  Integration is definition of routing rules between the message queues  Messages are often transformed (filtered) within the relay agent 2011 7 16 17
  • 18. What about Q4M?  Q4M itself is a message queue  Can connect Q4M instances to create a message relay  Provides API for creating message relays and brokers 2011 7 16 18
  • 19. Performance of Q4M  over 7,000 mess/sec.  message size: avg. 512 bytes  syncing to disk  Outperforming most needs  if you need more, just scale out  Can coexist with other storage engines without sacrificing their performance see http://labs.cybozu.co.jp/blog/kazuhoatwork/2008/06/q4m_06_release_and_benchmarks.php 2011 7 16 19
  • 20. Q4M in DeNA  uses Q4M for sending notifications asynchronously http://engineer.dena.jp/2010/03/dena-technical- seminar-1-2.html 2011 7 16 20
  • 21. Q4M in DeNA  Q4M  2,000 /   DeNA     2011 7 16 21
  • 23. Memcached    RDBMS /      RDBMS      Memcached RDBMS    primary storage 2011 7 16 23
  • 24. Memcached  RDBMS       +   :     SQL 2011 7 16 24
  • 25. SQL ( ) 2011 7 16 25
  • 26. Mycached  2009 8  mysqld memcached   memcached get   get   SQL 2011 7 16 26
  • 27. Mycached – mycached http://dev.mysql.com/doc/refman/5.1/en/pluggable-storage-overview.html 2011 7 16 27
  • 28. Mycached –  1,200  JSON, msgpack,  Picoev (I/O )  MySQL ( )    get 2011 7 16 28
  • 29. Mycached –  SQL 40,000qps 2011 7 16 29
  • 30. Mycached     2011 7 16 30
  • 31. HandlerSocket Plugin  DeNA  2010 8    MySQL Contributor Award 2011  MySQL SQL   qps   mycached 2011 7 16 31
  • 32. 2011 7 16 32
  • 34. … 2011 7 16 34
  • 35. … … 2011 7 16 35
  • 36. 2011 7 16 36
  • 37.             2011 7 16 37
  • 38. HandlerSocket Plugin  mycached      FastEther   2011 7 16 38
  • 39. 2011 7 16 39
  • 40. 2011 7 16 40
  • 41.         ? 2011 7 16 41
  • 42.    Server::Starter –  Parallel::Prefork –  Starlet – PSGI 2011 7 16 42
  • 43.    fork   : mod_bumpy_life (Apache)  by hirose31++  MaxRequestsPerChild     Parallel::Prefork 2011 7 16 43
  • 44.   MaxRequestsPerChild   fork … 2011 7 16 44
  • 45. : Slow Restart     fork listen accept fork & exec SIGUSR1 accept logic app. spawn app. servers fork & exec app. logic SIGHUP 2011 7 16 45
  • 46. OSS   Perl github CPAN     … 2011 7 16 46
  • 47.  Q. ? $SIG{HUP} = sub { $got_sig = 1 }; … while (! $got_sig) { sleep(1000); // } 2011 7 16 47
  • 48.  Q. ? $SIG{HUP} = sub { $got_sig = 1 }; … while (! $got_sig) { // 1000 sleep(1000); // } 2011 7 16 48
  • 49.   Parallel::Prefork     …   : pselect   FAQ   : Perl pselect   XS (Perl C )   Perl XS 2011 7 16 49
  • 50. OSS DeNA 2011 7 16 50
  • 51.  Perl …  2009 Plack  Perl WSGI or Rack  Furl ( HTTP )   DeNA id:xaicron    MySQL 2011 7 16 51
  • 52.     MySQL  YAPC  MySQL Conference       : MySQL Casual     2011 7 16 52
  • 53. 2011 7 16 53
  • 54.  OSS     OSS     2011 7 16 54