SlideShare une entreprise Scribd logo
1  sur  60
1CONFIDENTIAL
NETWORKING
IN JAVA WITH
NIO AND NETTY
KANSTANTSIN SLISENKA
JUN 1, 2017
2CONFIDENTIAL
ABOUT ME
Java Backend engineer
Speaker at Java Tech Talks, SEC Online,
CMCC Tech Talks, IT Week
I’m interested in
Complex Java backend, SOA, databases
High load, fault-tolerant, distributed systems
KANSTANTSIN SLISENKA
EPAM Systems, Lead Software Engineer
3CONFIDENTIAL
WHY IS IMPORTANT TO DIG INTO JAVA NETWORKING
Classic Java project
Tomcat + Spring + Hibernate + …
High load, latency-sensitive
Custom TCP/UDP solution
4CONFIDENTIAL
AGENDA
Blocking vs non-blocking resources1
Blocking I/O2
Non-blocking I/O3
Netty: high performance networking framework4
5CONFIDENTIAL
BLOCKING VS NON-BLOCKING RESOURCES
client
thread
read/write
response
Blocking resources
Database transactions, RPC/WS calls
blocked
6CONFIDENTIAL
BLOCKING VS NON-BLOCKING RESOURCES
client
thread
read/write
response
client
thread
read/write
nope
read/write
response
client
thread
read/write
callback with
response
read/write
nope
register
callback
Blocking resources Non-blocking resources
Database transactions, RPC/WS calls Queues, WebSockets, Non-blocking data storage
blocked
7CONFIDENTIAL
NETWORK SOCKETS
Socket is blocking API over OS and Network hardware
not a physical object
PERMANENT
KNOWN PORT
ANY UNUSED
PORT
SOCKET SOCKET Max ports = 65535
8CONFIDENTIAL
JAVA SOCKETS = BLOCKING IO
Client Server
9CONFIDENTIAL
SOCKET SERVER
LIVE CODING EXAMPLE
10CONFIDENTIAL
Server
3
2 Client 2
Client 3
Client 1
SOCKET SERVER ARCHITECTURE
no data
no data
data transfer in progress
1
Socket
Socket
SocketThread
(blocked*)
Thread
(running)
Thread
(blocked*)
*until keep alive timeout
Fixed
thread pool
Requests
queue
11CONFIDENTIAL
Server
3
2 Client 2
Client 3
Client 1
SOCKET SERVER ARCHITECTURE
no data
no data
data transfer in progress
1
Socket
Socket
SocketThread
(blocked*)
Thread
(running)
Thread
(blocked*)
Client 4
*until keep alive timeout
Fixed
thread pool
Requests
queue
new
connection
12CONFIDENTIAL
Server
3
2 Client 2
Client 3
Client 1
SOCKET SERVER ARCHITECTURE
no data
no data
data transfer in progress
1
Socket
Socket
SocketThread
(blocked*)
Thread
(running)
Thread
(blocked*)
Client 4
*until keep alive timeout
Fixed
thread pool
Requests
queue
new
connection
drop by timeout
13CONFIDENTIAL
SOCKET SERVER CONCLUSION
1. Ineffective thread utilization
– many threads in waiting/blocked state
– extra memory for stack and thread local
resources
2. Poor performance
– context switching overhead
3. Limited number of connections
– when thread pool is fully consumed
Benefits Drawbacks
1. Simple development
well known Input/OutputStream API
2. No check for partially received
messages
thread is blocked until fully reads message
14CONFIDENTIAL
IO VS NIO
IO (blocking)
Thread Thread Thread
socket socket socket
BLOCKING READ/WRITE
WAIT WAIT WAITWAIT
15CONFIDENTIAL
IO VS NIO
IO (blocking) NIO (non-blocking)
NON BLOCKING READ/WRITE
Thread
buffer buffer buffer
socket
channel
socket
channel
socket
channel
Thread Thread Thread
socket socket socket
BLOCKING READ/WRITE
WAIT WAIT WAITWAIT ALWAYS
RUNNING
NOTIFICATIONS
selector
16CONFIDENTIAL
NIO DATA SENDING
Thread
buffer buffer buffer
socket
channel
socket
channel
selector
socket
channel
17CONFIDENTIAL
NIO DATA SENDING
Thread
buffer buffer buffer
socket
channel
socket
channel
selector
socket
channel
1 WRITE READY
18CONFIDENTIAL
NIO DATA SENDING
Thread
buffer buffer buffer
socket
channel
socket
channel
selector
PUT DATA2
socket
channel
1 WRITE READY
19CONFIDENTIAL
NIO DATA SENDING
Thread
buffer buffer buffer
socket
channel
socket
channel
selector
PUT DATA2
SEND DATA3
socket
channel
1 WRITE READY
20CONFIDENTIAL
NIO DATA RECEIVING
Thread
buffer buffer buffer
socket
channel
socket
channel
selector
socket
channel
21CONFIDENTIAL
NIO DATA RECEIVING
Thread
buffer buffer buffer
socket
channel
socket
channel
selector
RECEIVE DATA1
socket
channel
22CONFIDENTIAL
NIO DATA RECEIVING
Thread
buffer buffer buffer
socket
channel
socket
channel
selector
RECEIVE DATA1
socket
channel
2 READ READY
23CONFIDENTIAL
NIO DATA RECEIVING
Thread
buffer buffer buffer
socket
channel
socket
channel
selector
GET DATA3
RECEIVE DATA1
socket
channel
2 READ READY
24CONFIDENTIAL
NIO BYTE BUFFER
POSITION LIMIT CAPACITY
0 1 2 3 4 5 6 7 8 9
Empty buffer
BYTE
ARRAY
25CONFIDENTIAL
NIO BYTE BUFFER
POSITION LIMIT CAPACITY
0 1 2 3 4 5 6 7 8 9
1 0 1 1 0
LIMIT CAPACITY
Empty buffer
Writing mode
BYTE
ARRAY
BYTE
ARRAY
POSITION
0 1 2 3 4 5 6 7 8 9
26CONFIDENTIAL
NIO BYTE BUFFER
POSITION LIMIT CAPACITY
0 1 2 3 4 5 6 7 8 9
1 0 1 1 0
LIMIT CAPACITY
1 0 1 1 0
POSITION LIMIT CAPACITY
Empty buffer
Writing mode
Reading mode
BYTE
ARRAY
BYTE
ARRAY
BYTE
ARRAY
buffer.flip()buffer.clear() POSITION
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
27CONFIDENTIAL
DIRECT BUFFERS
0 1 2 3 4 5 6 7 8
JVM Network Interface Card
0 1 2 3 4 5 0 1 2 3 4 5
Physical memory
9
Shared memory
address space
Shared memory
address space
Memory should be
continuous because
NICs are block-
oriented devices
28CONFIDENTIAL
NIO SERVER
LIVE CODING EXAMPLE
29CONFIDENTIAL
Server
BASIC NIO SERVER ARCHITECTURE
buffer
Client #2
Client #1
no data
data transfer in progress
socket
channel #3 Client #3
data transfer in progress
buffer
socket
channel #2
socket
channel #1
WORKER THREAD
SELECTOR
SELECTOR
WORKER THREAD
buffer
Business
logic
30CONFIDENTIAL
Server
BASIC NIO SERVER ARCHITECTURE
buffer
Client #2
Client #1
no data
data transfer in progress
socket
channel #3 Client #3
data transfer in progress
buffer
socket
channel #2
socket
channel #1
WORKER THREAD
SELECTOR
SELECTOR
WORKER THREAD
buffer
Business
logic
31CONFIDENTIAL
Server
BASIC NIO SERVER ARCHITECTURE
buffer
Client #2
Client #1
no data
data transfer in progress
socket
channel #3 Client #3
data transfer in progress
buffer
get ready channels
socket
channel #2
socket
channel #1
WORKER THREAD
SELECTOR
SELECTOR
WORKER THREAD
buffer
Business
logic
32CONFIDENTIAL
Server
BASIC NIO SERVER ARCHITECTURE
buffer
Client #2
Client #1
no data
data transfer in progress
socket
channel #3 Client #3
data transfer in progress
get buffer
put
read
write
get ready channels
socket
channel #2
socket
channel #1
Business
logic
WORKER THREAD
SELECTOR
SELECTOR
WORKER THREAD
buffer
33CONFIDENTIAL
Server
BASIC NIO SERVER ARCHITECTURE
new
connection
buffer
Client #2
Client #4
Client #1
no data
data transfer in progress
new connection
socket
channel #3 Client #3
data transfer in progress
get buffer
put
register in selector
read
write
get ready channels
socket
channel #2
socket
channel #1
WORKER THREAD
SELECTOR
SELECTOR
WORKER THREAD
Business
logic
buffer
34CONFIDENTIAL
CAN WE GO TO PRODUCTION WITH A SINGLE THREAD?
https://www.pinterest.com/banjolele/one-man-band/
35CONFIDENTIAL
PRODUCTION-READY NIO SERVER
new
connection
36CONFIDENTIAL
SELECTOR
PRODUCTION-READY NIO SERVER
ServerSocket
Channel
acceptor
thread
new
connection
Acceptor threads
Separate thread to not lose incoming
connections when selector threads
are overloaded
37CONFIDENTIAL
SELECTOR
SELECTOR
PRODUCTION-READY NIO SERVER
ServerSocket
Channel
selector
thread
…
acceptor
thread
Socket
Channel
SELECTOR
selector
threadSocket
Channel
SELECTOR
selector
threadSocket
Channel
new
connection
Selector threads
Multiple processing threads to
get benefit from multi core CPU
Acceptor threads
Separate thread to not lose incoming
connections when selector threads
are overloaded
38CONFIDENTIAL
SELECTOR
SELECTOR
Application
thread pools
(long running tasks)
PRODUCTION-READY NIO SERVER
ServerSocket
Channel
selector
thread
…
worker
thread
worker
thread
worker
thread
application
thread
acceptor
thread
Socket
Channel
SELECTOR
selector
threadSocket
Channel
SELECTOR
selector
threadSocket
Channel
new
connection
Selector threads
Multiple processing threads to
get benefit from multi core CPU
Acceptor threads
Separate thread to not lose incoming
connections when selector threads
are overloaded
Application threads
For long tasks (back-end, DB,
computation), to avoid blocking
of selector threads
39CONFIDENTIAL
PARTIAL MESSAGE RECEIVING PROBLEM
Message reader splits/joins data blocks into messages
Data block
Message
Message Message
Message Message Message
message
reader
Data
block
Data
block
MessageMessage
Data
block
40CONFIDENTIAL
NIO CONCLUSION
Complexity
• complex code
• learning curve for developers
• handling partially received
messages
• combining async with sync code
(need different thread groups)
Benefits Drawbacks
Single shared thread for many
connections
• less memory
• less context switching overhead
41CONFIDENTIAL
NETTY
ONE FRAMEWORK TO RULE THEM ALL
42CONFIDENTIAL
NETTY: JAVA NETWORK FRAMEWORK
Some projects using Netty
43CONFIDENTIAL
NETTY SERVER ARCHITECTURE
Network
44CONFIDENTIAL
transport
Boss
EventLoopGroup
NIO
NETTY SERVER ARCHITECTURE
Network
Socket
Native JNI
Thread pool for
new connections
45CONFIDENTIAL
transport
Boss
EventLoopGroup
channel
channel pipeline
Worker EventLoopGroup EventExecutorGroup
NIO
NETTY SERVER ARCHITECTURE
Inbound
Handler
Inbound
Handler
Inbound
Handler
Outbound
Handler
Outbound
Handler
Outbound
Handler
Network
Socket
Native JNI
Separate thread pool
for blocking logic
I/O thread pool
For non-blocking logic
Thread pool for
new connections
46CONFIDENTIAL
channel
channel pipeline
NETTY HANDLERS
SSL
Handler
encrypted
encrypted
47CONFIDENTIAL
channel
channel pipeline
NETTY HANDLERS
HTTP
Request
Decoder
SSL
Handler
encrypted
encrypted
bytes
48CONFIDENTIAL
channel
channel pipeline
NETTY HANDLERS
HTTP
Request
Decoder
HTTP
Object
Aggregator
SSL
Handler
encrypted
encrypted
bytes
http
messages
buffer
49CONFIDENTIAL
channel
channel pipeline
NETTY HANDLERS
HTTP
Request
Decoder
HTTP
Object
Aggregator
SSL
Handler
encrypted
encrypted
bytes
http
messages Your
Business
Logic
Handler
full http
messages
buffer
50CONFIDENTIAL
channel
channel pipeline
NETTY HANDLERS
HTTP
Request
Decoder
HTTP
Object
Aggregator
HTTP
Request
Encoder
SSL
Handler
encrypted
encrypted
bytes
http
messages
bytes
Your
Business
Logic
Handler
full http
messages
buffer
full http
messages
51CONFIDENTIAL
NETTY SERVER
LIVE CODING EXAMPLE
52CONFIDENTIAL
WHAT IS FASTER: IO OR NIO?
53CONFIDENTIAL
WHAT IS FASTER: IO OR NIO?
May be yes, may be not *
?
?
?
?
NIO is faster
Context switching is
very slow
Threads take up too
much memory
Thread synchronization
will kill you
54CONFIDENTIAL
WHAT IS FASTER: IO OR NIO?
May be yes, may be not *
* Always point to holy-wars, see
www.mailinator.com/tymaPaulMultithreaded.pdf
?
?
?
Context switching is
very slow
Threads take up too
much memory
Thread synchronization
will kill you
IO is 25-30% faster
(see benchmark*)
NIO is faster
55CONFIDENTIAL
WHAT IS FASTER: IO OR NIO?
May be yes, may be not *
* Always point to holy-wars, see
www.mailinator.com/tymaPaulMultithreaded.pdf
?
?
Context switching is
very slow
Threads take up too
much memory
Thread synchronization
will kill you
IO is 25-30% faster
(see benchmark*)
NIO is faster
New POSIX library in Linux > 2.6
IDLE thread costs almost zero
Context switching is much much faster
56CONFIDENTIAL
WHAT IS FASTER: IO OR NIO?
May be yes, may be not *
* Always point to holy-wars, see
www.mailinator.com/tymaPaulMultithreaded.pdf
?
Context switching is
very slow
Threads take up too
much memory
Thread synchronization
will kill you
IO is 25-30% faster
(see benchmark*)
NIO is faster
New POSIX library in Linux > 2.6
IDLE thread costs almost zero
Context switching is much much faster
Don’t overuse thread-local objects!
57CONFIDENTIAL
WHAT IS FASTER: IO OR NIO?
May be yes, may be not *
* Always point to holy-wars, see
www.mailinator.com/tymaPaulMultithreaded.pdf
Context switching is
very slow
Threads take up too
much memory
Thread synchronization
will kill you
IO is 25-30% faster
(see benchmark*)
NIO is faster
New POSIX library in Linux > 2.6
IDLE thread costs almost zero
Context switching is much much faster
Don’t overuse thread-local objects!
Use non-blocking data structures
58CONFIDENTIAL
CONCLUSION
• Huge number of connections
• Medium or slow data rate per connection
• Asynchronous world (event-based)
• Non blocking database
• Queues
• Web-sockets
• Callbacks, listeners
• Data streaming
• Don’t use standard NIO, use frameworks like Netty
• Highly skilled team because of complex code
Use sockets* Use NIO*
*Not a strict rule, always point to holy-wars
• Small number of connections
• Huge data rate per connection
• Synchronous world (procedure-based)
• Classic enterprise applications
• Request-response protocols
• Blocking database
• Blocking RPC or web-service calls
• Bottleneck is not server, but blocking resource
• Make servers stateless and scale horizontally
59CONFIDENTIAL
Java Network
Programming, 4’th
edition
O’REILLY
Elliotte Rusty Harold
BUY A BOOK, MAKE THEM RICH
Netty in Action
Manning
Norman Maurer
Java NIO
O’REILLY
Ron Hitchens
• Code examples: github.com/kslisenko/java-networking
• NIO performance: www.mailinator.com/tymaPaulMultithreaded.pdf
• NIO tutorial: tutorials.jenkov.com/java-nio/index.html
• ITT 2015 - Heinz Kabutz - The Multi-threading, Non Blocking IO:
youtube.com/watch?v=uKc0Gx_lPsg
• Netty - One Framework to rule them all by Norman Maurer:
youtube.com/watch?v=DKJ0w30M0vg
• Scalable IO in Java: http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf
60CONFIDENTIAL
THANK YOU! QUESTIONS?
kslisenko@gmail.com
kslisenko
linkedin.com/in/kslisenko/
Konstantin Slisenko
kanstantsin_slisenka@epam.com

Contenu connexe

Tendances

Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Toshiaki Maki
 
AOT and Native with Spring Boot 3.0
AOT and Native with Spring Boot 3.0AOT and Native with Spring Boot 3.0
AOT and Native with Spring Boot 3.0MoritzHalbritter
 
A Deep Dive into Kafka Controller
A Deep Dive into Kafka ControllerA Deep Dive into Kafka Controller
A Deep Dive into Kafka Controllerconfluent
 
Instrumenting and Scaling Databases with Envoy
Instrumenting and Scaling Databases with EnvoyInstrumenting and Scaling Databases with Envoy
Instrumenting and Scaling Databases with EnvoyDaniel Hochman
 
Concurrent Programming Using the Disruptor
Concurrent Programming Using the DisruptorConcurrent Programming Using the Disruptor
Concurrent Programming Using the DisruptorTrisha Gee
 
OVN - Basics and deep dive
OVN - Basics and deep diveOVN - Basics and deep dive
OVN - Basics and deep diveTrinath Somanchi
 
Getting up to speed with Kafka Connect: from the basics to the latest feature...
Getting up to speed with Kafka Connect: from the basics to the latest feature...Getting up to speed with Kafka Connect: from the basics to the latest feature...
Getting up to speed with Kafka Connect: from the basics to the latest feature...HostedbyConfluent
 
Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Verv...
Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Verv...Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Verv...
Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Verv...Flink Forward
 
Zero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyZero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyDaniel Bimschas
 
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...confluent
 
MQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object APIMQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object APIMichael Koster
 
Exploiting Deserialization Vulnerabilities in Java
Exploiting Deserialization Vulnerabilities in JavaExploiting Deserialization Vulnerabilities in Java
Exploiting Deserialization Vulnerabilities in JavaCODE WHITE GmbH
 
카프카, 산전수전 노하우
카프카, 산전수전 노하우카프카, 산전수전 노하우
카프카, 산전수전 노하우if kakao
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
No data loss pipeline with apache kafka
No data loss pipeline with apache kafkaNo data loss pipeline with apache kafka
No data loss pipeline with apache kafkaJiangjie Qin
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka StreamsGuozhang Wang
 
Autoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeAutoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeFlink Forward
 

Tendances (20)

The basics of fluentd
The basics of fluentdThe basics of fluentd
The basics of fluentd
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
AOT and Native with Spring Boot 3.0
AOT and Native with Spring Boot 3.0AOT and Native with Spring Boot 3.0
AOT and Native with Spring Boot 3.0
 
A Deep Dive into Kafka Controller
A Deep Dive into Kafka ControllerA Deep Dive into Kafka Controller
A Deep Dive into Kafka Controller
 
Instrumenting and Scaling Databases with Envoy
Instrumenting and Scaling Databases with EnvoyInstrumenting and Scaling Databases with Envoy
Instrumenting and Scaling Databases with Envoy
 
Concurrent Programming Using the Disruptor
Concurrent Programming Using the DisruptorConcurrent Programming Using the Disruptor
Concurrent Programming Using the Disruptor
 
Apache Kafka at LinkedIn
Apache Kafka at LinkedInApache Kafka at LinkedIn
Apache Kafka at LinkedIn
 
OVN - Basics and deep dive
OVN - Basics and deep diveOVN - Basics and deep dive
OVN - Basics and deep dive
 
Getting up to speed with Kafka Connect: from the basics to the latest feature...
Getting up to speed with Kafka Connect: from the basics to the latest feature...Getting up to speed with Kafka Connect: from the basics to the latest feature...
Getting up to speed with Kafka Connect: from the basics to the latest feature...
 
Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Verv...
Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Verv...Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Verv...
Towards Flink 2.0: Unified Batch & Stream Processing - Aljoscha Krettek, Verv...
 
Zero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyZero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with Netty
 
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
 
MQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object APIMQTT - REST Bridge using the Smart Object API
MQTT - REST Bridge using the Smart Object API
 
Exploiting Deserialization Vulnerabilities in Java
Exploiting Deserialization Vulnerabilities in JavaExploiting Deserialization Vulnerabilities in Java
Exploiting Deserialization Vulnerabilities in Java
 
카프카, 산전수전 노하우
카프카, 산전수전 노하우카프카, 산전수전 노하우
카프카, 산전수전 노하우
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
No data loss pipeline with apache kafka
No data loss pipeline with apache kafkaNo data loss pipeline with apache kafka
No data loss pipeline with apache kafka
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
 
Autoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeAutoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive Mode
 

Similaire à Networking in Java with NIO and Netty

12 module
12  module12  module
12 moduleAsif
 
Office Comunnications Server 2007 R2 Poster
Office Comunnications Server 2007 R2 PosterOffice Comunnications Server 2007 R2 Poster
Office Comunnications Server 2007 R2 PosterPaulo Freitas
 
Forward Networks - Networking Field Day 13 presentation
Forward Networks - Networking Field Day 13 presentationForward Networks - Networking Field Day 13 presentation
Forward Networks - Networking Field Day 13 presentationForward Networks
 
Forward Networks - Networking Field Day 13 presentation
Forward Networks - Networking Field Day 13 presentationForward Networks - Networking Field Day 13 presentation
Forward Networks - Networking Field Day 13 presentationAndrew Wesbecher
 
Linux Native, HTTP Aware Network Security
Linux Native, HTTP Aware Network SecurityLinux Native, HTTP Aware Network Security
Linux Native, HTTP Aware Network SecurityThomas Graf
 
Getting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ariGetting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ariPascal Cadotte-Michaud
 
Application Visibility and Experience through Flexible Netflow
Application Visibility and Experience through Flexible NetflowApplication Visibility and Experience through Flexible Netflow
Application Visibility and Experience through Flexible NetflowCisco DevNet
 
Shedding Light on LINE Token Economy You Won't Find in Our White Paper
Shedding Light on LINE Token Economy You Won't Find in Our White PaperShedding Light on LINE Token Economy You Won't Find in Our White Paper
Shedding Light on LINE Token Economy You Won't Find in Our White PaperLINE Corporation
 
Jon McCoy - AppSec-USA-2014 Hacking C#(.NET) Applications:Defend by Design
Jon McCoy - AppSec-USA-2014 Hacking C#(.NET) Applications:Defend by DesignJon McCoy - AppSec-USA-2014 Hacking C#(.NET) Applications:Defend by Design
Jon McCoy - AppSec-USA-2014 Hacking C#(.NET) Applications:Defend by Designjonmccoy
 
Hermes Reliable Replication Protocol - ASPLOS'20 Presentation
Hermes Reliable Replication Protocol -  ASPLOS'20 PresentationHermes Reliable Replication Protocol -  ASPLOS'20 Presentation
Hermes Reliable Replication Protocol - ASPLOS'20 PresentationAntonios Katsarakis
 
Lync 2010 deep dive edge
Lync 2010 deep dive edgeLync 2010 deep dive edge
Lync 2010 deep dive edgeHarold Wong
 
IRJET- Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP ...
IRJET- Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP ...IRJET- Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP ...
IRJET- Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP ...IRJET Journal
 
Kafka Connect by Datio
Kafka Connect by DatioKafka Connect by Datio
Kafka Connect by DatioDatio Big Data
 
Presentation To Vo Ip Round Table V2
Presentation To Vo Ip Round Table V2Presentation To Vo Ip Round Table V2
Presentation To Vo Ip Round Table V2Warren Bent
 
Authenticated Identites in VoIP Call Control
Authenticated Identites in VoIP Call ControlAuthenticated Identites in VoIP Call Control
Authenticated Identites in VoIP Call ControlWarren Bent
 
Scaling big with Apache Kafka
Scaling big with Apache KafkaScaling big with Apache Kafka
Scaling big with Apache KafkaNikolay Stoitsev
 
IRJET - Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP...
IRJET - Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP...IRJET - Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP...
IRJET - Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP...IRJET Journal
 

Similaire à Networking in Java with NIO and Netty (20)

WebSockets 101
WebSockets 101WebSockets 101
WebSockets 101
 
12 module
12  module12  module
12 module
 
Distributed IP-PBX
Distributed IP-PBX Distributed IP-PBX
Distributed IP-PBX
 
Office Comunnications Server 2007 R2 Poster
Office Comunnications Server 2007 R2 PosterOffice Comunnications Server 2007 R2 Poster
Office Comunnications Server 2007 R2 Poster
 
Forward Networks - Networking Field Day 13 presentation
Forward Networks - Networking Field Day 13 presentationForward Networks - Networking Field Day 13 presentation
Forward Networks - Networking Field Day 13 presentation
 
Forward Networks - Networking Field Day 13 presentation
Forward Networks - Networking Field Day 13 presentationForward Networks - Networking Field Day 13 presentation
Forward Networks - Networking Field Day 13 presentation
 
Client server
Client serverClient server
Client server
 
Linux Native, HTTP Aware Network Security
Linux Native, HTTP Aware Network SecurityLinux Native, HTTP Aware Network Security
Linux Native, HTTP Aware Network Security
 
Getting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ariGetting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ari
 
Application Visibility and Experience through Flexible Netflow
Application Visibility and Experience through Flexible NetflowApplication Visibility and Experience through Flexible Netflow
Application Visibility and Experience through Flexible Netflow
 
Shedding Light on LINE Token Economy You Won't Find in Our White Paper
Shedding Light on LINE Token Economy You Won't Find in Our White PaperShedding Light on LINE Token Economy You Won't Find in Our White Paper
Shedding Light on LINE Token Economy You Won't Find in Our White Paper
 
Jon McCoy - AppSec-USA-2014 Hacking C#(.NET) Applications:Defend by Design
Jon McCoy - AppSec-USA-2014 Hacking C#(.NET) Applications:Defend by DesignJon McCoy - AppSec-USA-2014 Hacking C#(.NET) Applications:Defend by Design
Jon McCoy - AppSec-USA-2014 Hacking C#(.NET) Applications:Defend by Design
 
Hermes Reliable Replication Protocol - ASPLOS'20 Presentation
Hermes Reliable Replication Protocol -  ASPLOS'20 PresentationHermes Reliable Replication Protocol -  ASPLOS'20 Presentation
Hermes Reliable Replication Protocol - ASPLOS'20 Presentation
 
Lync 2010 deep dive edge
Lync 2010 deep dive edgeLync 2010 deep dive edge
Lync 2010 deep dive edge
 
IRJET- Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP ...
IRJET- Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP ...IRJET- Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP ...
IRJET- Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP ...
 
Kafka Connect by Datio
Kafka Connect by DatioKafka Connect by Datio
Kafka Connect by Datio
 
Presentation To Vo Ip Round Table V2
Presentation To Vo Ip Round Table V2Presentation To Vo Ip Round Table V2
Presentation To Vo Ip Round Table V2
 
Authenticated Identites in VoIP Call Control
Authenticated Identites in VoIP Call ControlAuthenticated Identites in VoIP Call Control
Authenticated Identites in VoIP Call Control
 
Scaling big with Apache Kafka
Scaling big with Apache KafkaScaling big with Apache Kafka
Scaling big with Apache Kafka
 
IRJET - Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP...
IRJET - Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP...IRJET - Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP...
IRJET - Overview of Hole Punching: ICMP Hole Punching, TCP Hole Punching, UDP...
 

Plus de Constantine Slisenka

Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...Constantine Slisenka
 
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftLyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftConstantine Slisenka
 
What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)Constantine Slisenka
 
What does it take to be an architect
What does it take to be an architectWhat does it take to be an architect
What does it take to be an architectConstantine Slisenka
 
VoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backendVoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backendConstantine Slisenka
 
Building scalable web socket backend
Building scalable web socket backendBuilding scalable web socket backend
Building scalable web socket backendConstantine Slisenka
 
Latency tracing in distributed Java applications
Latency tracing in distributed Java applicationsLatency tracing in distributed Java applications
Latency tracing in distributed Java applicationsConstantine Slisenka
 
Distributed transactions in SOA and Microservices
Distributed transactions in SOA and MicroservicesDistributed transactions in SOA and Microservices
Distributed transactions in SOA and MicroservicesConstantine Slisenka
 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming APIConstantine Slisenka
 
Database transaction isolation and locking in Java
Database transaction isolation and locking in JavaDatabase transaction isolation and locking in Java
Database transaction isolation and locking in JavaConstantine Slisenka
 
Profiling distributed Java applications
Profiling distributed Java applicationsProfiling distributed Java applications
Profiling distributed Java applicationsConstantine Slisenka
 

Plus de Constantine Slisenka (11)

Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...
 
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftLyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
 
What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)
 
What does it take to be an architect
What does it take to be an architectWhat does it take to be an architect
What does it take to be an architect
 
VoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backendVoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backend
 
Building scalable web socket backend
Building scalable web socket backendBuilding scalable web socket backend
Building scalable web socket backend
 
Latency tracing in distributed Java applications
Latency tracing in distributed Java applicationsLatency tracing in distributed Java applications
Latency tracing in distributed Java applications
 
Distributed transactions in SOA and Microservices
Distributed transactions in SOA and MicroservicesDistributed transactions in SOA and Microservices
Distributed transactions in SOA and Microservices
 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming API
 
Database transaction isolation and locking in Java
Database transaction isolation and locking in JavaDatabase transaction isolation and locking in Java
Database transaction isolation and locking in Java
 
Profiling distributed Java applications
Profiling distributed Java applicationsProfiling distributed Java applications
Profiling distributed Java applications
 

Dernier

JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
How to Improve the Employee Experience? - HRMS Software
How to Improve the Employee Experience? - HRMS SoftwareHow to Improve the Employee Experience? - HRMS Software
How to Improve the Employee Experience? - HRMS SoftwareNYGGS Automation Suite
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Incrobinwilliams8624
 
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.Sharon Liu
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
New ThousandEyes Product Features and Release Highlights: March 2024
New ThousandEyes Product Features and Release Highlights: March 2024New ThousandEyes Product Features and Release Highlights: March 2024
New ThousandEyes Product Features and Release Highlights: March 2024ThousandEyes
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesShyamsundar Das
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxJoão Esperancinha
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageDista
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 

Dernier (20)

JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
How to Improve the Employee Experience? - HRMS Software
How to Improve the Employee Experience? - HRMS SoftwareHow to Improve the Employee Experience? - HRMS Software
How to Improve the Employee Experience? - HRMS Software
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Inc
 
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
20240319 Car Simulator Plan.pptx . Plan for a JavaScript Car Driving Simulator.
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
New ThousandEyes Product Features and Release Highlights: March 2024
New ThousandEyes Product Features and Release Highlights: March 2024New ThousandEyes Product Features and Release Highlights: March 2024
New ThousandEyes Product Features and Release Highlights: March 2024
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security Challenges
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 

Networking in Java with NIO and Netty