Skip to content

Commit ca72611

Browse files
authored
Create Vertx.md
1 parent 6e90c34 commit ca72611

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

network/Vertx.md

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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+
> 스레드는 스택영역을 제외한 모든 메모리를 공유하기 때문에 스택 영역만 변경해주면 되기 때문에 비용이 적다.

0 commit comments

Comments
 (0)