Preskočite na sadržaj

VIII. Konkurentnost

Note

Sadržaj u nastavku je prijevod stranice VIII. Concurrency na web sjedištu The Twelve-Factor App.

VIII. Konkurentnost

Skalirajte prema van putem modela procesa

Svaki računalni program, jednom pokrenut, predstavljan je od strane jednog ili više procesa. Web aplikacije su imale različite oblike izvršenja procesa. Na primjer, PHP procesi se pokreću kao podređeni procesi Apachea, pokrenuti na zahtjev prema potrebi volumena zahtjeva. Java procesi imaju suprotan pristup, s JVM-om koji pruža jedan masivni uberproces koji rezervira veliki blok sustavskih resursa (CPU i memorija) pri pokretanju, s konkurentnošću kojom se interno upravlja putem niti. U oba slučaja, pokrenuti proces(i) samo su minimalno vidljivi razvojnim programerima aplikacije.

Skala se izražava kao broj pokrenutih procesa, raznolikost radnog opterećenja se izražava kao vrste procesa.

U dvanaestofaktorskoj aplikaciji procesi su "građani prve klase". Procesi u dvanaestofaktorskoj aplikaciji uzimaju snažne znakove iz Unixovog modela procesa za pokretanje uslužnih daemona. Koristeći ovaj model, razvojni programer može projektirati svoju aplikaciju za rukovanje različitim radnim opterećenjima dodjeljivanjem svake vrste posla vrsti procesa. Na primjer, HTTP zahtjevima može rukovati web proces, a dugotrajnim pozadinskim zadacima upravlja proces radnika.

To ne isključuje pojedinačne procese iz rukovanja vlastitim internim multipleksiranjem, putem niti unutar VM-a u vremenu izvođenja, ili asinkronog/događajnog modela koji se nalazi u alatima kao što su EventMachine, Twisted ili Node.js. No, pojedinačni VM može narasti samo tako velik (u uspravnoj skali), tako da aplikacija također mora moći obuhvatiti više procesa koji se pokreću na više fizičkih strojeva.

Procesni model uistinu zablista kada dođe vrijeme za skaliranje prema van. Ne-dijeli-ništa, horizontalno particiona priroda procesa dvanaestofaktorske aplikacije znači da je dodavanje više konkurentnosti jednostavna i pouzdana operacija. Niz tipova procesa i broj procesa svake vrste poznat je kao formiranje procesa.

Procesi dvanaestofaktorske aplikacije nikada se ne bi trebali daemonizirati ili pisati PID datoteke. Umjesto toga, oslanjaju se na upravitelja procesa operacijskog sustava (kao što je systemd, upravitelj distribuiranih procesa na platformi u oblaku ili alat kao što je Foreman u razvoju) za upravljanje izlaznim tokovima, odgovaranje na srušene procese i rukovanje ponovnim pokretanjima koja je započeo korisnik i isključivanjem.

Author: Adam Wiggins