ݺߣ

ݺߣShare a Scribd company logo
Netty Teknoloji Yığıtında Nerede?
1. Socket
2. Thread per Socket
3. Linux epoll : Asenkron dünyaya giriş
4. Asenkron TCP, UDP kütüphanaleri : ACE (çok eski) boost asio, Netty, Apache Mina vs.
5. Middleware
5.1 Broker kullanmayan middleware : DDS, ZeroMQ vs.
5.2 Broker kullanan middleware : JMS, ActiveMQ, Kafka vs.
Broker kullanan middleware’ler de kendi içlerinde scalability, push based veya pull based çalışma
gibi bir sürü dallara ayrılıyorlar.
Netty Teknoloji Yığıtında Nerede?
Yani Netty TCP, UDP istemci veya sunucu uygulamalarını geliştirirken kullanılabilecek bir kütüphane.
Sürüm 4.x kullanılıyor. Sürüm 5.x var ancak abondoned, yıllardır geliştirilmiyor.
Örnek TCP Sunucusu
Örnek Handler
Netty Tanıtımı
Netty Tanıtımı
Önemli Bileşenler
1. Channel Tipleri
EmbeddedChannel, LocalServerChannel, NioDatagramChannel, NioSctpChannel,
NioSocketChannel
2. EventLoop
Tek thread tarafından çalıştırılır. EventLoopGroup ile gruplanabilir.
3. ChannelFuture
Channel üzerinde yapılan tüm işlemler Future döndürür. Yani hemen gerçekleşmez.
4. ChannelHandler ve ChannelPipeline
Her channel bir pipeline’a sahiptir. Pipe aslında bir ChannelHandler dizisidir. Gelen ve giden mesajlar
sırayla ChannelHandler’lara Netty tarafından geçilir.
Kalıtım ve Mesaj ışı
Transports
ByteBuf
 Veriyi taşıyan sınıf
 İki çeşit ByteBuf var
 HeapByteBuf ve DirectByteBuf
Heap ByteBuf
Direct ByteBuf
Composite ByteBuf
ByteBuf API
 Zengin bir API sağlıyor
 - Search işlemleri
 - Random, sequential access
 - Readable, writable byte sayaçları
 - Kopyalama ve slice işlemleri
ByteBuf Reference Counting
 Netty performans için ByteBuf nesnelerini
baştan yaratmıyor. Bunları bir havuzdan alıyor
ve işlem bitince havuza geri veriyor. Bunun için
de Reference Counting yapıyor.
Release
EventLoop
Önemli Noktalar
 ChannelHandler hep aynı EventLoop tarafından
çağrılır
 Outbound mesajlar da EventLoop tarafından
çalıştırılır. Netty 3 ile kendi thread’imiz
kullanılıyordu ancak bu thread safety
problemlemlerine sebep oluyordu. Bu yüzden
değiştirildi
 Vertx verticle da benzer bir mantık kullanılıyor.
Blocking Transports
Long Running Task Varsa
 Örneğin veri tabanına yazma/okuma işlemi
varsa
 Netty EventExecutorGroup sınıfları sağlar.
 Bir ChannelHandler üzerindeki tüm işlemlerin
ayrı bir thread-pool üzerinde çalışması sağlanır
Unit Testing
Outbound Msg Test
Codec Framework
 Netty encoder ve decoder altyapısı sağlar.
 Encoder ve decoder sınıfları ByteBuf’tan Java
nesnesine veya Java nesnesinden bir başka
Java nesnesine çevrim sağlar.
 Bazı codecler hazır geliyor. Http gibi

Netty Kullanan Diğer Altyapılar
 Özellikle reactive altyapılar EventLoop olarak
altta Netty kullanıyor
 Vertx
 Project Reactor
 Driver’lar Netty kullanıyor.
 Redis Redisson Driver
 Kendimiz direkt kullanmasak bile Netty bir
yerlerde karşımızı çıkıyor :)

More Related Content

Netty Tanıtımı

  • 1. Netty Teknoloji Yığıtında Nerede? 1. Socket 2. Thread per Socket 3. Linux epoll : Asenkron dünyaya giriş 4. Asenkron TCP, UDP kütüphanaleri : ACE (çok eski) boost asio, Netty, Apache Mina vs. 5. Middleware 5.1 Broker kullanmayan middleware : DDS, ZeroMQ vs. 5.2 Broker kullanan middleware : JMS, ActiveMQ, Kafka vs. Broker kullanan middleware’ler de kendi içlerinde scalability, push based veya pull based çalışma gibi bir sürü dallara ayrılıyorlar.
  • 2. Netty Teknoloji Yığıtında Nerede? Yani Netty TCP, UDP istemci veya sunucu uygulamalarını geliştirirken kullanılabilecek bir kütüphane. Sürüm 4.x kullanılıyor. Sürüm 5.x var ancak abondoned, yıllardır geliştirilmiyor.
  • 7. Önemli Bileşenler 1. Channel Tipleri EmbeddedChannel, LocalServerChannel, NioDatagramChannel, NioSctpChannel, NioSocketChannel 2. EventLoop Tek thread tarafından çalıştırılır. EventLoopGroup ile gruplanabilir. 3. ChannelFuture Channel üzerinde yapılan tüm işlemler Future döndürür. Yani hemen gerçekleşmez. 4. ChannelHandler ve ChannelPipeline Her channel bir pipeline’a sahiptir. Pipe aslında bir ChannelHandler dizisidir. Gelen ve giden mesajlar sırayla ChannelHandler’lara Netty tarafından geçilir.
  • 10. ByteBuf  Veriyi taşıyan sınıf  İki çeşit ByteBuf var  HeapByteBuf ve DirectByteBuf
  • 14. ByteBuf API  Zengin bir API sağlıyor  - Search işlemleri  - Random, sequential access  - Readable, writable byte sayaçları  - Kopyalama ve slice işlemleri
  • 15. ByteBuf Reference Counting  Netty performans için ByteBuf nesnelerini baştan yaratmıyor. Bunları bir havuzdan alıyor ve işlem bitince havuza geri veriyor. Bunun için de Reference Counting yapıyor.
  • 18. Önemli Noktalar  ChannelHandler hep aynı EventLoop tarafından çağrılır  Outbound mesajlar da EventLoop tarafından çalıştırılır. Netty 3 ile kendi thread’imiz kullanılıyordu ancak bu thread safety problemlemlerine sebep oluyordu. Bu yüzden değiştirildi  Vertx verticle da benzer bir mantık kullanılıyor.
  • 20. Long Running Task Varsa  Örneğin veri tabanına yazma/okuma işlemi varsa  Netty EventExecutorGroup sınıfları sağlar.  Bir ChannelHandler üzerindeki tüm işlemlerin ayrı bir thread-pool üzerinde çalışması sağlanır
  • 23. Codec Framework  Netty encoder ve decoder altyapısı sağlar.  Encoder ve decoder sınıfları ByteBuf’tan Java nesnesine veya Java nesnesinden bir başka Java nesnesine çevrim sağlar.  Bazı codecler hazır geliyor. Http gibi 
  • 24. Netty Kullanan Diğer Altyapılar  Özellikle reactive altyapılar EventLoop olarak altta Netty kullanıyor  Vertx  Project Reactor  Driver’lar Netty kullanıyor.  Redis Redisson Driver  Kendimiz direkt kullanmasak bile Netty bir yerlerde karşımızı çıkıyor :)