클라우드 컴퓨팅 & NoSQL/Vert.x & Node.js

Vertx 개념 잡기 (instance,thread,classloader,standard verticle,worker verticle)

Terry Cho 2014. 2. 3. 00:24

Vertx 개념 잡기 (instance,thread,classloader,standard verticle,worker verticle)

 

l  Verticle :Vert.x의 하나의 애플리케이션 일종의 Vertx Servlet이라고 이해하면 빠름

Ÿ   기본 특성 : 독립된 Class Loader에서 독립된 Oject로 존재함 > Multi threading 문제가 발생하지 않음.

Ÿ   ELP (Event Loop) Verticle : 일반 Verticle. 항상 같은 Thread에서만 돈다. 같은 Verticle은 여러개의 Verticle instance로 존재할 수 있으며, 동시에 각각의 Thread에서 수행하는 것이 가능함.

Ÿ   Worker Verticle – ( Q에서 subscribe 받아서 뒤에서 비동기로 처리하는 Verticle. Q 대신 Hazelcast를 큐로 사용함. Long running 작업을 수행하는 용도로 사용한다.

자신의 Class Loader에 의해서 로딩된 Worker Object Worker Instance라고 한다.
 
하나의 Worker는 여러개의 Thread에서 수행될 수 있으나, 여러 쓰레드에서 수행되는 Worker가 코드는 같을 수 있으나, 실제 ObjectClassLoader는 다르기 때문에(테스트 통해서 확인함) Isolation이 되는 특성은 똑같음. 그래서 결과적으로, Verticle은 하나의 Thread에서만 동시 수행된다는 특성을 유지할 수 있음

Worker의 경우 Worker Verticle Instance Thread Pool에 의해서 수행되기 때문에, 동일한 같은 Worker Instance라도, 다른 Thread에서 수행될 수 있으나, 동시에 여러 쓰레드에서는 수행되지 않는다.

Worker Instance의 개수는 해당 Worker의 객체의 개수이며, 이는 Thread수와는 다르다. Thread Pool 10개이고, Worker Instance 5개 이면, 동시 수행되는 Worker Instance 5개가 된다..

l  Vertx instance : 하나의 Vertx Server로 하나의 JVM Process와 맵핑 된다고 보면됨. WebLogic instance (서버) 개념과 맵핑됨. 당연히 하나의 물리적인 서버에서 여러개의 Vertx instance를 실행할 수 있음

l  Verticle instance: 하나의 Verticle 객체. Verticle은 항상 자신만의 Thread를 가지고 있고 다른 Verticle과는 해당 Thread를 공유하지 않는다



쉽게 생각하면. 

Verticle은 Servlet

Verticle Instance는 같은 소스의 Servlet을 가지고 있는 war

정도로 생각하면 대충 개념이 맞음.


그리드형