Vert.x 가 좋다 !

Click here to load reader

download Vert.x 가 좋다 !

of 39

description

Vert.x 가 좋다 !. Vert.x is a poluglot , non-blocking, event-driven Application platform that Runs on The JVM. 입문. Vert.x ? Vert.x is a polyglot, non-blocking, event-driven Application platform that Runs on The JVM. 철학. Polyglot Super Simple Concurrency model Event Bus - PowerPoint PPT Presentation

Transcript of Vert.x 가 좋다 !

Vert.x !Vert.x is a poluglot, non-blocking, event-driven Application platform that Runs on The JVM.1Vert.x?Vert.x is a polyglot, non-blocking, event-driven Application platform that Runs on The JVM.

Vert.x Node.js .Event-based !!!

2PolyglotSuper Simple Concurrency modelEvent BusModule System & Public Module Repository3Vert.x Verticle Module Event Bus .

Vert.x 4Verticlevert.x (concurrency)Event-based Programming ModelEvent LoopsMessage PassingShared datavert.x Core5Node.js

200 OK 72 Event-based . . Event Bus.Module System.Polyglot.

7 !! timfox RabbitMQ normanmaurer Netty Please dont use StackOverflow to ask Vert.x questions ask them here!Hello Worldpublic 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 gradle project templateauto redeployremote debugging

11JDK 1.7 .Eclipse . . .vertx . Hello World .http://vertx.io/downloads.html

. . .vertx . Hello World .jee1@~ $ cat .bashrc

PATH=$PATH:/home/jee1/vert.x/bin

jee1@~ $ source .bashrc . . .vertx . Hello World .jee1@~ $ vertx

usage . . . .vertx . Hello World .jee1@work $ vertx run HelloWorldVerticle.java

Verticle start.

8080 Hello World! .16 OS temp vertx.log . vert.x/conf/logging.properties# Put the log in the system temporary directory# java.util.logging.FileHandler.pattern = %t/vertx.logjava.uril.logging.FileHandler.pattern = /home/jee1/vertx/log/vertx.logjee1@~ $ cat vertx/log/vertx.log[vert.x-eventloop-thread-2] 03:06:37,789 INFO [null-HelloWorldVerticle.java-704507910] Verticle start.gradle project template Verticle ., Module .Module Maven Gradle Gradle Groovy . .Gradle

Gradle .

Gradle gradle project templategit clone eclipse mod.json HelloWorldVerticle Module Module gradle project templategit clone eclipse mod.json HelloWorldVerticle Module Module jee1@work $ git clone https://github.com/vert-x/vertx-gradle-template.git my-vertx-modulejee1@work $ cd my-vertx-module/jee1@my-vertx-modyle $ git remote rm originjee1@my-vertx-modyle $ ./gradlew testjee1@my-vertx-modyle $ ./gradlew eclipsegradle project templategit clone eclipse mod.json HelloWorldVerticle Module Module jee1@my-vertx-modyle $ vi ./src/main/resources/mod.jsonmain:com.mycompany.myproject.PingVerticlegradle project templategit clone eclipse mod.json HelloWorldVerticle Module Module jee1@my-vertx-modyle $ vi ./src/main/resources/mod.json// main:com.mycompany.myproject.PingVerticlemain:HelloworldVerticlejee1@my-vertx-modyle $ ./gradlew runModEclipse 22gradle project templategit clone eclipse mod.json HelloWorldVerticle Module Module jee1@my-vertx-module $ vertx runmod com.mycompany~my-module~0.0.1 cp binjee1@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 23auto redeploymod.json falsemain:HelloWorldVerticle,auto-redeploy:true,remote debuggingvert.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=nDEMO :

Event Loops Verticle Vert.x s ThreadsEvent LoopsVerticle InstancesEvent Loop & Verticle InstancesPerformance Test

27Vert.x s Threadsmain thread 1vert.x-eventloop-thread 4vert.x-worker-thread 20

eventloop-thread 4 node.js .node.js 128Event 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

429Verticle Instances-instances .

Verticle EventLoopGroup eventloop_thread Verticle . .jee1@my-vertx-module $ vertx runmod com.mycompany~my-module~0.0.1 cp bin instances 10org.vertx.java.platform.impl.DefaultPlatformManager.javaorg.vertx.java.core.impl.DefaultContext.javaorg.vertx.java.core.impl.DefaultVertx.javaEvent Loop & Verticle InstancesEvent Loops Verticle Instances instances 1 Verticle Event Loops eventloop-thread vertx-eventloop-thread-0Verticle-0Verticle-4Verticle-8vertx-eventloop-thread-1Verticle-1Verticle-5Verticle-9vertx-eventloop-thread-2Verticle-2Verticle-6vertx-eventloop-thread-3Verticle-3Verticle-731Performance Test eventloop-thread 4Verticle 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 clusterStarting clusteringNo Cluster-host specified so using address 10.0.1.6jee1@java $ vertx run httpperf / RerfClient.java instances 4 clusterStarting clusteringNo Cluster-host specified so using address 10.0.1.632Performance Test 171968 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

33Performance Test 272824 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.1215027977696825 Rate : count / sec : 178000.0 Average rate : 170100.69713400464 99825 Rate : count / sec : 176666.66666666666 Average rate : 170298.02153769095

34Performance Test 472069 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

35Performance Test 870314 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

36Performance Test 1 120K count/sec 2 170K count/sec 4 190K count/sec 8 180K count/sec37http://vertx.iohttp://helloworld.naver.com/helloworld/163784http://www.infoq.com/jp/news/2013/05/high-volume-vertxhttp://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-30http://www.infoq.com/jp/news/2013/08/tim_fox_vertx_2.

PowerPoint .39