Download presentation
Published byBrendan Davidson Modified over 8 years ago
1
Vert.x 가 좋다! Vert.x is a poluglot, non-blocking, event-driven Application platform that Runs on The JVM.
2
입문 Vert.x? Vert.x is a polyglot, non-blocking, event-driven Application platform that Runs on The JVM. Vert.x 는 Node.js 로 부터 많은 영향을 받음. Event-based 프로그래밍 모델을 제공하는 프레임웍!!!
3
철학 Polyglot Super Simple Concurrency model Event Bus Module System & Public Module Repository
4
아키텍처 Vert.x 애플리케이션은 Verticle 또는 Module 의 조합으로 이루어지며 이들 간의 통신은 Event Bus를 사용한다. Vert.x 아키텍처
5
용어들… Verticle vert.x 인스턴스 동시성(concurrency) Event-based Programming Model Event Loops Message Passing Shared data vert.x Core
6
Node.js 와의 성능 비교 200 OK 응답만 주었을 때의 성능 비교 72바이트 크기의 정적 파일 제공 성능 비교
7
개인적으로 좋은 부분 Event-based 프로그래밍 모델을 제공하 는 프레임웍. 멀티코어 리소스를 쉼게 사용.
Event Bus. Module System. Polyglot.
8
개발자 커뮤니티 자료를 얻기 위한 실질적인 유일한 곳!! 주요 답변자 timfox – RabbitMQ 개발자 normanmaurer – Netty 개발자 Please don’t use StackOverflow to ask Vert.x questions – ask them here!
9
Hello World public class MainVerticle extends Verticle { public void start() { container.logger().info(“MainVerticle start”); vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() { public void handle(HttpServerRequest req) { req.response().headers().set(“Content-Type”, “text/plain”); req.response().end(“Hello World!”); } }).listen(8080); } }
10
주의 사항 코드의 중첩이 깊어지게 하지 말자 차단 코드를 작성하지 말자 상태전이에 주의 하자
11
개발 환경 구축 목차 환경설정 설치 셋팅 gradle project template auto redeploy
remote debugging
12
환경설정 JDK 1.7 이상이 필요. Eclipse
13
설치 http://vertx.io/downloads.html 홈페이지에서 최신 버전을 다운로드 받 는다.
적당한 경로에 압축을 해제한다. 환경변수에 경로를 설정한다. vertx 명령이 실행되는지 확인한다. 앞에 작성한 Hello World 코드를 작성하 여 실행해 본다.
14
설치 jee1@~ $ cat .bashrc PATH=“$PATH”:/home/jee1/vert.x/bin
홈페이지에서 최신 버전을 다운로드 받 는다. 적당한 경로에 압축을 해제한다. 환경변수에 경로를 설정한다. vertx 명령이 실행되는지 확인한다. 앞에 작성한 Hello World 코드를 작성하 여 실행해 본다. $ cat .bashrc PATH=“$PATH”:/home/jee1/vert.x/bin $ source .bashrc
15
설치 jee1@~ $ vertx usage 문구가 표시되면 설치 완료. 홈페이지에서 최신 버전을 다운로드 받 는다.
적당한 경로에 압축을 해제한다. 환경변수에 경로를 설정한다. vertx 명령이 실행되는지 확인한다. 앞에 작성한 Hello World 코드를 작성하 여 실행해 본다. $ vertx usage 문구가 표시되면 설치 완료.
16
설치 jee1@work $ vertx run HelloWorldVerticle.java Verticle start.
홈페이지에서 최신 버전을 다운로드 받 는다. 적당한 경로에 압축을 해제한다. 환경변수에 경로를 설정한다. vertx 명령이 실행되는지 확인한다. 앞에 작성한 Hello World 코드를 작성 하여 실행해 본다. $ vertx run HelloWorldVerticle.java Verticle start. 이후 브라우저로 8080 포트에 접속하면 Hello World! 문구를 확인할 수 있음.
17
셋팅 # Put the log in the system temporary directory
기본 설정은 로그가 OS의 temp 디렉토리에 vertx.log 로 생성. 설정파일 위치 vert.x/conf/logging.properties # Put the log in the system temporary directory # java.util.logging.FileHandler.pattern = %t/vertx.log java.uril.logging.FileHandler.pattern = /home/jee1/vertx/log/vertx.log $ cat vertx/log/vertx.log [vert.x-eventloop-thread-2] 03:06:37,789 INFO [null-HelloWorldVerticle.java ] Verticle start.
18
gradle project template
간단한 프로토타입은 Verticle 로 개발가능. 그러나, Module 로 개발을 권장. Module을 개발하기 위한 방법 Maven 을 이용한 방법 Gradle 을 이용한 방법 Gradle 는 Groovy의 빌드 도구. 별도 설치 필요 없음. Gradle 를 이용한 방법 선호 특별한 이유는 없으나 팀 폭스가 그래들을 사용해서 예제가 Gradle 로 되어 있음. 그래서 너도 나도 Gradle…
19
gradle project template
git clone 하여 eclipse로 가져오기 mod.json 수정 HelloWorldVerticle 을 Module로 이동 Module 실행
20
gradle project template
git clone 하여 eclipse로 가져오기 mod.json 수정 HelloWorldVerticle 을 Module로 이동 Module 실행 $ git clone my-vertx-module $ cd my-vertx-module/ $ git remote rm origin $ ./gradlew test $ ./gradlew eclipse
21
gradle project template
git clone 하여 eclipse로 가져오기 mod.json 수정 HelloWorldVerticle 을 Module로 이동 Module 실행 $ vi ./src/main/resources/mod.json “main”:“com.mycompany.myproject.PingVerticle”
22
gradle project template
git clone 하여 eclipse로 가져오기 mod.json 수정 HelloWorldVerticle 을 Module로 이동 Module 실행 $ vi ./src/main/resources/mod.json // “main”:“com.mycompany.myproject.PingVerticle” “main”:”HelloworldVerticle” $ ./gradlew runModEclipse 두가지 문제
23
gradle project template
git clone 하여 eclipse로 가져오기 mod.json 수정 HelloWorldVerticle 을 Module로 이동 Module 실행 $ vertx runmod com.mycompany~my-module~0.0.1 –cp bin $ vi gradle/vertx.gradle task copyModJson( type:Copy, dependsOn: 'copyMod' , description: 'Copy the mod.json into the local mods directory for runmod auto-redeploy' ) { file( "mods/$moduleName" ).mkdirs() from "build/mods/$moduleName/mod.json” into "mods/$moduleName“ } $ ./gradlew copyModJson
24
auto redeploy “main”:“HelloWorldVerticle”, “auto-redeploy”:true,
mod.json 에 정의 기본값은 false “main”:“HelloWorldVerticle”, “auto-redeploy”:true,
25
remote debugging vert.x/bin/vertx 의 시작부분에 있는 JVM_OPTS 를 수정 Eclipse의 remote debugging 에서 설정한 포트(8000) 로 연결하면 remote debugging 사용 가능. #JVM_OPTS="-XX:+CMSClassUnloadingEnabled -XX:-UseGCOverheadLimit“ #JVM_OPTS="“ JVM_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n”
26
DEMO 소스코드 다운받을 곳:
27
Event Loops 와 Verticle 인스턴스
목차 Vert.x ’s Threads Event Loops Verticle Instances Event Loop & Verticle Instances Performance Test
28
Vert.x ‘s Threads main thread 1개 vert.x-eventloop-thread 가 4개 vert.x-worker-thread 가 20개 eventloop-thread 가 4개인 점이 node.js 와 다름. node.js 는 1개
29
Event Loops org.vertx.java.core.impl.VertxExecutorFactory.java
왜 eventloop-thread 가 4개인가? org.vertx.java.core.impl.VertxExecutorFactory.java public static EventLoopGroup eventLoopGroup(String poolName) { int poolSize = Integer.getInteger( "vertx.pool.eventloop.size" , Runtime.getRuntime().availableProcessors()); return new NioEventLoopGroup(poolSize, new VertxThreadFactory(poolName)); } $ grep –c processor /proc/cpuinfo 4
30
Verticle Instances -instances 옵션을 사용하여 인스턴스를 늘 릴수 있음. Verticle 생성시 EventLoopGroup에서 하나 의 eventloop_thread를 할당하고 Verticle을 맵핑. 동기화등의 고민없이 쉽게 작성가 능. $ vertx runmod com.mycompany~my-module~0.0.1 –cp bin –instances 10 org.vertx.java.platform.impl.DefaultPlatformManager.java org.vertx.java.core.impl.DefaultContext.java org.vertx.java.core.impl.DefaultVertx.java
31
Event Loop & Verticle Instances
Event Loops 는 코어수에 따라 쓰레드 수를 자동 결정 Verticle Instances 는 –instances 옵션을 지정해서 인스턴스 수 변경 가능 1개의 Verticle 인스턴스가 생성될 때 Event Loops 에서 하나의 eventloop- thread 가 할당 vertx-eventloop-thread-0 Verticle-0 Verticle-4 Verticle-8 vertx-eventloop-thread-1 Verticle-1 Verticle-5 Verticle-9 vertx-eventloop-thread-2 Verticle-2 Verticle-6 vertx-eventloop-thread-3 Verticle-3 Verticle-7
32
Performance Test 테스트한 환경에서의 eventloop-thread 는 4 Verticle의 인스턴스 수를 1,2,4,8 로 변화시 켜 테스트 진행. Vertx 예제에 있는 http performance example 사용하여 테스트 진행. ( examples/tree/master/src/raw/java/httpper f) $ vertx runmod com.mycompany~my-module~0.0.1 –cp bin (–instances 2/4/8) $ vertx run perf / RateCounter.java –cluster Starting clustering… No Cluster-host specified so using address $ vertx run httpperf / RerfClient.java –instances 4 –cluster Starting clustering… No Cluster-host specified so using address
33
Performance Test 인스턴스 수 1
71968 Rate : count / sec : Average rate : 74968 Rate : count / sec : Average rate : 77968 Rate : count / sec : Average rate : 80967 Rate : count / sec : Average rate : 83967 Rate : count / sec : Average rate : 86967 Rate : count / sec : Average rate : 89967 Rate : count / sec : Average rate : 92967 Rate : count / sec : Average rate : 95968 Rate : count / sec : Average rate : 98968 Rate : count / sec : 12533 Average rate :
34
Performance Test 인스턴스 수 2
72824 Rate : count / sec : Average rate : 75825 Rate : count / sec : Average rate : 78825 Rate : count / sec : Average rate : 81825 Rate : count / sec : Average rate : 84825 Rate : count / sec : Average rate : 87825 Rate : count / sec : Average rate : 90825 Rate : count / sec : Average rate : 93825 Rate : count / sec : Average rate : 96825 Rate : count / sec : Average rate : 99825 Rate : count / sec : Average rate :
35
Performance Test 인스턴스 수 4
72069 Rate: count/sec: Average rate: 75068 Rate: count/sec: Average rate: 78068 Rate: count/sec: Average rate: 81068 Rate: count/sec: Average rate: 84069 Rate: count/sec: Average rate: 87068 Rate: count/sec: Average rate: 90068 Rate: count/sec: Average rate: 93069 Rate: count/sec: Average rate: 96068 Rate: count/sec: Average rate: 99068 Rate: count/sec: Average rate:
36
Performance Test 인스턴스 수 8
70314 Rate : count / sec : Average rate : 73315 Rate : count / sec : Average rate : 76314 Rate : count / sec : Average rate : 79313 Rate : count / sec : Average rate : 82314 Rate : count / sec : Average rate : 85313 Rate : count / sec : Average rate : 88314 Rate : count / sec : Average rate : 91315 Rate : count / sec : Average rate : 94314 Rate : count / sec : Average rate : 97314 Rate : count / sec : Average rate :
37
Performance Test 인스턴스가 1인 경우는 약 120K count/sec
38
참고사이트 http://vertx.io http://helloworld.naver.com/helloworld/163784
참고사이트
39
감사합니다. 슬라이드 쇼 모드에서 PowerPoint 시작 센터로 이동하려면 화살표를 클릭하세요.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.