Linux retis application effectus. Introductio

Applicationes interretiales nunc ubique adhibentur, et inter omnes protocolla oneraria HTTP partem leonis occupat. Plerique, cum extenuationes applicationis interretialis evolutionis student, minime operam dant ad systema operantem ubi hae applicationes actu currunt. Separatio evolutionis (Dev) et operationum (Ops) tantum condicionem deteriorem fecit. Sed cum culturae DevOps oriuntur, tincidunt responsabiles fiunt ad applicationes suas in nube currendi, ut valde utiles sint iis in posteriori systematis operantis perquam familiares. Hoc maxime utile est si systema mille vel decem milia coniunctionum simultaneorum explicare conaris.

Limitationes in officiis interretialibus illis in aliis applicationibus valde similes sunt. Utrum libratores oneris vel servers datorum, omnes istae applicationes similes difficultates in ambitu magni operis habent. Has limitationes fundamentales intellegentes et quomodo eas generaliter expugnare proderit, ad effectum et scalam applicationum interreti tui aestimandas.

Articulorum seriem hanc scribo cum interrogationibus e tincidunt iuvenum respondendo, qui architectores systematis bene informati fieri volunt. Impossibile est clare intelligere Linux applicationes optimizationes technicas sine sollicitudine in basics quomodo operantur in gradu systematis operantis. Etsi multa genera applicationum sunt, in hac serie quaere applicationes textus-basientes potius quam applicationes escriticas explorare volo sicut in navigatro vel editore texto. Haec materia destinata est tincidunt et architecti, qui intellegere volunt quomodo programmata Linux vel Unix operantur et quomodo eas ad altam agendi rationem condant.

Linux est server locus systema operandi, et frequentius applicationes tuae in hoc OS currunt. Etsi dico "Linux", frequentius tuto assumere potes me omnia genera unix-similis operandi in genere. Tamen in aliis systematibus codicem comitantem non probavi. Si igitur in FreeBSD vel OpenBSD curaris, eventus tui variari possunt. Quando aliquid speciale Linux conor, monstravero.

Dum hac scientia uti potes facere app a VULNUS et perfecte optimized est, id non facere optimum est. Si novam telam server in C vel C ++ scribes pro applicatione negotii tui organizationis, hic dies ultimus erit in officio. Nihilominus cognoscens structuram harum applicationum iuvabit ad programmata eligenda. Systemata processus fundatum cum systematibus filo substructis et cum eventu fundatum comparare poteris. Intelleges et appretiaris cur Nginx melius quam Apache httpd agat, cur turbo Pythonis inposita applicatio plus usorum ad Django fundatum applicationis Pythonis inservire potest.

ZeroHTTPd: Learning Mors

ZeroHTTPd interretialis cultor est quem de integro in C scripsi ut instrumentum docendi. Nullas habet clientelas externas, inclusis ad Redis aditum. Redis nostris currimus agendis. Vide infra ad plura.

Quamvis theoriam fuse disserere possemus, nihil est melius quam scripturam codici, cursim, et omnes architecturae cultoris inter se comparantes. Haec est ratio manifestissima. Ideo simplici ZeroHTTPd servo interretiali utentes exemplaribus singulis scribemus: processum substructum, substructum, eventum substructum. Singulos istorum servientium inspiciamus et videamus quomodo inter se comparati agant. ZeroHTTPd est implemented in uno C lima. In eventu, secundum servo includit utash, magna exsecutio tabulae Nullam in unius fasciculi caput. In aliis casibus nullae sunt clientelae, ne inpediant res.

Multa commentaria in codice ad intellegendum adiuvandum sunt. Cum simplex sit server tela in paucis lineis codicis, ZeroHTTPd etiam minimum compages pro evolutione interreti est. Habet functionem limitatam, sed potest servire staticis et simplicissimis paginis "dynamicis". Habeo dicere ZeroHTTPd bonum esse ad discendum quomodo creare applicationes summus perficientur Linux. Per et ampla, plurima officia interretialia petitiones exspectant, eas coercet ac processus facit. Istuc ipsum ZeroHTTPd facturus est. Hoc discendi instrumentum est, non productionis. Non magni erroris tractatio est, et veri simile est iactare optimas cautiones (oh yeah, ego usus sum" strcpy) vel callidiores linguae C. Sed spero bene facere suum officium.

Linux retis application effectus. Introductio
ZeroHTTPd paginam. Potest output alia lima genera comprehendo imagines

Hospes Book Application

Applicationes interretialis modernae plerumque non limitantur ad tabularia stataria. Commerationes multiplices habent cum variis databases, caches, etc. Ita nos applicationes simplices interretiales nomine "Guest Book" creabimus ubi visitatores viscus sub eorum nominibus exeunt. Hospes libri rerum omnium vanitatum mundi reliquerunt. In imo paginae occurro etiam est peregrinus.

Linux retis application effectus. Introductio
Web application "Libri Hospes" ZeroHTTPd

Visitator calculi et hospites libri viscus in Redis reponuntur. Communicationes cum Redis propriae rationes perficiantur, non dependent ab externa bibliotheca. Non sum magnus ventilabrum e codice homebrew volvendo cum praesto sunt publice solutiones probatae. Sed propositum ZeroHTTPd est studere Linux perficiendi et accessus ad officia externa, dum petitiones HTTP serviens gravis effectus ictum habet. Communicationes cum Redis in singulis architecturis servientis nostris plene moderari debemus. In quibusdam architecturae vocationibus interclusio utimur, in aliis agendi ratio. Usus clientis extra Redis bibliothecam hanc potestatem non praebebit. Praeterea clientis nostri parvi Redis pauca munera tantum fungitur (acquisitio, occasus et incrementa clavis; questus et addens ad aciem). Redis praeterea protocollum perquam elegans ac simplex est. Illud etiam specialiter docere non debes. Hoc ipsum quod protocollum facit totum opus in centum fere lineis codicis ostendit quam bene excogitatum sit.

Sequens figura ostendit quid applicatio facit cum cliens petit /guestbookURL.

Linux retis application effectus. Introductio
Quomodo hospes libro application operatur

Cum hospes paginae libri edendae sunt, una ratio tabellae vocatio est ut Formulam in memoriam legas et tres retiacula ad Redis vocat. Exemplum documenti plus continet HTML contentum pro pagina in screenshot supra. Sunt etiam speciales locatores pro dynamica parte contenti: nuntia et visitator occurro. Eas ex Redis accipimus, eas in paginam inserentes et clienti argumento plene formato praebebimus. Tertia vocatio ad Redis vitari potest quia Redis redit novum valorem clavem cum incremento. Tamen pro servo nostro, qui architecturae asynchronae eventus fundatus habet, multum retis vocat bonum experimentum ad discendum propositum. Relinquemus igitur Redis valorem reditus salutantium et interrogationem illam cum vocatione separata.

Servo architecturae ZeroHTTPd

Septem versiones ZeroHTTPd eadem officiatis sed diversis architecturis aedificamus:

  • Iterative
  • Furca server (unum puerum processus per petitionem)
  • Pre-furca server (pre-furca processuum)
  • Servo cum filis supplicium (unum per petitionem)
  • Servo cum pre-stamina creationis
  • Architecture fundatur poll()
  • Architecture fundatur epoll

Uniuscuiusque architecturae observantia metimur oneratisque ministris petitionibus HTTP. Cum vero architecturae valde parallelae comparent, numerus quaesitorum augetur. Ter probamus et medium computamus.

Testis methodologia

Linux retis application effectus. Introductio
ZeroHTTPd onus probatio setup

Aliquam sit amet cursus quam, omnes partes non currunt in eadem machina. Hoc in casu, OS incurrit additional scheduling supra caput ut componentes CPU certantes. Singularum architecturae delectae servientis supra caput operandi metiuntur una ex maximis proposita huius exercitationis. Plures variabiles addito processu detrimentum fiet. Constitutio igitur in tabula super opera optima.

Quid horum quisque facere servientibus?

  • load.unixism.net: Haec ubi currimus ab, Apache Probatio utilitatem. Onus generat necesse est ut architecturae servitoris experiatur.
  • nginx.unixism.net: Interdum plus uno instantia progressionis servientis currere volumus. Ad hoc faciendum, servo Nginx cum uncinis congruis laborat ut onus librarius ab ab nostro servo processibus.
  • zerohttpd.unixism.net: Hic curritur programmata servo nostro in septem architecturae diversis, uno ad tempus.
  • redis.unixism.net: Hic servo Redis daemonem decurrit, ubi repositae sunt hospitium et visitatoris calculi.

Omnes ministri currunt in eodem processu core. Idea est aestimare maximam cuiusque architecturae observantiam. Cum omnia programmata servo eiusdem ferramenta probentur, hoc ad comparationem baseline est. Mea test setup consistat de virtualis servers conducto ex Digital Ocean.

Quid metimur?

Diversis indicibus metiri potes. Aestimamus exsecutionem uniuscuiusque architecturae in certa configuratione, ministrantibus petitionibus onerantes in diversis gradibus parallelismi: crescit onus ab 20 usque ad 15 utentes concurrentes.

test results

Sequens chartula ostendit operas ministrantium in diversis architecturis in diversis gradibus parallelismi. In axe y-axis est numerus petitionum secundo, nexus x-axis parallelus est.

Linux retis application effectus. Introductio

Linux retis application effectus. Introductio

Linux retis application effectus. Introductio

Infra mensam cum proventus.

petitiones per alterum

parallelismum
iterative
furca
pre-furca
effusis
prior stream
suffragium
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
magnus propagationem
2138

5000
-
magnus propagationem
1600
1100
2519
-
2235

8000
-
-
1200
magnus propagationem
2451
-
2100

10
-
-
magnus propagationem
-
2200
-
2200

11
-
-
-
-
2200
-
2122

12
-
-
-
-
970
-
1958

13
-
-
-
-
730
-
1897

14
-
-
-
-
590
-
1466

15
-
-
-
-
532
-
1281

Ex graph et tabula videri potest supra 8000 petitiones simultaneas duas tantum habere lusores: prae-furca et epoll. Ut onus augetur, minister pollex substructus peius facit quam profusum. Architectura sequela prae-creatio est dignus competitor ad epoll, testamenta quam bene cedulas nucleos Linux magno numero sequelarum.

ZeroHTTPd Source Code

ZeroHTTPd Source Code hic. Est directorium separatum pro unaquaque architectura.

ZeroHTTPd 01_iterative main.c 02_forking main.c 03_preforking main.c 04_ threading main.c 05_prethreading main.c 06_poll main.c 07_epoll main.c Makefile public index .html tux . png templates guestbook index.html

Praeter septem directoria omnium architecturarum, duo sunt in summo directorio graduum: publici et templates. Primus indicem continet fasciculi et imaginem e primo screenshot. Alias ​​tabulas et folder ibi ponere potes, et ZeroHTTPd illis staticis lima sine ullis quaestionibus inservire debet. Si semita in navigatro iter in folder publici aequat, ZeroHTTPd index.html lima in hoc indice quaerit. Contentum pro hospite libro dynamice generatur. Solum paginam domesticam habet, eiusque contenta in tabella "templates/guestbook/index.html" fundatur. ZeroHTTPd facile paginas dynamicas pro extensione addit. Idea est quod utentes formulas huic directorio addere possunt et ZeroHTTPd prout opus est extendere.

Ad septem omnes aedificare servientes, currunt make all e summo directorio gradu - et omnia aedificationes in hoc presul apparebunt. Documenta exsecutiva exspectant directoria publica et templates in indicem e quibus illatae sunt.

Linux API

Non opus est tibi bene callere in Linux API ut notitias in hac serie articuli cognoscas. Sed plura de hoc argumento legere commendo, multae sunt facultates in Interreti referentes. Quamquam plura genera Linux APIs attingemus, focus noster in processibus, staminibus, eventibus et retis acervo principaliter erit. Praeter libros et articulos de Linux API, etiam mana legendi commendo ad systema vocat ac munera bibliothecae adhibita.

Euismod ac Scalability

Una nota de observantia et scalabilitate. Cogitatione nulla est inter eos connexio. Ministerium interretialem habere potes quae optime operatur, cum responso aliquorum millium secundorum, sed omnino non scandit. Item, esse potest male applicationis interretialis faciendo quae brevi tempore respondeat, sed per decem lances ad decem milia utentium concurrentium tractat. Sed compositum est magna operandi et scalabilitas est valde potens compositio. Summus effectus applicationes plerumque parce opibus utuntur et sic efficaciter magis conveniunt usoribus in servo, sumptibus reducendis.

CPU et / o tasks

Denique in computando semper duo genera officiorum possibilia sunt: ​​I/O et CPU. Petitiones accipientes super Interreti (retis I/O), files servientes (retis et disci I/O), communicantes cum datorum (retis et disci I/O) sunt omnes actiones I/O. Aliquae interrogationes datorum paulum CPU intensiva esse possunt (voluptua, fere decies centena millia proventuum etc.). Plurimae applicationes interretiales a maximo maximo I/O limitatae sunt et processus rarius ad plenam capacitatem utendum est. Cum videris aliquem I/O negotium multum CPU utentem, verisimile est signum pauperis applicationis architecturae. Hoc significare potest CPU opes consumere in administratione rerum ac contextu commutationum - idque omnino utile non est. Si aliquid agis sicut processus imaginis, conversionis fasciculi audio, vel apparatus discendi, applicatio potentiarum CPU requirit. Sed in pluribus applicationibus hoc non contingit.

Disce de servo architecturae

  1. Pars I: Iterative Architecture
  2. Pars II. Furca servers
  3. Pars III. Pre-furca servers
  4. Pars IV. Servientes filis executionis
  5. Pars V. Pre-fila servers
  6. Pars VI. Pol-fundatur architectura
  7. Pars VII. epoll-fundatur architectura

Source: www.habr.com

Add a comment