În articolul anterior am făcut o scurtă paralelă între Thread-uri și Events; am precizat că modelul Evented are un loop principal și 2 componente: detectarea evenimentelor (event detection) și manipularea evenimentelor (event handlers).

De ce modelul evented este mai eficient pentru server?

În mare parte serverele sunt proiectate pt. I/O, ceea ce înseamnă că, în majoritatea timpului, așteaptă operațiile I/O (conexiune la server, accesarea unei baze de date, citirea unui fișier de pe HDD, comunicarea cu un serviciu web extern, etc).

Să luăm un exemplu: după ce a terminat de redactat cartea, una din damele din articolul anterior intenționează să o trimită editorului. Se conectează la www.paginalui.ro, face upload la PDF și apăsa submit.

Serverul editorului este programat să ruleze următoarea rutină: Citeste mai departe »

De ceva timp am foarte mult de lucru (cam trei proiecte simultan de mult) și nu am foarte mult timp să găsesc articole interesante, cu atât mai puțin să le citesc (și să le recomand). Acesta e motivul pentru care am linkurile săptămânii la fiecare… două săptămâni. Spre dezamăgirea unora, sunt un simplu om; mă descurc și eu cum pot cu timpul.

  1. Eugen Tudorancea a scris primul guest post pe iamntz.com și Tutorial Node JS din seria dedicată NodeJS;
  2. jQuery Performance Tips and Tricks;
  3. Fundamentals For Great JavaScript & JQuery Development;
  4. Become a Javascript Console Power-User;
  5. Organize Your Code with RequireJS;
  6. jQuery 1.7 Beta Release Preview;
  7. Future-proofing Your JavaScript Applications For Improved Scalability;
  8. Design Patterns in Javascript;
  9. Some JavaScript Resources Worth Checking Out;
  10. Allen Pike: Tackling JavaScript;
  11. Scalable and Modular Architecture for CSS;
  12. How To Use Structural Pseudo Classes and Pseudo Element Selectors;
  13. What are CSS Shaders?
  14. WordPress Internals: How WordPress Boots Up;
  15. WordPress Essentials: The Definitive Guide To WordPress Hooks;
  16. How To Create Custom Post Meta Boxes In WordPress;
  17. Pulse – ceva drăguț;

Într-un sistem complex, interacțiunea și colaborarea dintre componentele sistemului prezintă principalele structuri când este vorba de efciența. Web-ul (Internetul) este un sistem (global) complex de rețele, servere interconectate care folosesc un protocol (set de reguli) standard, TCP/IP. O persoană care utilizează un Browser comunică cu serverele printr-un alt protocol standard, HTTP.

Datorită evoluției rapide a web-ului și dorinței de comunicare în timp real, serverele HTTP sunt nevoite să evolueze. O soluție eficientă pentru îmbunătățirea comunicării (interacțiunii) dintre utilizator și server o prezintă Node.js – evented I/O bazat pe V8 – JavaScript engine-ul de la Google.

Thread vs Evented

Să luăm un exemplu: 3 persoane se conectează simultan la www.paginata.ro

Site-ul este hostat pe un server cu Apache2, PHP, Linux (LAMP).

Serverul HTTP (Apache2) preia conexiunile și deschide un thread pentru fiecare conexiune. Fiecare thread va rula o instanță a fișierului index.php, îl va evalua integral, de sus până jos (synchronous). Citeste mai departe »

windows apple dropbox facebook twitter