27
World Domination + Vert.x

Vertx for worlddomination

Embed Size (px)

DESCRIPTION

A variation of the talk I gave at JavaLand.

Citation preview

Page 1: Vertx for worlddomination

World Domination+ Vert.x

Page 2: Vertx for worlddomination
Page 3: Vertx for worlddomination
Page 4: Vertx for worlddomination
Page 5: Vertx for worlddomination

?

Page 6: Vertx for worlddomination
Page 7: Vertx for worlddomination

DOES!IT!

SCALE ?

Page 8: Vertx for worlddomination

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

Page 9: Vertx for worlddomination
Page 10: Vertx for worlddomination

C10K

ZZZZZZZZZz

ZZZZZZZZZzZZZZZZZZZz

Page 11: Vertx for worlddomination

CPU

ABC

42

1 2 3

4 5 6

7 8 90

Page 12: Vertx for worlddomination

volatile

CyclicBarrier

AtomicBoolean

synchronized

ReentrantLock

AtomicInteger

AtomicCafe

Thread

ThreadPoolExecutor

RunnableCallable

Page 13: Vertx for worlddomination

contentionI/O

Page 14: Vertx for worlddomination

Single Thread

1 Thread w/ lock

2 Threads w/ lock

1 Thread w/ CAS

2 Threads w/ CAS

Volatile

0 12500 25000 37500 50000

Contention

https://github.com/codepitbull/lockperformance

Page 15: Vertx for worlddomination

I/OAcces type cycles

L1- Cache 3

L2-Cache 14

RAM 250

Disk 41000000

Network 240000000

http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/

Page 16: Vertx for worlddomination

Channel AChannel BChannel CChannel D

Selector

Event Handler 1Event Handler 2Event Handler 3Event Handler 4Event Handler 5

12.10.2012

Page 17: Vertx for worlddomination

Quasar

Page 18: Vertx for worlddomination

生 ॐ СВОБОДА

Microservice!

certified !

Page 19: Vertx for worlddomination

Verticle

Module

1

0..n0..n

Verticle

Module

1

0..n

0..n

1

System

vert.x

module1

verticle 1 verticle 2

module2

verticle 3 verticle 4

Page 20: Vertx for worlddomination

class MustacheRendererVerticle extends Verticle { DefaultMustacheFactory mf = new DefaultMustacheFactory( "de/codepitbull/javaland/mustache"); @Override def start() { vertx.eventBus.registerHandler("template.render", { message -> Mustache mustache = mf.compile(message.body()); StringWriter sw = new StringWriter(); mustache.execute(sw, new Example()).flush(); message.reply(sw.getBuffer().toString()); }); }}

Page 21: Vertx for worlddomination

import org.vertx.groovy.platform.Verticleclass DemoVerticle extends Verticle { @Override Object start() { container.deployModule("io.vertx~mod-web-server~2.0.0-final", container.config) }}

io.vertx~mod-web-server~2.0.0-final

Page 22: Vertx for worlddomination

officialcommunity

生 ॐ СВОБОДА

Page 23: Vertx for worlddomination

Verticle Verticle Verticle Verticle

Verticle Verticle Verticle Verticle

Page 24: Vertx for worlddomination

mod 2mod 1CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

vertx -cluster

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

mod 2mod 1

Multicast

Page 25: Vertx for worlddomination

mod 2mod 1CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

vertx -hamod ? mod ? mod ? mod ?

mod ? mod ? mod ? mod ?

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

mod 2mod 1

Page 26: Vertx for worlddomination

DEMO

Page 27: Vertx for worlddomination

Leseliste/Quellen

http://martinfowler.com/articles/microservices.html http://www.cs.wustl.edu/~schmidt/PDF/reactor-siemens.pdf http://tutorials.jenkov.com/java-nio/selectors.html https://www.ibm.com/developerworks/java/library/j-jtp02225/ http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/ http://lmax-exchange.github.io/disruptor/ https://github.com/codepitbull/lockperformance