Vert.x 세미나 이지원_배포용

Click here to load reader

download Vert.x 세미나 이지원_배포용

of 39

description

 

Transcript of Vert.x 세미나 이지원_배포용

  • 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.
  • 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. 1. Event-based . 2. . 3. Event Bus. 4. Module System. 5. Polyglot.
  • 8. !! timfox RabbitMQ normanmaurer Netty Please dont 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() { public void handle(HttpServerRequest req) { req.response().headers().set(Content-Type, text/plain); req.response().end(Hello World!); } }).listen(8080); } }
  • 10. 1. 2. 3.
  • 11. 1. 2. 3. 4. gradle project template 5. auto redeploy 6. remote debugging
  • 12. JDK 1.7 . Eclipse
  • 13. 1. . 2. . 3. . 4. vertx . 5. Hello World . http://vertx.io/downloads.html
  • 14. 1. . 2. . 3. . 4. vertx . 5. Hello World . jee1@~ $ cat .bashrc PATH=$PATH:/home/jee1/vert.x/bin jee1@~ $ source .bashrc
  • 15. 1. . 2. . 3. . 4. vertx . 5. Hello World . jee1@~ $ vertx usage .
  • 16. 1. . 2. . 3. . 4. vertx . 5. Hello World . jee1@work $ vertx run HelloWorldVerticle.java Verticle start. 8080 Hello World! .
  • 17. 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 jee1@~ $ cat vertx/log/vertx.log [vert.x-eventloop-thread-2] 03:06:37,789 INFO [null- HelloWorldVerticle.java-704507910] Verticle start.
  • 18. gradle project template Verticle . , Module . Module Maven Gradle Gradle Groovy . . Gradle Gradle . Gradle
  • 19. gradle project template 1. git clone eclipse 2. mod.json 3. HelloWorldVerticle Module 4. Module
  • 20. gradle project template 1. git clone eclipse 2. mod.json 3. HelloWorldVerticle Module 4. Module jee1@work $ git clone https://github.com/vert-x/vertx- gradle-template.git my-vertx-module jee1@work $ cd my-vertx-module/ jee1@my-vertx-modyle $ git remote rm origin jee1@my-vertx-modyle $ ./gradlew test jee1@my-vertx-modyle $ ./gradlew eclipse
  • 21. gradle project template 1. git clone eclipse 2. mod.json 3. HelloWorldVerticle Module 4. Module jee1@my-vertx-modyle $ vi ./src/main/resources/mod.json main:com.mycompany.myproject.PingVerticle
  • 22. gradle project template 1. git clone eclipse 2. mod.json 3. HelloWorldVerticle Module 4. Module jee1@my-vertx-modyle $ vi ./src/main/resources/mod.json // main:com.mycompany.myproject.PingVerticle main:HelloworldVerticle jee1@my-vertx-modyle $ ./gradlew runModEclipse
  • 23. gradle project template 1. git clone eclipse 2. mod.json 3. HelloWorldVerticle Module 4. Module jee1@my-vertx-module $ vertx runmod com.mycompany~my-module~0.0.1 cp bin jee1@my-vertx-module $ 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 } jee1@my-vertx-module $ ./gradlew copyModJson
  • 24. auto redeploy 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,suspe nd=n
  • 26. DEMO :
  • 27. Event Loops Verticle 1. Vert.x s Threads 2. Event Loops 3. Verticle Instances 4. Event Loop & Verticle Instances 5. Performance Test
  • 28. Vert.x s Threads main thread 1 vert.x-eventloop-thread 4 vert.x-worker-thread 20
  • 29. Event Loops 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)); } jee1@my-vertx-module $ grep c processor /proc/cpuinfo 4
  • 30. Verticle Instances -instances . Verticle EventLoopGroup eventloop_thread Verticle . . jee1@my-vertx-module $ 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 1. vertx-eventloop-thread-0 Verticle-0 Verticle-4 Verticle-8 2. vertx-eventloop-thread-1 Verticle-1 Verticle-5 Verticle-9 3. vertx-eventloop-thread-2 Verticle-2 Verticle-6 4. vertx-eventloop-thread-3 Verticle-3 Verticle-7
  • 32. Performance Test eventloop-thread 4 Verticle 1,2,4,8 . Vertx http performance example . (https://github.com/vert-x/vertx- examples/tree/master/src/raw/java/httpperf) jee1@my-vertx-module $ vertx runmod com.mycompany~my-module~0.0.1 cp bin (instances 2/4/8) jee1@java $ vertx run perf / RateCounter.java cluster Starting clustering No Cluster-host specified so using address 10.0.1.6 jee1@java $ vertx run httpperf / RerfClient.java instances 4 cluster Starting clustering No Cluster-host specified so using address 10.0.1.6
  • 33. Performance Test 1 71968 Rate : count / sec : 124666.66666666667 Average rate : 120609.15962650067 74968 Rate : count / sec : 124666.66666666667 Average rate : 120771.52918578594 77968 Rate : count / sec : 123333.33333333333 Average rate : 120870.10055407346 80967 Rate : count / sec : 125375.12504168056 Average rate : 121036.96567737473 83967 Rate : count / sec : 123333.33333333333 Average rate : 121119.01104005145 86967 Rate : count / sec : 123333.33333333333 Average rate : 121195.39595478745 89967 Rate : count / sec : 126000.0 Average rate : 121355.60816743918 92967 Rate : count / sec : 126000.0 Average rate : 121505.48043929566 95968 Rate : count / sec : 123958.68043985339 Average rate : 121582.19406468823 98968 Rate : count / sec : 125333.33333333333 Average rate : 121695.9017056018
  • 34. Performance Test 2 72824 Rate : count / sec : 179393.13104368123 Average rate : 168241.23915192793 75825 Rate : count / sec : 176607.79740086637 Average rate : 168572.37059017475 78825 Rate : count / sec : 178666.66666666666 Average rate : 168956.54931810973 81825 Rate : count / sec : 176000.0 Average rate : 169214.78765658417 84825 Rate : count / sec : 178000.0 Average rate : 169525.49366342468 87825 Rate : count / sec : 172000.0 Average rate : 169610.01992598918 90825 Rate : count / sec : 171333.33333333334 Average rate : 169666.94192127718 93825 Rate : count / sec : 175333.33333333334 Average rate : 169848.12150279776 96825 Rate : count / sec : 178000.0 Average rate : 170100.69713400464 99825 Rate : count / sec : 176666.66666666666 Average rate : 170298.02153769095
  • 35. Performance Test 4 72069 Rate: count/sec: 189270.24325224926 Average rate: 173805.6584661921 75068 Rate: count/sec: 190730.24341447148 Average rate: 174481.8031651303 78068 Rate: count/sec: 190000.0 Average rate: 175078.13700876158 81068 Rate: count/sec: 189333.33333333334 Average rate: 175605.66438052006 84069 Rate: count/sec: 191936.02132622458 Average rate: 176188.60697760174 87068 Rate: count/sec: 190063.3544514838 Average rate: 176666.51352965497 90068 Rate: count/sec: 188666.66666666666 Average rate: 177066.21663631924 93069 Rate: count/sec: 193268.91036321226 Average rate: 177588.6707711483 96068 Rate: count/sec: 193397.79926642214 Average rate: 178082.19178082192 99068 Rate: count/sec: 192666.66666666666 Average rate: 178523.84220939153
  • 36. Performance Test 8 70314 Rate : count / sec : 185333.33333333334 Average rate : 161646.32932275222 73315 Rate : count / sec : 186604.4651782739 Average rate : 162667.93971220078 76314 Rate : count / sec : 186728.90963654552 Average rate : 163613.4916267002 79313 Rate : count / sec : 187395.79859953318 Average rate : 164512.7532686949 82314 Rate : count / sec : 184605.1316227924 Average rate : 165245.28026824113 85313 Rate : count / sec : 186728.90963654552 Average rate : 166000.492304807 88314 Rate : count / sec : 186604.4651782739 Average rate : 166700.63636569513 91315 Rate : count / sec : 177940.68643785405 Average rate : 167070.0323057548 94314 Rate : count / sec : 179393.13104368123 Average rate : 167461.882647327 97314 Rate : count / sec : 178666.66666666666 Average rate : 167807.3041905584
  • 37. Performance Test - 1 120K count/sec - 2 170K count/sec - 4 190K count/sec - 8 180K count/sec
  • 38. http://vertx.io http://helloworld.naver.com/helloworld/163784 http://www.infoq.com/jp/news/2013/05/high-volume-vertx http://vertxproject.wordpress.com/2013/07/17/vert-x-2-0-0-final-is- released/ http://m.javaworld.com/javaworld/jw-07-2013/130730-osjp- enterprise-messaging-and-integration-with- vertx.html?source=IFWNLE_nlt_jw_2013-07-30 http://www.infoq.com/jp/news/2013/08/tim_fox_vertx_2
  • 39. .