Fa'atinoga o talosaga feso'otaiga Linux. Folasaga

O loʻo faʻaogaina nei talosaga i luga o le initaneti i soʻo se mea, ma i totonu o felauaiga uma, o le HTTP o loʻo nofoia le vaega a le leona. Pe a suʻesuʻeina faʻamatalaga o le atinaʻeina o talosaga i luga o le upega tafaʻilagi, o le toʻatele o tagata e itiiti lava le gauai atu i le faiga faʻaogaina o loʻo taʻavale moni ai nei talosaga. O le vavaeeseina o atinaʻe (Dev) ma gaioiga (Ops) naʻo le faʻaleagaina o le tulaga. Ae faʻatasi ai ma le tulaʻi mai o le aganuʻu DevOps, o loʻo avea le au atinaʻe ma nafa ma le faʻatinoina oa latou talosaga i le ao, o lea e aoga tele mo i latou e masani lelei i le pito i tua o le faiga faʻaogaina. E sili ona aoga pe afai o loʻo e taumafai e faʻapipiʻi se faiga mo le faitau afe poʻo le sefulu afe o fesoʻotaʻiga tutusa.

O tapula'a i 'au'aunaga i luga ole laiga e tutusa lelei ma i latou i isi talosaga. Pe o paleni uta po'o 'au'aunaga fa'amaumauga, o nei talosaga uma e iai fa'afitauli tutusa i se si'osi'omaga maualuga. O le malamalama i nei tapula'a fa'avae ma le auala e foia ai i se tulaga lautele o le a fesoasoani ia te oe e iloilo ai le faʻatinoga ma le faʻalauteleina o au talosaga i luga ole laiga.

O lo'o ou tusia lenei fa'asologa o tala e tali atu ai i fesili mai le au atina'e talavou o lo'o manana'o e avea ma tufuga faiga fa'apitoa. E le mafai ona malamalama lelei i le faʻaogaina o le faʻaogaina o le Linux e aunoa ma le suʻesuʻeina o faʻavae o le auala latou te galulue ai i le tulaga o le faʻaogaina. E ui lava e tele ituaiga o talosaga, i lenei faasologa ou te manaʻo e suʻesuʻe faʻaoga i luga o le upega tafaʻilagi nai lo le faʻaogaina o le komepiuta e pei o se suʻesuʻega poʻo se faʻatonu tusitusiga. O lenei mea e faʻamoemoe mo tagata atiaʻe ma tusiata o loʻo fia malamalama pe faʻapefea ona galue polokalame Linux poʻo Unix ma pe faʻapefea ona faʻatulagaina mo le maualuga o le faʻatinoga.

O le Linux potu server faiga fa'aoga, ma o le tele o taimi e fa'aoga ai au talosaga i lenei OS. E ui lava ou te fai atu "Linux", o le tele o taimi e mafai ona e manatu ma le saogalemu o loʻu uiga o faiga faʻaoga uma e pei o Unix i le lautele. Ae ui i lea, ou te leʻi faʻataʻitaʻiina le tulafono faʻatasi i luga o isi faiga. O lea, afai e te fiafia i le FreeBSD poʻo le OpenBSD, e ono fesuisuiaʻi au faʻaiʻuga. A ou taumafai i se mea faʻapitoa Linux, ou te faʻasino atu.

E ui e mafai ona e faʻaogaina lenei malamalama e fausia ai se app mai le sasa ma o le a faʻalelei atoatoa, e sili ona aua le faia lena mea. Afai e te tusia se upegatafa'ilagi fou ile C po'o le C++ mo le talosaga pisinisi a lau fa'alapotopotoga, atonu o lou aso mulimuli lea i le galuega. Ae ui i lea, o le iloaina o le fausaga o nei talosaga o le a fesoasoani i le filifilia o polokalame o iai. O le a mafai ona e faʻatusatusa faiga faʻavae faʻavae ma faiga faʻavae filo faʻapea foʻi ma mea faʻavae. O le ae malamalama ma talisapaia pe aisea e sili atu ai le lelei o Nginx nai lo Apache httpd, aisea e mafai ai e le Tornado based Python ona faʻaogaina le tele o tagata faʻaoga faʻatusatusa i le Django based Python application.

ZeroHTTPd: Meafaigaluega Aoao

ZeroHTTPd o se 'upega tafaʻilagi na ou tusia mai le amataga i le C o se meafaigaluega faʻafaiaoga. E leai ni fa'alagolago i fafo, e aofia ai le avanoa i Redis. Matou te faʻatautaia a matou lava faiga Redis. Va'ai lalo mo nisi fa'amatalaga.

E ui lava e mafai ona tatou talanoaina aʻoaʻoga i se taimi umi, e leai se mea e sili atu nai lo le tusiaina o code, faʻatautaia, ma faʻatusatusa uma fausaga faʻaumau ma isi. Ole auala sili lea ona manino. O le mea lea, o le a matou tusia se 'upega tafaʻilagi ZeroHTTPd faigofie e faʻaaoga ai faʻataʻitaʻiga taʻitasi: faʻavae-faʻavae, filo-faʻavae, ma faʻavae-faʻavae. Se'i o tatou va'ava'ai i nei 'au'aunaga ta'itasi ma va'ai pe fa'apefea ona fa'atusatusa le tasi i le isi. ZeroHTTPd o loʻo faʻatinoina i totonu o se faila C se tasi. O le server-based server e aofia ai uthash, o se faʻatinoga lelei o le laulau hash e sau i se faila ulutala tasi. I isi tulaga, e leai ni faʻalagolago, ina ia le faʻalavelaveina le poloketi.

E tele fa'amatalaga i le code e fesoasoani ia te oe ia malamalama. I le avea ai ma se 'upega tafaʻilagi faigofie i nai laina o code, ZeroHTTPd o se faʻavae laʻititi mo le atinaʻeina o upega tafaʻilagi. E fa'atapula'aina galuega, ae mafai ona tu'uina atu faila fa'amau ma itulau faigofie "malosi". E tatau ona ou fai atu o ZeroHTTPd e lelei mo le aʻoaʻoina pe faʻapefea ona fatuina ni faʻaoga Linux maualuga. I le lautele, o le tele o 'upega tafaʻilagi e faʻatali mo talosaga, siaki ma faʻagasolo. Ole mea tonu lea ole a fai e ZeroHTTPd. O se meafaigaluega lea mo le aʻoaʻoina, ae le o le gaosiga. E le lelei i le taulimaina o mea sese ma e foliga mai e le mitamita i faiga sili ona saogalemu (oi ioe, na ou faʻaaogaina strcpy) po o togafiti poto o le gagana C. Ae ou te faamoemoe e lelei lana galuega.

Fa'atinoga o talosaga feso'otaiga Linux. Folasaga
ZeroHTTPd itulau autu. E mafai ona gaosia ituaiga faila eseese e aofia ai ata

Talosaga Tusi Talosaga

O talosaga i luga ole laiga fa'aonaponei e masani lava e le fa'atapula'aina i faila fa'amau. E iai a latou fegalegaleaiga faʻalavelave ma faʻamaumauga eseese, caches, ma isi. O lea o le a matou fatuina se upega tafaʻilagi faigofie e taʻua o le "Guest Book" lea e tuʻu ai e tagata asiasi ni faʻamaumauga i lalo o latou igoa. O lo'o teuina e le tusi a le malo fa'amaumauga na tu'ua muamua. O lo'o iai fo'i se fa'ailoga asiasi ile pito i lalo ole itulau.

Fa'atinoga o talosaga feso'otaiga Linux. Folasaga
Talosaga i luga o le upega tafaʻilagi "Tusi Faʻasalalau" ZeroHTTPd

O lo'o teu i Redis le fa'ailoga a tagata asiasi ma fa'amaumauga tusi asiasi. Mo fesoʻotaʻiga ma Redis, o loʻo faʻatinoina lava faiga; latou te le faʻalagolago i le faletusi fafo. E le o a'u o se tagata fiafia tele i le fa'asalalauina o le code homebrew pe'ā maua fa'alaua'itele ma fa'ata'ita'i lelei fofo. Ae o le faʻamoemoe o ZeroHTTPd o le suʻesuʻeina lea o le Linux faʻatinoga ma le avanoa i auaunaga i fafo, aʻo tuʻuina atu talosaga HTTP e iai se aʻafiaga ogaoga. E tatau ona tatou pulea atoatoa fesoʻotaʻiga ma Redis i totonu oa tatou faletusi taʻitasi. I nisi fausaga matou te fa'aogaina le poloka o telefoni, i isi matou te fa'aogaina faiga fa'avae. O le fa'aogaina o se faletusi a le tagata fa'atau Redis i fafo e le maua ai lenei fa'atonuga. E le gata i lea, o le matou tagata Redis laititi e na o ni nai galuega (maua, seti, ma faʻaopoopoina se ki; maua ma faʻapipiʻi i se laina). E le gata i lea, o le Redis protocol e matua matagofie ma faigofie. E te le manaʻomia foʻi ona e aʻoaʻoina faʻapitoa. O le mea moni lava o le protocol e faia uma galuega i le tusa ma le selau laina o tulafono faʻaalia le lelei o le mafaufau i ai.

O le ata o lo'o i lalo o lo'o fa'aalia ai le mea e fai e le talosaga pe a talosaga mai le kalani (su'esu'e). /guestbookURL.

Fa'atinoga o talosaga feso'otaiga Linux. Folasaga
E fa'afefea ona galue le tusi talosaga a le malo

A manaʻomia le tuʻuina atu o se itulau tusi asiasi, e tasi le valaau i le faila faila e faitau le faʻataʻitaʻiga i le mafaufau ma tolu fesoʻotaʻiga telefoni i Redis. O le faila faila o loʻo i ai le tele o mea HTML mo le itulau i le faʻamalama i luga. O lo'o iai fo'i fa'ailoga fa'apitoa mo le vaega malosi o le anotusi: pou ma tagata asiasi. Matou te mauaina mai Redis, faʻapipiʻi i totonu o le itulau ma tuʻuina atu i le kalani le faʻaogaina atoatoa. O le valaau lona tolu i Redis e mafai ona aloese ona o le toe faafoi e Redis le taua fou pe a faʻaopoopo. Ae ui i lea, mo la matou 'auʻaunaga, o loʻo i ai se faʻataʻitaʻiga faʻavae faʻapitoa, o le tele o fesoʻotaʻiga telefoni o se suʻega lelei mo faʻamoemoega aʻoaʻoga. O lea matou te lafoai ai le tau o le toe faafoi o le Redis o le numera o tagata asiasi ma fesiligia i se isi valaʻau.

Fa'atonuga a le server ZeroHTTPd

O loʻo matou fausiaina ni faʻasologa se fitu o ZeroHTTPd faʻatasi ai ma galuega tutusa ae eseese fausaga:

  • Fa'aauau
  • Fa'au'au tui (tasi tamaiti fa'agasolo ile talosaga)
  • Fa'atonuga muamua (mua'i tui o faiga)
  • Server e iai filo fa'atino (tasi filo ile talosaga)
  • O lo'o iai le 'au'aunaga a'o le'i faia le filo
  • Faiga fa'avae poll()
  • Faiga fa'avae epoll

Matou te fuaina le faʻatinoga o fausaga taʻitasi e ala i le utaina o le server i talosaga HTTP. Ae a fa'atusatusaina fa'ata'ita'iga e tutusa lelei, e fa'atupula'ia le aofa'i o fesili. E faatolu ona matou su'eina ma fuafua le averesi.

Faiga su'ega

Fa'atinoga o talosaga feso'otaiga Linux. Folasaga
ZeroHTTPd seti su'ega uta

E taua tele pe a fai suʻega, e le taʻavale uma vaega i luga o le masini e tasi. I lenei tulaga, o le OS e faʻaopoopoina faʻatulagaga faʻatulagaina i luga aʻe o vaega e tauva mo le PPU. O le fuaina o le faiga fa'aogaina i luga a'e o fale ta'itasi filifilia o se tasi lea o sini sili ona taua o lenei fa'atinoga. O le fa'aopoopoina o isi fesuiaiga o le a fa'aleagaina ai le fa'agasologa. O le mea lea, o le faʻatulagaina i le ata o loʻo i luga e sili ona aoga.

O le a le mea e fai e nei 'au'aunaga ta'itasi?

  • load.unixism.net: O le mea lea tatou te tamomoe ai ab, fa'aoga a le Apache Benchmark. E fa'atupuina ai le uta e mana'omia e su'e ai ata o a tatou 'au'aunaga.
  • nginx.unixism.net: O nisi taimi matou te mananaʻo e faʻatautaia le sili atu ma le tasi le faʻataʻitaʻiga o se polokalama server. Ina ia faia lenei mea, o le Nginx server faʻatasi ai ma tulaga talafeagai e galue e pei o se paleni uta e sau mai ab i a tatou faiga o le server.
  • zerohttpd.unixism.net: O iinei matou te faʻatautaia ai a matou polokalame server i luga o fausaga eseese e fitu, taʻitasi i le taimi.
  • redis.unixism.net: O lenei 'auʻaunaga e faʻatautaia le Redis daemon, lea o loʻo teuina ai faʻamatalaga tusi asiasi ma faʻailoga asiasi.

O 'au'aunaga uma o lo'o tamomoe i luga o le fa'atonuga e tasi. O le manatu o le iloilo lea o le maualuga o le faatinoga o fausaga taitasi. Talu ai o polokalame uma a le 'auʻaunaga e faʻataʻitaʻiina i luga o meafaigaluega tutusa, o se faʻavae lea mo faʻatusatusaga. O la'u fa'ata'ita'iga e aofia ai 'au'aunaga fa'akomepiuta na mautotogi mai le Digital Ocean.

O le a le mea o loo tatou fuaina?

E mafai ona e fua fa'ailoga eseese. Matou te iloiloina le faʻatinoga o fausaga taʻitasi i se faʻatulagaga tuʻufaʻatasia e ala i le faʻapipiʻiina o sapalai ma talosaga i tulaga eseese o le tutusa: o le uta e tupu mai le 20 i le 15 tagata faʻaoga tutusa.

Suʻega o suʻega

O le siata o loʻo i lalo o loʻo faʻaalia ai le faʻatinoina o sapalai i luga o fausaga eseese i tulaga eseese o le tutusa. O le y-axis o le numera o talosaga i le sekone, o le x-axis o fesoʻotaʻiga tutusa.

Fa'atinoga o talosaga feso'otaiga Linux. Folasaga

Fa'atinoga o talosaga feso'otaiga Linux. Folasaga

Fa'atinoga o talosaga feso'otaiga Linux. Folasaga

Lalo o se laulau ma fa'ai'uga.

talosaga ile sekone

tutusa
faifai pea
tui
mua'i tui
tafe
mua'i fa'asalalauina
palota
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
salalau tele
2138

5000
-
salalau tele
1600
1100
2519
-
2235

8000
-
-
1200
salalau tele
2451
-
2100

10
-
-
salalau tele
-
2200
-
2200

11
-
-
-
-
2200
-
2122

12
-
-
-
-
970
-
1958

13
-
-
-
-
730
-
1897

14
-
-
-
-
590
-
1466

15
-
-
-
-
532
-
1281

Mai le kalafi ma le laulau e mafai ona vaʻaia e sili atu i le 8000 talosaga faʻatasi e naʻo le toʻalua taʻaalo o totoe: muaʻi tui ma epoll. A'o fa'atupula'ia le uta, e sili atu le leaga o le 'au'aunaga fa'atatau i faiga palota nai lo le fa'agasolo. O le fausaga o filo-a'o le'i faia le fausaga o se tagata tauva agavaa e su'esu'e, o se molimau i le lelei o le fa'atulagaina e le fatu Linux le tele o filo.

ZeroHTTPd Source Code

ZeroHTTPd Source Code iinei. O lo'o iai se fa'atonuga tu'ufa'atasi mo fausaga ta'itasi.

ZeroHTTPd │ ├── 01_iterative │ ├── main.c ├── 02_forking │ ├── main.c ├── 03_preforking ─ ─ ─ ─ . filo │ ├── main.c ├── 04_prethreading │ ├── main.c ├── 05_poll │ ├── main.c ├── 06_epoll │ └── Fai.c ├ ├ faitele.c ├ ├── index .html │ └── tux .png └── templates └── guestbook └── index.html

I le faaopoopo atu i le fitu directories mo tusiata uma, e lua isi i luga o le tulaga maualuga directory: lautele ma templates. O le mea muamua o loʻo i ai le faila index.html ma le ata mai le ata muamua. E mafai ona e tuʻuina isi faila ma faila iina, ma ZeroHTTPd e tatau ona tuʻuina atu na faila faila e aunoa ma se faʻafitauli. Afai o le ala i totonu o le suʻega e fetaui ma le ala i le faila lautele, ona suʻe lea e ZeroHTTPd le faila index.html i lenei lisi. O mea o lo'o i totonu o le tusi asiasi e fa'atupuina ma le malosi. E na'o le itulau autu, ma o lona anotusi e fa'avae i luga o le faila 'templates/guestbook/index.html'. ZeroHTTPd faigofie ona faʻaopoopo itulau faʻamalosi mo faʻaopoopoga. O le manatu e mafai e tagata faʻaoga ona faʻaopoopo faʻataʻitaʻiga i lenei lisi ma faʻalautele ZeroHTTPd pe a manaʻomia.

Ina ia fausia uma 'auʻaunaga e fitu, tamoʻe make all mai le lisi pito i luga - ma o fale uma o le a faʻaalia i lenei lisi. O faila e mafai ona fa'atinoina e su'e mo tagata lautele ma fa'ata'ita'iga fa'atonu i totonu o le fa'atonu e fa'alauiloa mai ai.

Linux API

E te le manaʻomia le malamalama lelei i le Linux API e malamalama ai i faʻamatalaga i lenei faasologa o tala. Ae ui i lea, ou te fautuaina le faitau atili i lenei autu; e tele punaoa faʻamatalaga i luga ole Initaneti. E ui lava o le a matou paʻi atu i le tele o vaega o Linux APIs, o la matou taulaiga o le a faʻamuamua i faiga, filo, mea tutupu, ma le upega o fesoʻotaʻiga. I le faaopoopo atu i tusi ma tala e uiga i le Linux API, ou te fautuaina foi le faitau mana mo telefoni feaveaʻi ma galuega faletusi na faʻaaogaina.

Fa'atinoga ma le Fa'ateleina

Tasi faʻamatalaga e uiga i le faʻatinoga ma le faʻalauteleina. I le talitonuga, e leai se sootaga i le va oi latou. E mafai ona i ai sau 'au'aunaga i luga o le initaneti e galue lelei, ma le taimi tali e na'o ni nai milliseconds, ae e le'i fuaina. E fa'apea fo'i, e ono iai se 'upega tafa'ilagi e le lelei le fa'atinoga e mana'omia ni nai sekone e tali mai ai, ae fa'atatau i le sefulu e fa'atautaia ai le fiasefulu afe o tagata fa'aoga tutusa. Ae ui i lea, o le tuʻufaʻatasiga o le maualuga o le faʻatinoga ma le scalability o se tuʻufaʻatasiga sili ona mamana. O talosaga maualuga e masani lava ona fa'aogaina fa'aitiitiga punaoa ma fa'apea ona lelei le tautuaina o tagata fa'aoga tutusa i luga o le server, fa'aitiitia ai tau.

PPU ma galuega I/O

Ma le mea mulimuli, i le komepiuta e lua lava ituaiga o galuega: mo I / O ma PPU. O le mauaina o talosaga i luga ole Initaneti (network I/O), tautua faila (network and disk I/O), fesoʻotaʻi ma le database (network and disk I/O) o gaoioiga uma ia I/O. O nisi fa'amatalaga fa'amaumauga e mafai ona fai sina fa'amalosi PPU (fa'avasegaina, averesi o le miliona i'uga, ma isi). Ole tele ole upegatafa'ilagi e fa'atapula'aina ile maualuga ole I/O, ma e seasea fa'aogaina le fa'agaioiga ile malosi atoatoa. A e vaʻaia o nisi o galuega I / O o loʻo faʻaaogaina le tele o le PPU, e foliga mai o se faʻailoga o le le lelei o le faʻatulagaina o tusi. E mafai ona fa'auigaina o puna'oa a le PPU e fa'amaumau i le fa'afoega o fa'agasologa ma le suiga o fa'amatalaga - ma e le'o aoga tele lea. Afai o loʻo e faia se mea e pei o le faʻaogaina o ata, faʻaliliuina faila leo, poʻo le aʻoaʻoina o masini, ona manaʻomia lea e le talosaga ni punaoa mamana CPU. Ae mo le tele o talosaga e le o le tulaga lea.

A'oa'o atili e uiga i fa'ata'ita'iga a le server

  1. Vaega I: Fa'asologa Fa'asologa
  2. Vaega II. Tu'u tui
  3. Vaega III. 'au'auna mua'i tui
  4. Vaega IV. 'Au'aunaga ma filo o le fa'atinoga
  5. Vaega V. 'au'auna muai filo
  6. Vaega VI. fausaga fa'avae Pol
  7. Vaega VII. fausaga fa'avae epoll

puna: www.habr.com

Faaopoopo i ai se faamatalaga