You are on page 1of 13

Netty

Các vấn đề cơ bản về Netty


Tổng quan
• Netty là gì?
– Phương pháp kết nối client – server thông
qua socket
– Chức năng tương đương apache Mina
• Tại sao dùng netty
– Apache Mina đã đóng với Dev, khó
customize. Netty vẫn là hệ thống mở và hoàn
toàn customize được
Kiến trúc của Netty
Kiến trúc netty
• Netty hỗ trỡ xây dựng winform trên các
dịch vụ vận chuyển( Transport Service) và
hỗ trợ webform trên các giao thức trên
nền web( Http&Websocket,
SSL&startTSL, GoogleProtobuf)
• Điều mà ta quan tâm là cách sử dụng các
phương thức được hỗ trợ bởi Netty.
Channels và Pipeline
• Client kết nối với Server thông qua 1
kênh( channel) và mỗi kênh( channel) chỉ
gắn với 1 kết nối
• Ống ( pipeline) được dựng trên 1 kênh
nhằm tối ưu hóa các việc truyền dữ liệu
trên kênh bằng cách phân luồng. Tại sao
lại vậy???
Channels và pipeline
• Đường dữ liệu
truyền trên kênh
Channel và pipeline
• Do dữ liệu phải đi tuần tự qua các Handler
nên khi sử dụng pipeline việc sử lí dữ liệu
sẽ được liên tục trên kênh, giúp tăng tốc
việc truyền dữ liệu
Sử dụng netty
• Các trạng thái kết nối( channel) giữa client
và server trong netty
• Khi kết nối:
OPEN => BOUND => CONNECTED
• Khi đứt kết nối:
DISCONNECTED => UNBOUND =>
CLOSE
Sử dụng netty
• Tạo Handler:
– Các handler thường được kế thừa từ lớp
abstract của netty( SimpleChannelHandler,
SimpleUpstreamChannelHandler,
SimpleDownstreamChannelHandler)
– Các phương thức override kế thừa từ các lớp
xử lí cho từng trạng thái của kênh
( channelOpen, channelConnected,
channelDisconnected, channelClose)
– Hàm receivedMessage sử dụng để nhận các
dữ liệu trên kênh
Sử dụng Netty
• Tạo Pipeline
– Từ các handler đã có, ta tạo ra 1
pipeline( pipelinFactory) để sử dụng
• Tạo channel
– Tạo channel( channelFactory) sau đó gắn
kênh đã tạo phía trên vào channel
Handshake
• 1 kết nối giữa client và server trong thực
tế để đảm bảo tính bảo mật cần có một
quá trình xác thực gọi là bắt
tay( Handshake)
• Handshake thực chất cũng là 1 kiểm soát(
Handler) trên pipeline. Nó nhằm xác thực
client và server để tạo kết nối giữa client
và server. Sau khi client và server xác
thực và kết nối thành công, handshake sẽ
được remove khỏi pipeline và client-server
sẽ truyền dữ liệu bình thường
Handshake
• Trước hankshake khi pipeline vừa tạo
Handshake
• Sau khi Handshake thành công

You might also like