File tree 1 file changed +33
-0
lines changed
1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Vert.X
2
+ vert.x 는 다양한 언어를 지원하는 서버 프레임워크이다. Node.js 와 유사하게 ** 비동기** 형태의 API 를 제공한다.
3
+
4
+ ## Verticle
5
+ 하나의 vert.x 인스턴스 안에는 많은 verticle 이 존재할 수 있다. 각각의 verticle 은 고유의 클래스 로더를 가진다.
6
+ verticle 은 이벤트 루프에 할당되고, 수행해야할 task 가 있을 때 항상 동일한 스레드에 의해 실행된다.
7
+
8
+ ## Event Bus
9
+ // TODO
10
+
11
+ ## Worker Verticle
12
+ // TODO
13
+
14
+ ## 멀티 인스턴스 지원
15
+ vert.x는 싱글 스레드의 이벤트 루프로 동작한다. 그렇지만 동시에 여러개의 이벤트 루프를 띄울 수 있다.
16
+ > core 엔진 코드상으로는 default로 CPU 갯수 만큼 생성되는 것 같다. 물론 설정을 통해 값을 조정할 수 있다.
17
+
18
+ 멀티 스레드를 띄워서 동시에 여러 verticle 을 실행할 수 있지만, 일반적인 WAS 의 멀티 스레딩 모델과는 다르게 동작한다.
19
+ 여러 스레드를 띄우더라도 각 스레드는 독립적인 이벤트 루프로 각 스레드간 공유 객체나 공유 자원이 없다.
20
+ 따라서 단일 스레드에서 동작하는 것처럼 동시성에 신경쓸 필요가 없다.
21
+
22
+ > 동시에 여러 이벤트 루프가 생성되기 때문에 같은 verticle 이라도 여러 스레드에서 실행될 수 있다. 그러나 각 이벤트 루프에서 실행되는
23
+ verticle 은 같은 code 이지만, 각각 다른 인스턴스로 생성되고 독립적인 이벤트 루프에서 실행되기 때문에 verticle 인스턴스 간에 공유 되는 자원은
24
+ 없으며 thread-safe 할 수 있다.
25
+
26
+ ## 성능
27
+ Node.js 도 싱글 스레드 기반의 이벤트 루프로 동작하지만, 이벤트 루프를 하나만 띄울 수 있기 때문에 core 수가 많아도 CPU 활용이 안된다.
28
+ 따라서 core 수가 많아도 성능이 크게 늘어나지 않는 반면, vert.x 는 여러 스레드가 이벤트 루프로 동작할 수 있기 때문에 core 수에 따라 더
29
+ 좋은 성능을 낼 수 있다.
30
+
31
+ Node.js 도 여러 프로세스를 띄워서 core 응 사용할 수는 있지만, 프로세스의 컨텍스트 스위치 비용은 스레드 컨텍스트 스위치 비용보다 크기 때문에
32
+ 성능이 더 떨어질 수 밖에 없다.
33
+ > 스레드는 스택영역을 제외한 모든 메모리를 공유하기 때문에 스택 영역만 변경해주면 되기 때문에 비용이 적다.
You can’t perform that action at this time.
0 commit comments