Erősen terhelt rendszer, mik a fejlesztés alapelveit
hagyja így kétféle probléma:
- CPU kötött - különböző algoritmusok, matematikai, titkosítás / dekódolás / titkosítást. egyszóval mindent, ami a terhelés a processzort.
- I / O kötött - sőt, ha tartunk egy csomó műveletek I / O, ahol mintegy 90% -a kapcsolatos feladatokat a WEB szerver és a fejlesztés.
CPU Bound nem használhatja nyelvek, mint a C, Rust, Dlang, Go, stb Word of nyelvek összeállítani a hatékony gépi kódot.
Az I / O kötött - Menj, NodeJS, Erlang, Java. Igen, elvileg, nem számít, milyen nyelven, a lényeg, hogy használták volna a nem-blokkoló hívások, és nem blokkolja.
Mégis van egy sorban a feladatokat, méretezés, stb Az építészet és algoritmusokat használnak a rendszer befolyásolja gyakran jóval több, mint a programozási nyelvek.
Milyen nyelven vannak a legjobb használni erre? Mi nem használja?
Nincs határ, csak a józan ész. Ez nem valószínű fogjuk írni bonyolult matematikai node.js, de a problémák ezzel kapcsolatos sokkal kevesebb. Csak senki nem mondja, hogy a rendszer kell írni szigorúan ugyanazon a nyelven. Most divatos használni mikroservisy, amelyek mindegyike lehet megvalósítani a saját nyelvükön és az adatbázis, ideális egy adott feladatot.
Még nem szabad elfelejteni az algoritmusok. Azt is meg kell optimális. Például, hogy egy egyszerű feladat - csoportosítás címkék a térképen. Képzeljük el, hogy van egy alap millió tárgyak, meg kell jeleníteni a térképen. Mivel erre az ügyfél nehéz lesz - meg kell csinálni a szerveren, és vissza az ügyfélnek annyi adatot, amennyi szükséges.
És az ilyen összegeket akkor is, ha mi volt a C, ha a algoritmus komplexitása O (N ^ 2) hogyan itt semmit nem különösebben segíteni. És ez így lesz olyan lassú. De ha bármilyen algoritmusok bonyolultsága O (NLogN) ez már lehetséges, hogy ez az algoritmus lehet még php / python / rubin implementit. Például én ezt az algoritmust hajtják végre Java és nem a leghatékonyabb módon. Megbirkózik.
Még befolyásolja a sebességet a fejlődés (bármilyen ruby / python / node ebben a tekintetben jó), a támogatási költségeket (C fenntartása sokkal drágább, mint a Go például, bár ez mindig lehet írni olyan rossz, hogy könnyebb fenntartani, mint dobja), a fejlesztési költség. Például olcsó erős fejlesztők a Go vagy Rust lesz nagyon problematikus.
Csak ne felejtsük el, hogy a szerver már nem olyan drága. Néha könnyebb a vállalkozások többet fizetni, mint egy tucat szerverek írni a profik.
Valójában a fő szabály a nehéz rendszerek - stressz teszt, majd optimalizálhatja
> Bináris sorszámozás nem fog nyerni, ha nem a natív formátum az adatok a memóriában, vagy más V8-as motor.
Valahogy azt gyanítják, hogy a felső mindez jó, nem kevesebb, mint a szokásos értelmezési JSON. De szükségünk van referenciaértékeket. Általában az ötlet érdekes, és valahogy megpróbálja.