Slide 1

Slide 1 text

安居客 Think in LAMP - 2012.6 网站架构

Slide 2

Slide 2 text

,+^,,|;:':`.: ` ```` .,,|,,|::..;: . :.. . ,,;qgWWggWHWMWWdWWWmdL... ` ,,dBBBBgB$BH&BBBBBBBWB@BWBBW,+=: ,dBQQ&@BWWBBBB@0BBBWWW@WW@BBWB@WWBWq. ,dBB@WWBBB0WBWBBWWBWBBWBBBBWQHB@WB@B@WW0m+ ,B@0WB@W@BB$BBBHWBBB@@WB@BBBBBW@WWWWWWWW@WWW ,M@BB@B000@0MBBBBBBBBBWBBBBBWBBW@WBBWWWWWWWWW@ ,d&B0WBB@@#!^|J0BBBBBBB@WWBWBWBW@W@WWBWW@WWWWWWW .+BBBBW@D!^` .199BgBBBBWBBWBW@WWWW@@@BWWWWWWWW JWBBHB@^` 'J39BWBBBWWBBW@WBW@BBWW7WWWWWWW 1MBBW@ +: `^I$BBBBBWWBBBWBWB@9@E$WWWWWW ,W0QW! +a|` .',;=JBWBWBBBBBB0WBWW+@;BWWWWWW ,WWB@ dBE,,ggdY .::+9BB@WBBBB0W0B9E+!dWWWWWWW B&B'+MBiBg^" ,||z40BBB0BBV^4W@T+!qWWWWWWWW '4E .31i$E+` .;JIIII4BQBWMHkJ@\'',dBBWWWWWWW Wg .'`` .,=,^^z=XIM0BBHMuBT:+dBB$@WWWWWWW $@! .;^;|;^IIII4sMWMjHBaQBBBBBWWWWWWWW ^ ..=|^,^;^^zIIUMMHoHW0BA6BHBWWWWWWWW .;,|^||||^^IIXVwHBH4H4BOBBWWWWWWWW@ .,zad: .`|^;|^,=^z+IXHHBMBP44BBBB0WWWWWWWW ,qB0@9\ `;^^|==z^zIUHHH4BBhPBMMBBBWWWWWW@W ?9WWI|`.`|,|.`=|=zzzzIIUHMHHBNBB4WMMBBBBWWWWWWW JC+qdHQe1;==+z==IIVUHHHBUUBBBGoFMMM0BBWWWWWW XBBW@T:.;zzI^IIcUHQWB9UUUUBBIFYYMMBBBWWWWWW ,Q@',vz|,2=!=IIHWqNUBdddUUpBMMsMMMH0BBBWWWW ,IdW#,J|^|dQMHKBBUBBdOdBBDMzLMHoMBBBBBWWB ?9B@" .;zHHBdBBUO666OBBD#XXXLHMHwMBBB0WB ,^.,+dQHW%BdH9AHB0B00#1Iz1XIOMHtMMsY0BI 3IWWgWBBBRBBB0BMO#V^|^|^1XLUMMsYHvMMW .,,+9@@@0@B00B0B8XIII!,,:|^=cUHHMU##XLHM ` 9J2BWOIIII^;;==zIUUvvLXrXcXHH ,dEJBBYHII^,|^IIrOMsCX1IIggdH ,r 0LJ3##IzIaaggggggWWBWWWWWWWW .` .dB@@W@WWWWWWWWWWW@W@W@W@WW@ .s ,,,,,+. WB@BW@@@@@@WW@@W@@@W@W@W@W@ .,,,,. .J! .,+gB&&&B$BW@@WW@B@@@@@W@W@@@W@@W@W@WW@@WWW @erning •ழ΁ʈ೻ࢪ •2008ϋ̋ɝτ֢܄ •eBay CDC •35ʝ䝀

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

•4㽗ၣ१ anjuke.com, aifang.com, haozu.com, jinpu.com •୅ਗᏐ͜ iOS, Android, Windows Phone •3ɷຬUV/˜ •2ɷຬPV/˂ •~150̨؂䕂ኜ,3㽗IDC •ڐ200Зʈ೻ࢪ

Slide 5

Slide 5 text

㽢ʃՑɽ ɽߧʧୗτ֢܄ݖ࿴੽ʃՑɽٙᜊʷཀ೻

Slide 6

Slide 6 text

1 2 3 4 5 6 7 8 9 10 11 12 0 500000 1000000 1500000 2000000 2500000 10X 200K 2M → DB Replication LIKE% ➡ SOLR V2 Squid Memcached Distributed Images RabbitMQ DB Sharding 1㽗IDC,2̨؂ਕኜ 2㽗IDC,17̨؂ਕኜ Linux Apache MySQL PHP

Slide 7

Slide 7 text

hᅰኽࢫ hฤ॰ hᇠπ hྡ˪ӻ୕ hऊࢹඟΐ

Slide 8

Slide 8 text

hᅰኽࢫ hฤ॰ hᇠπ hྡ˪ӻ䕠 hऊࢹඟΐ

Slide 9

Slide 9 text

ԟჿҢࡁ͜ɪSolrʔఱλə෗?

Slide 10

Slide 10 text

hɓක֐̥Ϟɓࡈ॰ˏג๕ h॰ˏ஼နεৎԸ຾ߏɛ、ήྡ、ሞእ、ฤ॰౤ͪ h॰ˏٙ˖Ꮶᅰඎᄣɽװʱϓεࡈ hɓࡈၣ१ᜊމεࡈτ֢܄、ฌג、λॡ、ږ⧕、୅ਗ hุਕሜ዆॰ˏ຾੬ࠅࠠܔ h൳Ը൳εSolrٙྼԷცࠅ၍ଣ

Slide 11

Slide 11 text

̙˸ІпஷཀWebޢࠦ௴ܔձ၍ଣSolr䕏Է Solr Cloud

Slide 12

Slide 12 text

ɓ㽗Serviceε㽗Instance

Slide 13

Slide 13 text

ίᇞݟ޶ձࡌҷschema

Slide 14

Slide 14 text

h77㽗ʔΝٙ॰ˏ h98㽗༶БʕٙSolr䕏Է h௅໇ί12̨يଣዚኜɪ hӊ˂ߒ8000ຬٙฤ॰ ٤ඝٙSolr䕏Է̙˸ᎇࣛܲცʱৣ,ਗ࿒ሜ዆

Slide 15

Slide 15 text

hᅰኽࢫ hฤ॰ hᇠπ hྡ˪ӻ䕠 hऊࢹඟΐ

Slide 16

Slide 16 text

hӊ˂อɪෂ120ຬੵ๫˪ hӊ˂ྡ˪ሗӋߒ1.4䖐ϣ hߒ4䖐ੵྡ˪,44TBπᎷ h௅໇ίዹͭٙIDC,40+PC̨؂䕂ኜ hCDN

Slide 17

Slide 17 text

hྡ˪ӻ䕠݅ᔊఊɦልᕏ hҢࡁٙҷி຾ዝəɟࡈචݬ htdocs/images ዹͭٙimg1~n ၾᏐ͜༆ᇩ ್Χ݊ͦۃٙӻ䕠 hᅺࡘʷ؂ਕટɹ ዹͭஷٙ͜؂䕂;̙֛Ⴁ,νˉʂձ˥Ι hMogileFSЪމྡ˪πᎷ

Slide 18

Slide 18 text

hMogileFSԢڭπ˲̥ڭπࡡྡ Ңࡁӊੵྡ˪ڭπ2΅;͜กូٙSATA೷盘,XFS˖΁ӻ୕ h˸ࡡྡٙʫ࢙hash࠽Ъމ˖΁Τ ͟׵ุਕٙᗫڷ,ҢࡁϞ൴ཀ60%ٙอɪෂྡ˪݊ࠠልٙ hᜑͪٙࣛࡉʑஈଣྡ˪ уʲྡ͂˥Ι,ஈଣλٙྡ˪ίۃ၌ᇠπ h˕ܵεࡈၣ१ Էνίτ֢܄ɪෂٙྡ˪,̙˸ίλॡၣ˸λॡٙˉʂձ˥Ι࢝ͪ hဲЧൈ৿ྡ˪ᗆй ί࿁อɪෂٙྡ˪͂ɪTag,̙͜ɲᗆйࠠልٙձ੭˥Ιٙྡ˪

Slide 19

Slide 19 text

h፯኿ᔊఊྼٙ͜˙ࣩ h஼Ӊҷආ,ʔ͜ɓӉՑЗ hᜫࠠልٙ௶ਗІਗʷ 㽢ʃՑɽٙཀ೻ʕ

Slide 20

Slide 20 text

ᗫءක೯ձ಻༊ ၣ१ٙݖ࿴ʔස݊வԬ͛ପᐑྤٙଡ଼΁

Slide 21

Slide 21 text

hක೯࣪ݖ h๕˾ᇁ၍ଣ h಻༊ᐑྤ

Slide 22

Slide 22 text

hක೯࣪ݖ h๕˾ᇁ၍ଣ h಻༊ᐑྤ

Slide 23

Slide 23 text

๕˾ᇁٙو͉၍ଣ masterڭܵᖢ֛ ධͦί΢Іٙfeature branchක೯ ̌ঐ಻༊ஷཀܝmergeΫ˴ʍ 紧ܢٙॹ௘ίrelease branchɪࡌҷ

Slide 24

Slide 24 text

ᕎ ᇞ ʈ Ъ

Slide 25

Slide 25 text

GitCorp

Slide 26

Slide 26 text

ڢ䅎Փ Code Review

Slide 27

Slide 27 text

hක೯࣪ݖ h๕˾ᇁ၍ଣ h಻༊ᐑྤ

Slide 28

Slide 28 text

h12-Factor App ѓൡҢࡁ ක䕆、಻༊、͛ପᐑྤ൳ટڐ൳λ hක䕆ᐑྤ.$username.dev.anjuke.com h಻༊ᐑྤ.$fp#.qa.anjuke.com h͛ପᐑྤ.anjuke.com

Slide 29

Slide 29 text

TiP Test in Production

Slide 30

Slide 30 text

hεو͉̺໇ ዚኜɪΝࣛϞεࡈو͉ٙ˾ᇁ,͟ৣໄܸ׼Ꮠ༈༶Бࡳࡈو͉ hܸ֛༶Бو͉ ӊࡈɛ̙˸ܸ֛ʔΝٙو͉ hܸ֛༶Бዚኜ ᒔ̙˸ܸ֛ሗӋໝίࡳ̨؂䕂ኜɪ hBetaձGA Ңࡁٙݖ࿴˕ܵί͛ପᐑྤj

Slide 31

Slide 31 text

m=app10-019, v=20120605_03 hεو͉̺໇ hܸ֛༶Бو͉ hܸ֛༶Бዚኜ hBetaձGA ӊࡈɛ̙˸ܸ֛ʔΝٙو͉

Slide 32

Slide 32 text

m=app10-019, v=20120605_03 hεو͉̺໇ hܸ֛༶Бو͉ hܸ֛༶Бዚኜ hBetaձGA ᒔ̙˸ܸ֛ሗӋໝίࡳ̨؂䕂ኜɪ

Slide 33

Slide 33 text

hεو͉̺໇ hܸ֛༶Бو͉ hܸ֛༶Бዚኜ hBetaձGA ί፬ʮ܃ʫ௅ᐼ݊Ꮄ΋ஞਪBetaو͉

Slide 34

Slide 34 text

ݖ࿴Ꮠ༈ܼ̍ක೯ձ಻༊

Slide 35

Slide 35 text

л͜ᅰỼձʈՈ ፅඎݖ࿴ٙࣖ؈,ЪމҷආٙԱኽ

Slide 36

Slide 36 text

hਿᓾ္ٙછ hІ່֛ٙజڌ h༉୚ٙᅰኽʱؓ h˕ุܵਕᅰኽDW/BI

Slide 37

Slide 37 text

cacti

Slide 38

Slide 38 text

ᅰኽࢫٙԴ͜฿ر

Slide 39

Slide 39 text

ᅰኽࢫٙ༉୚္છ

Slide 40

Slide 40 text

Memcached / Varnish

Slide 41

Slide 41 text

pyfisheyes֛Ⴁྡڌ

Slide 42

Slide 42 text

DW/BI 䣽䕂ʱؓʕː

Slide 43

Slide 43 text

༉୚ʧୗɓࡈҢᙂ੻ ܘϞจܠٙᅰኽ

Slide 44

Slide 44 text

PHPሗӋٙஈଣࣛගʱ̺ hεᅰ͜䔚ٙᚤᏐ时䞯݊εˇ? h90%ٙ͜˒ᚤᏐࣛග݊εˇ? hՈ᜗Ցӊ㽗Controller

Slide 45

Slide 45 text

PHPሗӋٙ༉୚ઋر

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

ᅰኽձʈՈܘϞᏍп ݖ࿴ٙணࠇࠅϽᅇᅰኽٙમණ

Slide 52

Slide 52 text

ܵᚃҷආ ఐϼᒮேStay hungry, Stay foolish

Slide 53

Slide 53 text

APS P2PٙऊࢹඟΐձମӉჃཀ೻ሜ͜ ØMQ

Slide 54

Slide 54 text

ᐏ՟ਪᕚ༉୚ڦࢹ ᐏ՟޴ᗫਪᕚΐڌ ᐏ՟Ϋഈΐڌ 10 15 30 ഐҼ ක֐ 10+15+30=55 (ms)

Slide 55

Slide 55 text

ᐏ՟ਪᕚ༉୚ڦࢹ ᐏ՟޴ᗫਪᕚΐڌ ᐏ՟Ϋഈΐڌ 10 15 30 ഐҼ ක֐ max(10+15, 30)=30 (ms)

Slide 56

Slide 56 text

hP2Pٙऊࢹ䕆৔ hPHPٙମӉ˙جሜ͜ hൈᏝٙऊࢹᐼᇞ PHP܄䔚၌ٙ4㽗Ռ数

Slide 57

Slide 57 text

ᐏ՟ਪᕚ༉୚ڦࢹ ᐏ՟޴ᗫਪᕚΐڌ ᐏ՟Ϋഈΐڌ 10 15 30 ഐҼ ක֐ start_request() wait_for_replies()

Slide 58

Slide 58 text

➡ ፯኿ᔊఊྼٙ͜˙ࣩ ➡ Νࣛᗫءක೯ձ಻༊ ➡ л͜ᅰኽձʈՈ ➡ ܵᚃҷආ Ң࿁ၣ१ݖ࿴ٙ᜗ึ݊

Slide 59

Slide 59 text