Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mongrel 2
Search
Will Speak
March 30, 2016
Technology
0
100
Mongrel 2
A quick introduction to the Mongrel 2 webserver protocol.
Will Speak
March 30, 2016
Tweet
Share
More Decks by Will Speak
See All by Will Speak
Opening your First Pull Request
iwillspeak
0
320
A Rusty Guide to Types and Safety
iwillspeak
0
180
Object Recognition with Grassmannian Manifolds
iwillspeak
0
100
Other Decks in Technology
See All in Technology
使いにくいの壁を突破する
sansantech
PRO
1
120
入社1ヶ月でデータパイプライン講座を作った話
waiwai2111
1
250
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
330
データ民主化のための LLM 活用状況と課題紹介(IVRy の場合)
wxyzzz
2
670
Tebiki Engineering Team Deck
tebiki
0
24k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
140
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
120
2026年はチャンキングを極める!
shibuiwilliam
9
1.9k
Deno・Bunの標準機能やElysiaJSを使ったWebSocketサーバー実装 / ラーメン屋を貸し切ってLT会! IoTLT 2026新年会
you
PRO
0
300
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
680
Claude Code のすすめ
schroneko
67
210k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
97
Are puppies a ranking factor?
jonoalderson
1
2.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
200
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
Visualization
eitanlees
150
17k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Mind Mapping
helmedeiros
PRO
0
78
Transcript
MONGREL 2 Will Speak
A STORY or how Mongrel 2 came to be
RAGEL in the beginning there was the state machine compiler
RAGEL STATE MACHINE COMPILER ⇒ Compiles state machines into code
tokenising, regex & parser combines
fast and efficient parsing
MONGREL then came a
Ruby webserver Rock solid HTTP parser Easily scalable
ØMQ along came a whole lot of nothing
Provides a brokerless messaging architecture where clients and servers communicate
via a Berkeley Sockets style interface “
a standard socket looks just like
a standard socket far more than
MONGREL 2 Add them all together and you get
fast and efficient parsing tried and tested HTTP support brokerless
scalability from Mongrel Ragel ZeroMQ
fast and efficient parsing tried and tested HTTP support brokerless
scalability from Mongrel Ragel ZeroMQ
fast and efficient parsing tried and tested HTTP support brokerless
scalability from Mongrel Ragel ZeroMQ
synchronous http requests offloads
persistent state async protocols &
A PROTOCOL or what Mongrel 2 can do for us
REQUEST/RESPONSE a millisecond in the life of a mongre2 request
None
Request 1 Server IIS-01 Headers { “method”: “post”, … }
Path /LockedQueueNoSql Body { “name”: “willspeak”, “affiliates”: [ …. ]}
Request 1 Server IIS-01 Headers { “method”: “post”, … }
Path /LockedQueueNoSql Body { “name”: “willspeak”, “affiliates”: [ …. ]}
Request 1 Server IIS-01 Response [ { … }, {
… }, …. ]
Request 1 Server IIS-01 Response [ { … }, {
… }, …. ]
None
None
None
None
None
NETSTRINGS simple data serialisation
12:hello world!, prefixed by length data encoded as UTF-8 assemble
the delimiter committee
PACKETS inside the envelope
12:hello world!, prefixed by length data encoded as UTF-8 assemble
the delimiter committee
REQUEST PACKET FORMAT IIS-01 1 hello/world 2:{},4:body, webserver id requested
path numeric request id netstring encoded json request headers netstring encoded request body
RESPONSE PACKET FORMAT IIS-01 1:1, hello Mongrel2 webserver id response
data space-separated netstring of response ids
DEMO what you’ve all been waiting for
USEFUL LINKS Mongrel 2 http://mongrel2.org/ https://github.com/mongrel2/mongrel2 Ragel http://www.colm.net/open-source/ragel/ http://zedshaw.com/archive/ragel-state-charts/ ØMQ
http://zeromq.org/ http://netmq.readthedocs.org/ netstrings https://cr.yp.to/proto/netstrings.txt