Lisebelisoa tsa marang-rang li se li sebelisoa hohle, 'me har'a liprothokholo tsohle tsa lipalangoang, HTTP e nka karolo ea tau. Ha u ithuta lintlha tse mabapi le nts'etsopele ea ts'ebeliso ea webo, batho ba bangata ha ba ele hloko haholo sistimi e sebetsang moo lits'ebetso tsena li sebetsang teng. Karohano ea nts'etsopele (Dev) le ts'ebetso (Ops) e mpefatsa boemo le ho feta. Empa ka ho phahama ha setso sa DevOps, bahlahisi ba ntse ba ikarabella bakeng sa ho tsamaisa lits'ebetso tsa bona marung, kahoo ho bohlokoa haholo ho bona ho tloaelana hantle le backend ea sistimi e sebetsang. Sena se bohlokoa haholo haeba o leka ho kenya sistimi bakeng sa likhokahano tse likete kapa mashome a likete ka nako e le 'ngoe.
Meeli ea lits'ebeletso tsa marang-rang e ts'oana haholo le ea lits'ebetso tse ling. Hore na ke li-balancers tsa mojaro kapa li-server tsa database, lits'ebetso tsena kaofela li na le mathata a ts'oanang tikolohong e sebetsang hantle. Ho utloisisa mefokolo ena ea mantlha le mokhoa oa ho e hlola ka kakaretso ho tla u thusa ho lekola ts'ebetso le sekhahla sa lits'ebetso tsa hau tsa marang-rang.
Ke ngola letoto lena la lingoliloeng ho araba lipotso tse tsoang ho baetsi ba bacha ba batlang ho ba baetsi ba meralo ba nang le tsebo. Ha ho khonehe ho utloisisa ka ho hlaka mekhoa ea ho ntlafatsa ts'ebeliso ea Linux ntle le ho kenella ka har'a metheo ea hore na e sebetsa joang maemong a sistimi e sebetsang. Leha ho na le mefuta e mengata ea lits'ebetso, letotong lena ke batla ho hlahloba lits'ebetso tse thehiloeng marang-rang ho fapana le lits'ebetso tsa komporo joalo ka sebatli kapa mohlophisi oa mongolo. Boitsebiso bona bo reretsoe bahlahisi le litsebi tsa meralo ba batlang ho utloisisa hore na Linux kapa Unix mananeo a sebetsa joang le hore na a ka a hlophisa joang bakeng sa ts'ebetso e phahameng.
Linux ke kamore ea seva sistimi e sebetsang, 'me hangata lits'ebetso tsa hau li sebetsa ho OS ena. Leha ke re "Linux", boholo ba nako u ka nka ka mokhoa o sireletsehileng hore ke bolela lits'ebetso tsohle tse ts'ebetso tse kang Unix ka kakaretso. Leha ho le joalo, ha ke so leke khoutu e tsamaeang le litsamaiso tse ling. Kahoo, haeba u thahasella FreeBSD kapa OpenBSD, liphetho tsa hau li ka fapana. Ha ke leka ntho e itseng ka Linux, kea e supa.
Leha o ka sebelisa tsebo ena ho theha sesebelisoa ho tloha qalong mme e tla ntlafatsoa hantle, ho molemo ho se etse joalo. Haeba u ngola seva se secha sa marang-rang ho C kapa C++ bakeng sa ts'ebeliso ea khoebo ea mokhatlo oa hau, lena e kanna ea ba letsatsi la hao la ho qetela mosebetsing. Leha ho le joalo, ho tseba sebopeho sa lits'ebetso tsena ho tla thusa ho khetha mananeo a teng. U tla khona ho bapisa litsamaiso tse thehiloeng ho ts'ebetso le litsamaiso tse thehiloeng ho khoele hammoho le tse thehiloeng ho liketsahalo. U tla utloisisa le ho ananela hore na ke hobane'ng ha Nginx e sebetsa betere ho feta Apache httpd, hobaneng ts'ebeliso ea Tornado e thehiloeng Python e ka sebeletsa basebelisi ba bangata ha e bapisoa le ts'ebeliso ea Python ea Django.
ZeroHTTPd: Sesebelisoa sa ho Ithuta
ZeroHTTPd ke sebatli sa webo seo ke se ngotseng ho tloha qalong ho C joalo ka sesebelisoa sa ho ruta. Ha e na litšepe tsa kantle, ho kenyelletsa le phihlello ea Redis. Re tsamaisa mekhoa ea rona ea Redis. Sheba ka tlase bakeng sa lintlha tse ling.
Le hoja re ka buisana ka khopolo ka nako e telele, ha ho letho le molemo ho feta ho ngola khoutu, ho e tsamaisa, le ho bapisa meralo eohle ea li-server le tse ling. Ena ke mokhoa o hlakileng ka ho fetisisa. Ka hona, re tla ngola sebatli se bonolo sa ZeroHTTPd re sebelisa mofuta o mong le o mong: o thehiloeng ts'ebetsong, o thehiloeng ho khoele, le o thehiloeng ketsahalong. Ha re hlahlobeng e 'ngoe le e' ngoe ea li-server tsena 'me re bone hore na li sebetsa joang ha li bapisoa le tse ling. ZeroHTTPd e kentsoe faeleng e le 'ngoe ea C. Seva e thehiloeng ketsahalong e kenyelletsa uthash, ts'ebetsong e ntle ea tafole ea hash e tlang ka faele e le 'ngoe ea hlooho. Maemong a mang, ha ho na ba itšetlehileng ka bona, e le hore ba se ke ba thatafatsa morero.
Ho na le maikutlo a mangata ka har'a khoutu ho u thusa ho utloisisa. Ho ba seva sa marang-rang se bonolo meleng e 'maloa ea khoutu, ZeroHTTPd hape ke moralo o fokolang oa nts'etsopele ea webo. E na le ts'ebetso e fokolang, empa e khona ho sebeletsa lifaele tse tsitsitseng le maqephe a bonolo haholo a "matla". Ke tlameha ho bolela hore ZeroHTTPd e ntle bakeng sa ho ithuta ho theha lits'ebetso tsa Linux tse sebetsang hantle. Ka kakaretso, litšebeletso tse ngata tsa marang-rang li emela likopo, li hlahlobe le ho li sebetsa. Sena ke sona hantle seo ZeroHTTPd e tla se etsa. Sena ke sesebelisoa sa ho ithuta, eseng tlhahiso. Ha e ntle ho sebetsana le liphoso 'me ha ho na monyetla oa ho ithorisa ka mekhoa e metle ea ts'ireletso (oh, ke ne ke sebelisa strcpy) kapa maqheka a bohlale a puo ea C. Empa ke tšepa hore e etsa mosebetsi oa eona hantle.
Leqephe la lapeng la ZeroHTTPd. E ka ntša mefuta e fapaneng ya difaele ho akarelletsa le litšoantšo
Kopo ea Buka ea Baeti
Lisebelisoa tsa morao-rao tsa marang-rang hangata ha li felle feela ho lifaele tse tsitsitseng. Ba na le litšebelisano tse rarahaneng le li-database tse fapa-fapaneng, li-cache, joalo-joalo. Kahoo re tla etsa kopo e bonolo ea websaete e bitsoang "Guest Book" moo baeti ba tlohelang litlhaloso tlas'a mabitso a bona. Buka ea baeti e boloka likenyo tse siiloeng pejana. Ho boetse ho na le khaontara ea baeti botlaaseng ba leqephe.
Sesebelisoa sa webo "Buka ea Baeti" ZeroHTTPd
Li-counter le libuka tsa baeti li bolokiloe Redis. Bakeng sa likhokahano le Redis, lits'ebetso tsa hau lia kengoa; ha li itšetlehe ka laeborari ea kantle. Ha ke motho ea ratang ho hlahisa khoutu ea lapeng ha ho na le litharollo tse fumanehang phatlalatsa le tse lekiloeng hantle. Empa sepheo sa ZeroHTTPd ke ho ithuta ts'ebetso ea Linux le phihlello ea lits'ebeletso tsa kantle, ha ho sebeletsa likopo tsa HTTP ho na le phello e matla ea ts'ebetso. Re tlameha ho laola ka botlalo lipuisano le Redis ho e 'ngoe le e' ngoe ea meralo ea rona ea li-server. Meahong e meng re sebelisa li-call tse thibelang, ho tse ling re sebelisa mekhoa e thehiloeng liketsahalong. Ho sebelisa laeborari ea bareki ba kantle ho Redis ho ke ke ha fana ka taolo ena. Ntle le moo, moreki oa rona e monyane oa Redis o etsa mesebetsi e fokolang feela (ho fumana, ho beha, le ho eketsa senotlolo; ho fumana le ho hlomella lethathamong). Ntle le moo, protocol ea Redis e ntle haholo ebile e bonolo. Ha ho hlokahale hore u e rute ka ho khetheha. Taba ea hore protocol e etsa mosebetsi oohle ka mela e ka bang lekholo ea khoutu e bonts'a hore na e nahanoa hantle hakae.
Setšoantšo se latelang se bontša seo sesebelisoa se se etsang ha moreki (sebatli) a se kopa /guestbookURL.
Kamoo kopo ea buka ea baeti e sebetsang kateng
Ha leqephe la buka ea baeti le hloka ho ntšoa, ho na le mohala o le mong ho sistimi ea faele ho bala template mohopolong le mehala e meraro ea marang-rang ho Redis. Faele ea template e na le boholo ba litaba tsa HTML tsa leqephe le hlahang skrineng e kaholimo. Ho boetse ho na le litšoantšiso tse khethehileng bakeng sa karolo e matla ea litaba: poso le k'haonte ea baeti. Re li amohela ho tsoa ho Redis, re li kenya leqepheng ebe re fa moreki litaba tse entsoeng ka botlalo. Mohala oa boraro ho Redis o ka qojoa hobane Redis e khutlisa boleng bo bocha ba senotlolo ha e eketsoa. Leha ho le joalo, bakeng sa seva sa rona, se nang le meralo ea liketsahalo tse sa tloaelehang, mehala e mengata ea marang-rang ke teko e ntle bakeng sa merero ea ho ithuta. Kahoo re lahla boleng ba ho khutla ba Redis ba palo ea baeti ebe re e botsa ka mohala o arohaneng.
Mehaho ea li-server ZeroHTTPd
Re aha mefuta e supileng ea ZeroHTTPd ka ts'ebetso e ts'oanang empa meaho e fapaneng:
E pheta-phetoang
Seva ea fereko (ts'ebetso ea ngoana a le mong ka kopo)
Seva ea pre-fork (pele ho fereko ea lits'ebetso)
Seva e nang le likhoele tsa ts'ebetso (khoele e le 'ngoe ka kopo)
Seva e nang le tlhahiso ea pele ho khoele
Architecture e thehiloeng poll()
Architecture e thehiloeng epoll
Re lekanya tšebetso ea moaho o mong le o mong ka ho kenya seva ka likopo tsa HTTP. Empa ha ho bapisoa meaho e tšoanang haholo, palo ea lipotso e ea eketseha. Re leka ka makhetlo a mararo ebe re bala karolelano.
Mokhoa oa ho etsa liteko
Setupo sa teko ea boima ba ZeroHTTPd
Ke habohlokoa hore ha ho etsoa liteko, likarolo tsohle li se ke tsa sebetsa mochine o le mong. Tabeng ena, OS e kenyelletsa kemiso e eketsehileng ea kemiso ha likarolo li qothisana lehlokoa le CPU. Ho lekanya tsamaiso ea ts'ebetso ka holim'a e 'ngoe le e' ngoe ea li-server tse khethiloeng ke e 'ngoe ea lipakane tsa bohlokoa ka ho fetisisa tsa boikoetliso bona. Ho eketsa mefuta e mengata ho tla ba kotsi ts'ebetsong. Ka hona, boemo bo setšoantšong se ka holimo bo sebetsa hantle.
E 'ngoe le e 'ngoe ea li-server tsee e etsa eng?
load.unixism.net: Mona ke moo re mathelang teng ab, sesebelisoa sa Apache Benchmark. E hlahisa mojaro o hlokahalang ho leka meralo ea rona ea seva.
nginx.unixism.net: Ka linako tse ling re batla ho tsamaisa mohlala o fetang o le mong oa lenaneo la seva. Ho etsa sena, seva sa Nginx se nang le litlhophiso tse nepahetseng se sebetsa joalo ka sekala sa mojaro se tsoang ab ho lits'ebetso tsa seva sa rona.
zerohttpd.unixism.net: Mona re tsamaisa mananeo a rona a seva ho meaho e supileng e fapaneng, e le 'ngoe ka nako.
redis.unixism.net: Seva ena e tsamaisa daemon ea Redis, moo ho bolokoang menyako ea libuka tsa baeti le likhaunta tsa baeti.
Li-server tsohle li sebetsa ho processor e tšoanang. Morero ke ho lekola ts'ebetso e phahameng ka ho fetisisa ea moaho o mong le o mong. Kaha mananeo ohle a seva a lekoa ho hardware e tšoanang, sena ke motheo oa ho bapisa. Tlhahlobo ea ka e kenyelletsa li-server tse hiriloeng ho tloha Digital Ocean.
Re lekanya eng?
U ka lekanya matšoao a fapaneng. Re lekola ts'ebetso ea meralo e 'ngoe le e' ngoe ka tlhophiso e fanoeng ka ho kenya li-server ka likopo maemong a fapaneng a parallelism: mojaro o hola ho tloha ho 20 ho isa ho 15 basebelisi ba nako e le 'ngoe.
Liphetho tsa liteko
Chate e latelang e bonts'a ts'ebetso ea li-server meahong e fapaneng maemong a fapaneng a ho bapisa. Axis ea y ke palo ea likopo motsotsoana, x-axis ke likhokahano tse bapileng.
Ka tlase ke tafole e nang le liphetho.
likopo ka motsotsoana
ho bapisa pheta-pheto fereko pele ho fereko phallela ho phallela pele phuputso epoll
20
7
112
2100
1800
2250
1900
2050
50
7
190
2200
1700
2200
2000
2000
100
7
245
2200
1700
2200
2150
2100
200
7
330
2300
1750
2300
2200
2100
300
-
380
2200
1800
2400
2250
2150
400
-
410
2200
1750
2600
2000
2000
500
-
440
2300
1850
2700
1900
2212
600
-
460
2400
1800
2500
1700
2519
700
-
460
2400
1600
2490
1550
2607
800
-
460
2400
1600
2540
1400
2553
900
-
460
2300
1600
2472
1200
2567
1000
-
475
2300
1700
2485
1150
2439
1500
-
490
2400
1550
2620
900
2479
2000
-
350
2400
1400
2396
550
2200
2500
-
280
2100
1300
2453
490
2262
3000
-
280
1900
1250
2502
ho hasana ho hoholo
2138
5000
-
ho hasana ho hoholo
1600
1100
2519
-
2235
8000
-
-
1200
ho hasana ho hoholo
2451
-
2100
10
-
-
ho hasana ho hoholo
-
2200
-
2200
11
-
-
-
-
2200
-
2122
12
-
-
-
-
970
-
1958
13
-
-
-
-
730
-
1897
14
-
-
-
-
590
-
1466
15
-
-
-
-
532
-
1281
Ho tloha ho graph le tafoleng ho ka bonoa hore ka holimo ho likopo tsa 8000 ka nako e le 'ngoe re na le libapali tse peli feela tse setseng: pre-fork le epoll. Ha mojaro o ntse o eketseha, seva se thehiloeng ho likhetho se sebetsa hampe ho feta ho phallela. Mohaho oa pele ho popo ke mohlolisani ea tšoanelehang ho epoll, bopaki ba hore na Linux kernel e hlophisa likhoele tse ngata hakae.
Khoutu ea Mohloli oa ZeroHTTPd
Khoutu ea Mohloli oa ZeroHTTPd mona. Ho na le bukana e arohaneng bakeng sa moaho o mong le o mong.
Ntle le li-directory tse supileng bakeng sa meralo eohle ea meralo, ho na le tse ling tse peli bukeng ea boemo bo holimo: sechaba le litempele. Ea pele e na le faele ea index.html le setšoantšo se hlahang skrineng sa pele. U ka beha lifaele le lifoldara tse ling moo, 'me ZeroHTTPd e lokela ho sebeletsa lifaele tseo tse tsitsitseng ntle le mathata. Haeba tsela ea sebatli e lumellana le tsela e foldareng ea sechaba, ZeroHTTPd e batla faele ea index.html bukeng ena. Litaba tsa buka ea baeti li hlahisoa ka matla. E na le leqephe la lehae feela, 'me litaba tsa eona li ipapisitse le faele ea' templates/guestbook/index.html'. ZeroHTTPd e eketsa habonolo maqephe a matla bakeng sa katoloso. Morero ke hore basebelisi ba ka eketsa litempele bukeng ena mme ba holise ZeroHTTPd ha ho hlokahala.
Ho aha li-server tse supileng kaofela, matha make all ho tsoa bukeng ea boemo bo holimo - 'me tsohle tse hahang li tla hlaha bukeng ena. Lifaele tse sebetsang li batla li-directory tsa sechaba le li-templates bukeng eo li qalisoang ho eona.
Linux API
Ha ho hlokahale hore u tsebe hantle Linux API ho utloisisa tlhahisoleseling letotong la sengoloa sena. Leha ho le joalo, ke khothaletsa ho bala haholoanyane ka sehlooho sena; ho na le lisebelisoa tse ngata tsa litšupiso ho Marang-rang. Leha re tla ama likarolo tse 'maloa tsa Linux APIs, maikutlo a rona e tla ba haholo lits'ebetsong, likhoele, liketsahalo le marang-rang a marang-rang. Ntle le libuka le lingoliloeng tse mabapi le Linux API, ke boetse ke khothaletsa ho bala mana bakeng sa mehala ea sistimi le mesebetsi ea laeborari e sebelisitsoeng.
Tshebetso le Scalability
Ntlha e le 'ngoe mabapi le ts'ebetso le scalability. Ka khopolo, ha ho na kamano pakeng tsa bona. U ka ba le ts'ebeletso ea webo e sebetsang hantle haholo, ka nako ea karabelo ea li-milliseconds tse 'maloa, empa ha e na sekhahla ho hang. Ka mokhoa o ts'oanang, ho ka 'na ha e-ba le ts'ebeliso ea marang-rang e sa sebetseng hantle e nkang metsotsoana e seng mekae ho arabela, empa e lekanya ka mashome ho sebetsana le basebelisi ba mashome a likete ka nako e le 'ngoe. Leha ho le joalo, motsoako oa ts'ebetso e phahameng le scalability ke motsoako o matla haholo. Lisebelisoa tse sebetsang hantle ka kakaretso li sebelisa lisebelisoa ka mokhoa o fokolang 'me ka hona li sebeletsa basebelisi ka nako e le ngoe ho seva, ho fokotsa litšenyehelo.
Mesebetsi ea CPU le I/O
Qetellong, ho komporo ho na le mefuta e 'meli e ka khonehang ea mesebetsi: bakeng sa I/O le CPU. Ho fumana likopo ka Marang-rang (network I/O), ho sebeletsa lifaele (network le disk I/O), ho buisana le database (network le disk I/O) kaofela ke mesebetsi ea I/O. Lipotso tse ling tsa database li ka ba matla haholo ho CPU (ho hlopha, ho etsa liphetho tse milione, joalo-joalo). Lisebelisoa tse ngata tsa marang-rang li lekantsoe ke boholo bo ka khonehang ba I/O, 'me processor ha e sebelisoe ka botlalo. Ha u bona hore mosebetsi o mong oa I / O o sebelisa CPU e ngata, mohlomong ke sesupo sa meralo e fosahetseng ea ts'ebeliso. Sena se ka bolela hore lisebelisoa tsa CPU li senyehile taolong ea ts'ebetso le ho fetoha ha maemo - mme sena ha se na thuso ho hang. Haeba u etsa ntho e kang ho lokisa litšoantšo, ho fetola faele ea molumo, kapa ho ithuta ka mochine, joale kopo e hloka lisebelisoa tse matla tsa CPU. Empa bakeng sa likopo tse ngata sena ha se joalo.