Slide 1

Slide 1 text

构ݐ䇗㑊తAPI෰务 ԫࢤහ Sunday, May 12, 13

Slide 2

Slide 2 text

ࣗզհ绍 ࣗ༝职业ऀ 䇖ݯ爱޷ऀ flyerhzm at github, twitter, gmail, etc. Sunday, May 12, 13

Slide 3

Slide 3 text

䇖发᠓᜾తୈҰ选择 Sunday, May 12, 13

Slide 4

Slide 4 text

Rails 䇖发շ଎ 䇖发ऀ众ଟ ࣾ۠庞େ Sunday, May 12, 13

Slide 5

Slide 5 text

Rails ֶ习੒ຊߴ 运ߦ଎౓ຫ 惯ᆀఔং员 Sunday, May 12, 13

Slide 6

Slide 6 text

޳୺䘦છHTMLඇৗຫ Sunday, May 12, 13

Slide 7

Slide 7 text

JSON API෰务኷շ Sunday, May 12, 13

Slide 8

Slide 8 text

API෰务 对֎ఏڙ઀ޱ 单页໘应༻ ʢJavascript MVCʣ ٬户୺应༻ ʢiOSɼAndroidʣ Sunday, May 12, 13

Slide 9

Slide 9 text

CPU VS IO Sunday, May 12, 13

Slide 10

Slide 10 text

ଟ进ఔ ॆ෼ར༻ଟ֩ 稳ఆɼ݈૖ ಺ଘ䇖销େ ʢcopy on writeʣ 进ఔ间੾换䇖销େ Sunday, May 12, 13

Slide 11

Slide 11 text

ଟ线ఔ 资ݯڞڗɼ节ল಺ଘ 线ఔ间੾换䇖销૬对较খ GILᏠ๏ར༻ଟ֩ ʢJRubyʣ 线ఔ锁问题 Sunday, May 12, 13

Slide 12

Slide 12 text

ଟ进ఔ + ଟ线ఔ Sunday, May 12, 13

Slide 13

Slide 13 text

䇗㑊ඇ્࠹I/O Sunday, May 12, 13

Slide 14

Slide 14 text

Node.jsʁ Sunday, May 12, 13

Slide 15

Slide 15 text

EventMachine Sunday, May 12, 13

Slide 16

Slide 16 text

EMత᠍఺ վ变编ఔ习惯 ଠଟճ调 Sunday, May 12, 13

Slide 17

Slide 17 text

EMత᠍఺ Sunday, May 12, 13

Slide 18

Slide 18 text

EventMachine + Fiber = EM::Synchrony Sunday, May 12, 13

Slide 19

Slide 19 text

EM::Synchrony Sunday, May 12, 13

Slide 20

Slide 20 text

EM::Synchrony Sunday, May 12, 13

Slide 21

Slide 21 text

EM::Synchrony ࣸಉ㑊త୅码 运ߦ䇗㑊త୅码 Sunday, May 12, 13

Slide 22

Slide 22 text

ଟ进ఔ + evented Sunday, May 12, 13

Slide 23

Slide 23 text

OpenFeintత经验 Sunday, May 12, 13

Slide 24

Slide 24 text

OpenFeintʢഉߦᒗʣ ଟ进ఔ (REE 1.8.7 Mysql) 1.5k rps (6进ఔ * 13صثʣ=> 20 rps / 进 ఔ Sunday, May 12, 13

Slide 25

Slide 25 text

OpenFeintʢഉߦᒗʣ ଟ线ఔ ʢJRuby 1.7.0 Mysqlʣ 1.5k rps (6线ఔ * 1进ఔ * 10صثʣ=> 25 rps / 线ఔ Sunday, May 12, 13

Slide 26

Slide 26 text

GREEʢഉߦᒗʣ Goliath (Ruby 1.9.3 Mysql + Redis) 4k rps (4进ఔ * 4صثʣ=> 250 rps / 进ఔ 90% CPU / 进ఔ 50M / 进ఔ Sunday, May 12, 13

Slide 27

Slide 27 text

ੑೳ测试 ೚Կجဋhello worldతੑೳ测试౎ੋ䳭ྲྀᔁ Sunday, May 12, 13

Slide 28

Slide 28 text

ഉߦᒗ API https:/ /github.com/flyerhzm/apis-bench Sunday, May 12, 13

Slide 29

Slide 29 text

rails / rails-api sinatra grape sinatra + sinatra-synchrony grape + goliath ඇ્࠹IO ્࠹IO Sunday, May 12, 13

Slide 30

Slide 30 text

rails Sunday, May 12, 13

Slide 31

Slide 31 text

rails-api Sunday, May 12, 13

Slide 32

Slide 32 text

sinatra Sunday, May 12, 13

Slide 33

Slide 33 text

grape Sunday, May 12, 13

Slide 34

Slide 34 text

sinatra-synchrony (thin) Sunday, May 12, 13

Slide 35

Slide 35 text

grape + goliath Sunday, May 12, 13

Slide 36

Slide 36 text

ab测试 ab -n 1000 -c 1 /leaderboards/1000/users.json rails rails- api sinatra sinatra- synchrony grape grape + goliath time taken 18.670 17.465 15.924 8.764 16.719 11.750 Sunday, May 12, 13

Slide 37

Slide 37 text

ab测试 ab -n 1000 -c 50 /leaderboards/1000/users.json rails rails- api sinatra sinatra- synchrony grape grape + goliath time taken 16.424 16.445 16.023 9.336 14.769 8.261 Sunday, May 12, 13

Slide 38

Slide 38 text

ab测试 ab -n 1000 -c 60 /leaderboards/1000/users.json rails rails- api sinatra sinatra- synchrony grape grape + goliath time taken xxx xxx xxx xxx Sunday, May 12, 13

Slide 39

Slide 39 text

ab测试 ab -n 1000 -c 100 /leaderboards/1000/users.json rails rails- api sinatra sinatra- synchrony grape grape + goliath time taken xxx xxx xxx 8.080 xxx 8.180 Sunday, May 12, 13

Slide 40

Slide 40 text

Ұࠣ误ղ Sunday, May 12, 13

Slide 41

Slide 41 text

1. Rubyଠຫ Node.js, Go Sunday, May 12, 13

Slide 42

Slide 42 text

2. 买ߋଟత෰务ثདྷղႊ ੑೳ问题 Sunday, May 12, 13

Slide 43

Slide 43 text

RubyՄҎ၏౸ ੑೳ޷ ኂ发ߴ 䇖发Ꮘ཰ߴ 维护ੑ޷ Sunday, May 12, 13

Slide 44

Slide 44 text

谢谢 Q&A Sunday, May 12, 13