Event Loop is not new and also not specific to Vert.x (used in Node.js). I will be talking about it, in a top down fashion.
Vert.x is a library (yes, it's just jar) which allows to develop Reactive applications on JVM. Reactive system is defined in Reactive Manifesto. Vert.x supports this manifesto, so it enables application written in Vert.x to be - Responsive, Elastic, Resilient and Message driven.
Vert.x is a library (yes, it's just jar) which allows to develop Reactive applications on JVM. Reactive system is defined in Reactive Manifesto. Vert.x supports this manifesto, so it enables application written in Vert.x to be - Responsive, Elastic, Resilient and Message driven.
The last point (Message Driven) of reactive manifesto defines the essence of Vert.x - It's event/message driven and non-blocking/asynchronous. This means, different components interact with each other asynchronously by passing messages.
//Synchronous and blocking API call
Object obj = new MyObject();
obj.fetchDataFromUrl(url);
The traditional application makes blocking API call, so calling thread waits until the response is available. This means until the response is available the thread is sitting ideal and doing nothing. This is not a good thing from a resource utilization point of view. Now, how about making that thread more specialized whose job is only to post request, i.e. it's not going to wait for a response to arrive. The thread will go on doing only one thing till the sky falls. This way the thread will not be sitting ideal (unless there is NO request). Putting it in a more generic term, the thread will be passing on messages or events.
Event Loop is basically a thread (or a group of threads; Vert.x matches it closest to CPU cores) whose job is to keep passing on messages to their specific handlers. The threads pick the event (from a queue) and then hands over the event to the right handler. Event loop maintains the order (as it picks the events internally from a queue) and it's also synchronous as there is going to be one or limited threads (Note: they themselves are synchronous). Vert.x allows configuring the number of threads (one per core of the CPU). Handlers are always called by the same event loop so there is no need of synchronization.
Event Loops are limited and so special, so blocking them will be disaster. Event loop calls the method asynchronously and in a non-blocking manner. Once the response arrives the same event loop calls the callback.
References
http://vertx.io/docs/vertx-core/java/#_in_the_beginning_there_was_vert_x
http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf
http://vertx-lab.dynamis-technologies.com/
https://github.com/vietj/vertx-materials/blob/master/src/main/asciidoc/Demystifying_the_event_loop.adoc
https://strongloop.com/strongblog/node-js-event-loop/
http://www.enterprise-integration.com/blog/vertx-understanding-core-concepts/
Enjoyed reading the article above, really explains everything in detail, the article is very interesting and effective. Thank you and good luck for the upcoming articles nodejs training
ReplyDeleteThank you very much for this wonderful information. I hope so many people will be aware of it and helpful too. And please continue the update like this.
ReplyDeleteNode JS Online training
Node JS training in Hyderabad
Really good information to show through this blog. I really appreciate you for all the valuable information that you are providing us through your blog.
ReplyDeletevisit : Digital Marketing Training in Chennai ||
Digital Marketing Course in Chennai
perde modelleri
ReplyDeletesms onay
mobil ödeme bozdurma
NFTNASİLALİNİR.COM
Ankara Evden Eve Nakliyat
Trafik sigortasi
Dedektör
web sitesi kurma
aşk kitapları
Success Write content success. Thanks.
ReplyDeletekıbrıs bahis siteleri
betturkey
canlı poker siteleri
canlı slot siteleri
betmatik
deneme bonusu
betpark
dijital kartvizit
ReplyDeletereferans kimliği nedir
binance referans kodu
referans kimliği nedir
bitcoin nasıl alınır
resimli magnet
S8JZV
hatay
ReplyDeletekars
mardin
samsun
urfa
3G7
شركة مكافحة النمل الابيض بالجبيل dxz1CmVBiW
ReplyDelete