Vert.x Core
Vert.x core contains fairly low-level functionality, including support for HTTP, TCP, file system access, and various other features. You can use this directly in your own applications, and it’s used by many of the other components of Vert.x.
Vert.x中,有以下的核心概念需要了解
Vertx
Vertx实例(instance)可以通过静态工厂方法
创建,一个Vertx实例可以用于部署HTTP、TCP Server,client等等操作,可以将Vertx instance看做一个Vert.x Core API 的入口。
Eventloop
Vert.x使用了Reactor模型,通过Event driven的方式,将Events分发到handlers中进行处理,任何event都不会阻塞Eventloop线程,这样Eventloop线程可以一直保持高速分发Events的速度。假设在同一时间有很多HTTP请求到达服务器,Eventloop会将每一个http request分发到handler中处理,比如有10K个Requests,假设服务器想在1s内处理这些requests,那么平均算下来Eventloop必须能在0.1ms内分发完每个event,一旦Eventloop被阻塞,整个服务器吞吐量都会受到极大影响。所以Eventloop绝对不应该被阻塞住,所有交给Eventloop去处理的event都应该是non-blocking(I/O)的方式或者CPU执行时间较短的,这样才能确保每个event得到及时的分发。
而Vert.x不仅仅实现了Reactor模型,还实现了Multi-Reactor模型,也就是说,每个Vertx instance都会有多个Eventloop,默认的设置是Eventloop数量对应CPU核心数量乘以2,在VertxOptions类中可以看到
|
|
可以通过setEventLoopPoolSize()
方法改变Vertx实例拥有Eventloop的数量。