Waxqabadka codsiga shabakadda Linux. Hordhac

Codsiyada shabakadaha ayaa hadda meel walba laga isticmaalaa, iyo dhammaan borotokoolka gaadiidka, HTTP ayaa ku jirta qaybta libaaxa. Marka la baranayo nuxurka horumarinta codsiga shabakadda, dadka intooda badan waxay aad u yareeyaan nidaamka hawlgalka ee codsiyadani dhab ahaantii ku shaqeeyaan. Kala soocida horumarinta (Dev) iyo hawlgallada (Ops) ayaa kaliya ka dhigay xaaladda. Laakiin kor u kaca dhaqanka DevOps, horumariyayaashu waxay noqonayaan mas'uul ka ah socodsiinta codsiyadooda daruuraha, sidaa darteed aad bay faa'iido ugu leedahay iyaga inay si fiican u yaqaanaan dhabarka dambe ee nidaamka hawlgalka. Tani waxay si gaar ah faa'iido u leedahay haddii aad isku dayayso inaad dejiso nidaam kumanaan ama tobanaan kun oo isku xidhid isku mar ah.

Xaddidaadyada adeegyada shabakada waxay aad ula mid yihiin kuwa codsiyada kale. Haddi ay tahay kuwa culayska qaada ama kaydka xogta, dhammaan codsiyadani waxay leeyihiin dhibaatooyin la mid ah jawiga waxqabadka sare. Fahamka xaddidaadahan aasaasiga ah iyo sida looga gudbi karo guud ahaan waxay kaa caawin doontaa inaad qiimeyso waxqabadka iyo miisaanka codsiyada shabakadaada.

Waxaan qorayaa maqaalladan taxanaha ah si aan uga jawaabo su'aalaha soo-saareyaasha da'da yar ee raba inay noqdaan naqshadeeyayaasha nidaamyada xog-ogaal u ah. Suurtagal maaha in si cad loo fahmo farsamooyinka kor u qaadista codsiga Linux iyada oo aan la quusin aasaaska sida ay ugu shaqeeyaan heerka nidaamka hawlgalka. Inkasta oo ay jiraan noocyo badan oo codsiyo ah, taxanahan waxaan rabaa in aan sahamiyo codsiyada ku salaysan shabakadda halkii aan ka isticmaali lahaa barnaamijyada desktop-ka sida browserka ama tifaftiraha qoraalka. Qalabkan waxaa loogu talagalay horumariyeyaasha iyo naqshadeeyayaasha doonaya inay fahmaan sida barnaamijyada Linux ama Unix u shaqeeyaan iyo sida loo qaabeeyo si ay u helaan waxqabad sare.

Linux waa qolka serverka nidaamka hawlgalka, iyo inta badan codsiyadaadu waxay ku shaqeeyaan OS-kan. In kasta oo aan idhaahdo "Linux", inta badan waxaad si ammaan ah u qaadan kartaa in aan ula jeedo dhammaan nidaamyada hawlgalka ee Unix u eg. Si kastaba ha ahaatee, kuma tijaabin koodka la socda nidaamyada kale. Markaa, haddii aad xiisaynayso FreeBSD ama OpenBSD, natiijooyinkaagu way kala duwanaan karaan. Marka aan isku dayo wax Linux-gaar ah, waxaan tilmaamayaa.

Iyadoo aad u isticmaali karto aqoontan inaad app ka dhisto meel eber ah oo si fiican loo hagaajin doono, waxaa fiican inaadan taas samayn. Haddii aad ku qorto server-ka cusub ee C ama C++ codsiga ganacsiga ee ururkaaga, tani waxay noqon kartaa maalinta ugu dambeysa ee shaqada. Si kastaba ha ahaatee, ogaanshaha qaabka codsiyadan ayaa kaa caawin doona doorashada barnaamijyada jira. Waxaad awood u yeelan doontaa inaad is barbardhigto nidaamyada nidaamka ku salaysan iyo nidaamyada dunta ku salaysan iyo sidoo kale kuwa ku salaysan dhacdada. Waad fahmi doontaa oo aad qadarin doontaa sababta Nginx uu uga fiican yahay Apache httpd, sababta codsiga Python ku salaysan Tornado uu u adeegi karo isticmaaleyaal badan marka la barbar dhigo codsiga Python ku salaysan Django.

ZeroHTTPd: Qalabka Waxbarashada

eberHTTPd waa server-ka aan ka soo qoray C oo ah qalab wax lagu baro. Ma laha wax ku tiirsan dibadeed, oo ay ku jiraan gelitaanka Redis. Waxaan maamulnaa habraacyadayada Redis. Hoos ka daawo faahfaahin dheeraad ah

In kasta oo aan ka doodi karno aragti dheer, ma jiraan wax ka wanaagsan qorista koodka, socodsiinta, iyo isbarbardhigga dhammaan naqshadaha serverka midba midka kale. Tani waa habka ugu cad. Sidaa darteed, waxaanu qori doonaa server-ka ZeroHTTPd fudud anagoo adeegsanayna nooc kasta: habraac ku salaysan, dun ku salaysan, iyo dhacdo ku salaysan. Aynu eegno mid kasta oo ka mid ah server-yadan oo aan aragno sida ay u shaqeeyaan marka la barbardhigo midba midka kale. ZeroHTTPd waxa lagu fuliyaa hal fayl oo C. Seerfar ku salaysan dhacdada waxa ku jira uthash, hirgalinta miiska xashiishka weyn ee ku yimaada hal fayl madaxeed. Xaaladaha kale, ma jiraan ku-tiirsanaan, si aan loo adkeyn mashruuca.

Waxaa jira faallooyin badan oo ku jira koodka si ay kaaga caawiyaan inaad fahamto. Ahaanshaha server-ka fudud ee dhowr sadar oo kood ah, ZeroHTTPd sidoo kale waa qaab-dhismeedka ugu yar ee horumarinta shabakadda. Waxay leedahay shaqeyn xaddidan, laakiin waxay awood u leedahay inay u adeegto faylal taagan iyo bogag "firfircoon" oo aad u fudud. Waa inaan sheegaa in ZeroHTTPd ay ku fiican tahay barashada sida loo abuuro codsiyada Linux ee waxqabadka sare leh. Guud ahaan, inta badan adeegyada shabakada waxay sugaan codsiyada, hubi oo ka baaraandega. Tani waa sida saxda ah waxa ZeroHTTPd samayn doono. Kani waa qalab wax lagu barto ee maaha wax soo saar. Kuma fiicna maaraynta khaladka oo uma badna in lagu faano dhaqamada amniga ugu fiican (oh haa, waan isticmaalay strcpy) ama xeeladaha xariifnimada leh ee luqadda C. Laakiin waxaan rajeynayaa inay si fiican u qabato shaqadeeda.

Waxqabadka codsiga shabakadda Linux. Hordhac
ZeroHTTPd bogga guriga Waxay soo saari kartaa noocyo kala duwan oo faylal ah oo ay ku jiraan sawirro

Codsiga Buugga Martida

Codsiyada shabakada casriga ah badanaa kuma koobna faylasha taagan Waxay leeyihiin is-dhexgal adag oo kala duwan oo xog-ururin ah, khasnado, iwm. Markaa waxaan abuuri doonaa codsi shabakadeed fudud oo la yiraahdo "Buugga Martida" halkaas oo booqdayaashu ay kaga tagaan liiska magacyadooda. Buuga martida waxa uu kaydiyaa galinta hore ee looga tagay. Waxa kale oo jira miiska booqde ee bogga guntiisa.

Waxqabadka codsiga shabakadda Linux. Hordhac
Codsiga shabakada "Buug Martida" ZeroHTTPd

Miiska booqdaha iyo buuga martida waxa lagu kaydiyaa Redis. Xiriirinta Redis, habab u gaar ah ayaa la fuliyaa, kuma xirna maktabadda dibadda. Ma ihi taageere weyn oo soo saarida koodka homebrew marka ay jiraan xalal si cad loo heli karo oo si wanaagsan loo tijaabiyay. Laakiin ujeedada ZeroHTTPd waa in la barto waxqabadka Linux iyo helitaanka adeegyada dibadda, iyada oo u adeegida codsiyada HTTP ay leedahay saameyn waxqabad oo culus. Waa inaan si buuxda u xakameyno isgaarsiinta Redis mid kasta oo ka mid ah naqshadaha server-keena. Dhismayaasha qaarkood waxaan isticmaalnaa xannibaadda wicitaanada, kuwa kalena waxaan isticmaalnaa habab ku saleysan dhacdada. Isticmaalka maktabadda macmiilka ee Redis dibadda ma bixin doonto xakamayntan. Intaa waxaa dheer, macmiilkayaga yar ee Redis wuxuu qabtaa oo kaliya dhowr hawlood (helitaanka, dejinta iyo kordhinta furaha; helitaanka iyo ku darida diyaarinta). Intaa waxaa dheer, borotokoolka Redis waa mid aad u qurux badan oo fudud. Xitaa uma baahnid inaad si gaar ah u barato. Xaqiiqda ah in hab-maamuusku uu dhammaan shaqada ku qabto ilaa boqol xariiq oo kood ah ayaa tusinaysa sida wanaagsan ee looga fikiray.

Jaantuska soo socdaa wuxuu muujinayaa waxa codsigu sameeyo marka macmiilku (browser) codsado /guestbookURL.

Waxqabadka codsiga shabakadda Linux. Hordhac
Sida codsiga buuga martida u shaqeeyo

Marka bogga buugga martida loo baahan yahay in la soo saaro, waxaa jira hal wicitaan oo loo diro nidaamka faylka si loo akhriyo templateka xusuusta iyo saddex wicitaan oo shabakad ah oo loo diro Redis. Faylka template wuxuu ka kooban yahay inta badan waxyaabaha HTML ee bogga sawirka kore. Waxa kale oo jira meelo gaar ah oo loogu talagalay qaybta firfircoon ee nuxurka: boostada iyo miiska booqdaha. Waxaan ka helnaa iyaga Redis, geli bogga oo siinaa macmiilka nuxur si buuxda loo sameeyay. Wicista saddexaad ee Redis waa laga fogaan karaa sababtoo ah Redis waxay soo celisaa qiimaha cusub ee muhiimka ah marka la kordhiyo. Si kastaba ha ahaatee, server-kayaga, kaas oo leh qaab-dhismeed ku-saleysan dhacdo-ku-saleysan, wicitaanno badan oo shabakadeed ayaa tijaabo fiican u ah ujeedooyinka waxbarasho. Markaa waanu tuurnay qiimihii soo celinta Redis ee tirada booqdayaasha waxaana ku waydiinaynaa wicitaan gaar ah.

Nashqadaynta adeegaha ZeroHTTPd

Waxaan dhisaynaa todoba nooc oo ZeroHTTPd ah oo leh shaqo isku mid ah laakiin qaabab kala duwan:

  • Isku celcelin
  • Seerfar fargeeto ah (hal habraac codsi kasta)
  • Seerarka hore ee fargeetada (kahor fargeetada hababka)
  • Server-ka leh dunta fulinta (hal dun codsigiiba)
  • Server-ka leh abuurka hore ee dunta
  • Dhismaha ku salaysan poll()
  • Dhismaha ku salaysan epoll

Waxaan cabbirnaa waxqabadka dhisme kasta annagoo ku shubaya server-ka codsiyada HTTP. Laakin marka la is barbar dhigo qaab-dhismeedka aadka isku midka ah, tirada weydiimaha ayaa kordha. Waxaan tijaabineynaa seddex jeer waxaanan xisaabineynaa celceliska.

Habka tijaabada

Waxqabadka codsiga shabakadda Linux. Hordhac
Dejinta tijaabada culeyska ZeroHTTPd

Waxaa muhiim ah in marka imtixaannada la wado, dhammaan qaybaha aysan ku socon hal mashiin. Xaaladdan oo kale, OS-gu waxa uu keenayaa jadwal jadwal dheeraad ah oo dheeraad ah maaddaama qaybaha ay u tartamayaan CPU. Cabbiraadda nidaamka hawlgalka ee ka sarreeya mid kasta oo ka mid ah qaab-dhismeedka server-yada la doortay waa mid ka mid ah yoolalka ugu muhiimsan ee layligan. Ku darista doorsoomayaal badan ayaa wax u dhimi doonta habka. Sidaa darteed, goobta sawirka kore ayaa si fiican u shaqeysa.

Muxuu qabtaa mid kasta oo ka mid ah adeegayaashan?

  • load.unixism.net: Waa halka aan ku socono ab, Apache Benchmark utility. Waxay abuurtaa culeyska loo baahan yahay si loo tijaabiyo naqshadaha server-keena.
  • nginx.unixism.net: Mararka qaarkood waxaan rabnaa inaan wadno wax ka badan hal tusaale oo ah barnaamijka server-ka. Si tan loo sameeyo, server-ka Nginx ee leh goobaha ku habboon wuxuu u shaqeeyaa sidii miisaan-qaade ka yimid ab habka server-kayaga.
  • zerohttpd.unixism.net: Halkan waxaan ku socodsiineynaa barnaamijyadeena server-ka todobada qaab ee kala duwan, midba mar.
  • redis.unixism.net: Server-kani waxa uu wadaa Redis daemon, halkaas oo lagu kaydiyo buugta martida iyo xisaabaadka martida.

Dhammaan server-yada waxay ku shaqeeyaan isla processor-ka asaasiga ah. Fikradda ayaa ah in la qiimeeyo waxqabadka ugu sarreeya ee naqshad kasta. Maadaama dhammaan barnaamijyada server-ka lagu tijaabiyay qalab isku mid ah, tani waa aasaaska isbarbardhigga. Habaynta tijaabadaydu waxa ay ka kooban tahay adeegayaal macmal ah oo laga soo kiraysto Badweynta Dijital ah.

Maxaynu cabbiraynaa?

Waxaad cabbiri kartaa tilmaamayaasha kala duwan. Waxaan ku qiimeyneynaa waxqabadka qaab dhismeed kasta qaabeynta la bixiyay anagoo ku rarayna adeegayaasha codsiyada heerarka kala duwan ee isbarbardhigga: culeysku wuxuu ka koraa 20 ilaa 15 isticmaaleyaal isku xiran.

Natiijooyinka Tijaabada

Shaxda soo socotaa waxay tusinaysaa waxqabadka adeegayaasha ee dhismooyinka kala duwan ee heerarka kala duwan ee isbarbardhigga. dhidibka y waa tirada codsiyada ilbiriqsikiiba, dhidibka x waa isku xidhka barbar socda.

Waxqabadka codsiga shabakadda Linux. Hordhac

Waxqabadka codsiga shabakadda Linux. Hordhac

Waxqabadka codsiga shabakadda Linux. Hordhac

Hoos waxaa ku yaal miis ay ku jiraan natiijooyinka

codsiyada ilbiriqsikii

isbarbaryaac
ku celcelin
fargeeto
fargeeto ka hor
qulqulka
horu-socodka
doorashada
epol

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
faafin ballaaran
2138

5000
-
faafin ballaaran
1600
1100
2519
-
2235

8000
-
-
1200
faafin ballaaran
2451
-
2100

10
-
-
faafin ballaaran
-
2200
-
2200

11
-
-
-
-
2200
-
2122

12
-
-
-
-
970
-
1958

13
-
-
-
-
730
-
1897

14
-
-
-
-
590
-
1466

15
-
-
-
-
532
-
1281

Laga soo bilaabo garaafka iyo miiska waxaa laga arki karaa in ka sarreeya 8000 codsiyada isku mar ah waxaan haysanaa laba ciyaaryahan oo kaliya: pre-fargeeto iyo epoll. Marka uu culeysku sii kordho, server-ku-salaysan ra'yi ururinta ayaa ka sii liita mid ka sii qulqulaya. Nashqada dunta ka hor-abuurista ayaa ah tartame u qalma in la kordhiyo, marag madoonta ah sida wanaagsan ee kernel Linux u jadwaleeyo tiro badan oo dunta ah.

ZeroHTTPd Koodhka Isha

ZeroHTTPd Koodhka Isha halkan. Waxaa jira hage gaar ah oo dhisme kasta ah.

ZeroHTTPd │ ├── 01_iterative │ ├── main.c ├── 02_fargeeto │ ├── main.c ├── main.c 03_ dunta │ ├── main.c ├── 04_prethreading │ ├── main.c ├── 05_poll │ ├── main.c ├── 06_epoll ├── index .html │ └── tux png └── qaab-dhismeedka └── buugga martida └── index.html

Marka lagu daro todoba buug oo loogu talagalay dhammaan qaab-dhismeedyada, waxaa jira laba kale oo ku jira tusaha heerka sare: dadweynaha iyo qaab-dhismeedka. Midka hore wuxuu ka kooban yahay faylka index.html iyo sawirka shaashadda koowaad. Waxaad ku dhejin kartaa faylal kale iyo faylalyo kale, ZeroHTTPd waa inay u adeegtaa faylalkaas iyada oo aan wax dhibaato ah dhicin. Haddii dariiqa browser-ku uu la mid yahay dariiqa ku jira galka dadweynaha, markaas ZeroHTTPd waxay raadisaa faylka index.html ee hagahan. Waxa ku jira buugga martida waxa loo soo saaray si firfircoon. Waxay leedahay bog guri oo keliya, nuxurkeeduna wuxuu ku salaysan yahay faylka 'templates/Guestbook/index.html'. ZeroHTTPd waxay si fudud ugu daraa bogag firfircoon si loo kordhiyo. Fikradda ayaa ah in isticmaalayaashu ay ku dari karaan habab buug-tusahaan oo ay u kordhiyaan ZeroHTTPd haddii loo baahdo.

Si aad u dhisto dhammaan todobada server, orod make all laga bilaabo tusaha heerka sare - iyo dhammaan dhismooyinka ayaa ka muuqan doona buuggan. Faylasha la fulin karo waxay raadiyaan dadweynaha waxayna qaabeeyaan hagaha hagaha laga soo saaray.

Linux API

Uma baahnid inaad si fiican u taqaan Linux API si aad u fahanto macluumaadka ku jira taxanaha maqaalkan. Si kastaba ha ahaatee, waxaan ku talinayaa in aad wax badan ka akhrido mawduucan; waxaa jira ilo tixraac oo badan oo ku jira internetka. In kasta oo aan taaban doono dhawr qaybood oo APIs Linux ah, diiraddayadu waxay ahaan doontaa ugu horrayn hababka, dunta, dhacdooyinka, iyo xidhmooyinka shabakadda. Marka lagu daro buugaagta iyo maqaallada ku saabsan Linux API, waxaan sidoo kale ku talinayaa in aan akhriyo mana u ah wicitaanada nidaamka iyo hawlaha maktabadda ee loo isticmaalo.

Waxqabadka iyo Miisaanka

Hal qoraal oo ku saabsan waxqabadka iyo miisaanka. Aragti ahaan, ma jiro xiriir ka dhexeeya. Waxaad heli kartaa adeeg shabakadeed oo si aad u wanaagsan u shaqeeya, oo leh waqti jawaab celin ah dhowr millise seconds, laakiin gabi ahaanba ma cabbirayo. Sidoo kale, waxaa jiri kara arji shabakadeed si liidata oo qaadata dhawr ilbiriqsi si ay uga jawaabto, laakiin waxa ay ku miisaamaysaa tobanaan si ay u qabato tobanaan kun oo isticmaaleyaal ah. Si kastaba ha ahaatee, isku-dhafka waxqabadka sare iyo miisaanka ayaa ah isku-dar aad u xoog badan. Codsiyada waxqabadka sare leh guud ahaan waxay u isticmaalaan agabka si yar oo sidaas darteed si hufan ugu adeega isticmaaleyaal badan oo isku xidhan serverka, hoos u dhigista kharashyada.

Hawlaha CPU iyo I/O

Ugu dambeyntii, xagga xisaabinta waxaa had iyo jeer jira laba nooc oo hawlood oo suurtagal ah: I/O iyo CPU. Helitaanka codsiyada internetka (shabakadda I/O), u adeegida faylasha (shabakadda iyo diskka I/O), la xidhiidhka xogta xogta (shabakadda iyo diskka I/O) waa dhammaan hawlaha I/O. Qaar ka mid ah weydiimaha xogta waxay noqon karaan xoogaa CPU xoog leh (kala-saarid, celcelis ahaan natiijooyin milyan, iwm.). Inta badan codsiyada webka waxaa xadiday I/O ugu badnaan ee suurtogalka ah, iyo processor-ku naadir ayaa loo isticmaalaa awood buuxda. Markaad aragto in qaar ka mid ah hawlaha I/O ay isticmaalayaan CPU badan, waxay u badan tahay inay calaamad u tahay qaab-dhismeedka codsiga liita. Tani waxay la macno noqon kartaa in agabka CPU lagu lumiyo maaraynta habka iyo beddelka macnaha guud - tanina gabi ahaanba faa'iido ma leh. Haddii aad samaynayso wax sida sawir-samaynta, beddelka faylka maqalka, ama barashada mashiinka, markaa codsigu wuxuu u baahan yahay ilo awood leh oo CPU ah. Laakiin inta badan codsiyada tani maahan kiiska.

Wax badan ka baro naqshadaha server-ka

  1. Qaybta I: Qaab-dhismeedka Is-beddelka
  2. Qaybta II. Adeegayaasha fargeetada
  3. Qaybta III. Adeegayaasha fargeetada ka hor
  4. Qaybta IV. Adeegayaasha leh dunta fulinta
  5. Qaybta V. Adeegayaasha hore loo sii xidhay
  6. Qaybta VI. Nashqada ku salaysan Pol
  7. Qaybta VII. qaab-dhismeedka epoll-ku-saleysan

Source: www.habr.com

Add a comment