Monkey Eduardo Silva ( edsiper ) [email protected] Jonathan Gonzalez ( Zeus ) [email protected] HTTP Server everywhere
Oct 20, 2014
Monkey
Eduardo Silva ( edsiper )[email protected]
Jonathan Gonzalez ( Zeus )[email protected]
HTTP Server everywhere
< Project Goals >
● Community !● Embedded in mind● Small core / Lightweight● Fast● Flexible API ● Linux Kernel
< General Features >
● HTTP/1.1● Events oriented (async sockets)● Indented configuration● Ready for Embedded
< Hardware Support >
● x86● x64● ARM
< HTTP Client/Server Flow >
< Monkey Architecture >
Indented Configuration
< WORKERS >
● Scheduler
● Clock
< Worker: Scheduler >
“Assign new client connection to a worker thread...”
< Worker: Scheduler >
< Worker: Clock >
“Keep in a global variable the current unix time and also a human readable time format as required per HTTP protocol...”
< Worker: Clock >
< Layer Models >
● OSI : O. System Inter 7 layers ● TCP/IP : Internet 4 layers● MOL : Monkey Layers 3 layers
< Monkey Layers >
< Layer / Networking >
“Expose connectivity capabilities, in a few words: sockets support...”
< Layer / Networking >
< Layer / Events >
“Expose hooks for socket events...”
< Layer / Events >
< Layer / Stages >
“Specify the cycles of an HTTP connection and expose hooks for them...”
< Layer / Stages >
Plugins
< Logger Plugin >
< Logger Plugin >
< Mandril Plugin >
Security
< Mandril Security Plugin >
< Liana Plugin >
Connectivity
< Liana Plugin >
SSL ?
...Yes!
using MatrixSSL
< Liana SSL Plugin >
Liana 6IPv6 Support
< IPv6 Plugin >
HTML5Web Sockets
< WebSockets Plugin >
Palm Plugin & App Server
< Palm Plugin & App Server >
< Benchmark >
< Benchmark >
Apache Benchmark
Archivo : 100 bytes
NginX : v1.0 port = 2002Cherokee : v1.2.2 port = 2003Apache2 : v2.2.17 port = 80Monkey : v0.14.0 port = 2001
ab -n 15000 -c 20 -k http://localhost/100b.txt
< Requests/Second >
Monkey NginX Cherokee Apache0
5000
10000
15000
20000
25000
30000
Requests/Second
< Memory Usage >
Monkey NginX Cherokee0
200
400
600
800
1000
1200
1400
1600
Uso de Memoria
< List of features>
● HTTP/1.1● Virtual Hosts● IPv4 & IPv6● SSL● Security● Log writer
● Basic Auth● Directory Listing● CGI / Palm● Websockets● Shell
< To Do List >
● FastCGI
● NoSQL !
● URL Rewrite
● Improve Docs!
< Get Involved ! >
● Community
● Beta Testers
● Art Work
● Documentation
● Coding
Q & A
Eduardo Silva ( edsiper ) Jonathan Gonzalez ( Zeus)[email protected] [email protected]