66

Perepelitsa

Embed Size (px)

Citation preview

Page 1: Perepelitsa
Page 2: Perepelitsa

Современная разработка в Mail.ru

На Perl и не только

Page 3: Perepelitsa

Myth

es Perl 5.6 Apache 1

CGI

?

Page 4: Perepelitsa
Page 5: Perepelitsa

How many servers enough to process

100k requests per second

with 0.01s delay?

The q

uestio

n

Page 6: Perepelitsa

Users

Page 7: Perepelitsa

Read

email

Page 8: Perepelitsa

An

d w

ant

Page 9: Perepelitsa

An

d w

ant avatars

Page 10: Perepelitsa

From

everywh

ere

Page 11: Perepelitsa

Man

y

4Krps

Page 12: Perepelitsa

An

d fast

4Krps

0.01s

Page 13: Perepelitsa

Filin

Intro

du

ce: Filin

4Krps

Сервер на C, который отдает

аватарки и иконки

Page 14: Perepelitsa

Wh

at the so

urce

?

Page 15: Perepelitsa

Ow

n…

Page 16: Perepelitsa

Mail, Fb

, Ok, G

ravatar, ICQ

, …

… … …

Page 17: Perepelitsa

Filin

Ow

n d

ata on

disk

4Krps

disk

1K

rps

Page 18: Perepelitsa

Filin

Wh

ere the o

thers?

4Krps 3Krps

disk

1K

rps

?

Page 19: Perepelitsa

Filin

Co

den

ame “A

vatard”

4Krps 3Krps

Сервис, умеющий искать и отдавать аватарки. Быстро

disk

1K

rps

Page 20: Perepelitsa

IProto

Filin

HT

TP – O

verhead

. IPro

to!

4Krps 3Krps

disk

1K

rps

struct packet { uint32_t type, uint32_t length, uint32_t sequence, char[] data }

Page 21: Perepelitsa

Srv

IProto

Filin

Avatard

insid

e: the server

4Krps 3Krps

Page 22: Perepelitsa

Srv

Srv

IProto

Filin

Avatard

: servers

4Krps 3Krps

Page 23: Perepelitsa

DB Srv

Srv

IProto

Filin

Take data fro

m d

atabase

4Krps 3Krps

Page 24: Perepelitsa

M Srv

Srv

IProto

Filin

Rep

licated

4Krps 3Krps S

Page 25: Perepelitsa

M1 Srv

Srv

S1

Mn Sn

IProto

Filin

Of co

urse, sh

arded

4Krps 3Krps

Tarantool

Page 26: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

IProto

Filin

Bu

t wh

ere they fro

m?

4Krps 3Krps

Tarantool

очередь

Page 27: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

IProto

Filin

From

the in

ternet )

4Krps

3Krps

Res

Tarantool

Page 28: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

IProto

HTTP

Filin

Svc

Som

e HT

TP R

equ

ests

4Krps

3Krps

3Krps

Res

Tarantool

Page 29: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

IProto

HTTP

Filin

Svc

Go

t a pro

blem

!

4Krps

3Krps

3Krps

Res

Tarantool

0.01s

3s

1.5s

2.5s

Page 30: Perepelitsa

Ho

w em

ail wo

rks?

письмо SMTP Server

SMTP Mail.ru

Хранилище

http://e.mail.ru

Агент Mail.ru

Письмо или список писем

Когда узнаем

Когда показываем

+ аватарки

Page 31: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Filin

Svc

MTA

Imp

rove!

4Krps

5Krps

disk …

3Krps

3Krps

5Krps Res

Tarantool

>>3s

Page 32: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

IProto

IProto

HTTP

Filin

Svc

MTA

Secon

d p

rob

lem: R

AM

4Krps

5Krps

3Krps

3Krps

5Krps Res

Tarantool

Page 33: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Filin

Svc

MTA

RA

M is n

ot ru

bb

er. Use d

isk

4Krps

5Krps

disk …

3Krps

3Krps

5Krps Res

Tarantool

Зачем хранить в памяти неиспользуемые?

Page 34: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Filin

Svc

MTA

Well d

on

e!

4Krps

5Krps

disk …

3Krps

3Krps

5Krps Res

Tarantool

Page 35: Perepelitsa

Language?

Page 36: Perepelitsa

C?

Page 37: Perepelitsa

Avo

id it

Page 38: Perepelitsa

Perl! TIMTOWTDI

Page 39: Perepelitsa

Fast dev early deploy

Page 40: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

langu

age!

Res

Perl 7!

Page 41: Perepelitsa

Well kn

ow

n Perl 5

.

Page 42: Perepelitsa

Perl 6. O

’RLY?

Page 43: Perepelitsa

Perl 7! N

ow

!

Page 44: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

langu

age!

Res

Perl 7! (5.16)

Page 45: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent

Page 46: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent IProto::Server

Page 47: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent IProto::Server (40k rps/core)

Page 48: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent IProto::Server (40k rps/core) HTTP::Server

Page 49: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent IProto::Server (40k rps/core) HTTP::Server (8k rps/core)

Page 50: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent IProto::Server (40k rps/core) HTTP::Server (8k rps/core) Tarantool

Page 51: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent IProto::Server (40k rps/core) HTTP::Server (8k rps/core) Tarantool HTTP

Page 52: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent IProto::Server (40k rps/core) HTTP::Server (8k rps/core) Tarantool HTTP EV

Page 53: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Mo

dern

async fram

efork!

Res

Perl 7! AnyEvent IProto::Server (40k rps/core) HTTP::Server (8k rps/core) Tarantool HTTP EV XS

Page 54: Perepelitsa

Sou

rces availab

le

Perl 7! AnyEvent IProto::Server (40k rps/core) HTTP::Server (8k rps/core) Tarantool HTTP EV XS

github.com/Mons/AnyEvent-IProto

github.com/Mons/AnyEvent-HTTP-Server-II

Twiggy, Twisted,

Node.js,

(but not nginx ;)

Faster than

Page 55: Perepelitsa

Perl 5.6? Perl 5.6!

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

Res

Perl 7!

Apache! Apache?

CGI! CGI?

Page 56: Perepelitsa

Perl 5.1

6 vs Perl 5

.8

- Released 11.03.2013 - Lower memory usage up to 25% - Lower CPU usage up to 10% - The best Unicode 6 support - Many modern features - Latest libraries - Support for new libraries - No old bugs - New regular expression - Async frameworks - Green threads

Perl 5.16 - Released 31.01.2006 - Buggy - Obsoleted!

Perl 5.8

Page 57: Perepelitsa

Database?

Page 58: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

No

SQL D

atabase

Res

Tarantool

Tarantool - High performance - Latest stable - Built in Lua - Multiple indexes - Composite indexes

Page 59: Perepelitsa

M1 Srv

Srv

Que

S1

Mn Sn

swp

IProto

IProto

HTTP

An

d also

qu

eue

Res

Tarantool

Tarantool - High performance - Latest stable - Built in Lua - Multiple indexes - Composite indexes - Lua-based queue

Page 60: Perepelitsa

How many servers enough to process

100k requests per second

with 0.01s delay?

So, th

e qu

estion

Page 61: Perepelitsa

The an

swer is…

Page 62: Perepelitsa

Mo

re correct an

swer ;)

Page 63: Perepelitsa

Profit: effective highload IProto: 120k rps / server

HTTP: 40k rps / server

Fast development – early deploy

Page 64: Perepelitsa

Profit: effective highload

1400% reservation

Page 65: Perepelitsa

Appliance High performance applications

U Complex logic with many data sources

Page 66: Perepelitsa

Mons Anderson

Р у к о в о д и т ел ь о тд ел а , П о ч т а @ M a i l . r u

< m o n s @ c p a n . o r g >

< v. p e r e p e l i t s a @ c o r p . m a i l . r u >