SlideShare a Scribd company logo
1 of 24
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
Ö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 Akışı
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

Similar to Netty Tanıtımı

2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web GeliştiriciliğiBurak Oğuz
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ ProgramlamaOguzhan Coskun
 
Node js part 1 shared
Node js part 1 sharedNode js part 1 shared
Node js part 1 sharedEngin Yelgen
 
Metasploit Framework ile Güvenlik Denetimi
Metasploit Framework ile Güvenlik DenetimiMetasploit Framework ile Güvenlik Denetimi
Metasploit Framework ile Güvenlik DenetimiFatih Ozavci
 
Telsiz Aglarda Guvenlik
Telsiz Aglarda GuvenlikTelsiz Aglarda Guvenlik
Telsiz Aglarda Guvenlikeroglu
 
OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack
OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStackOpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack
OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStackHuseyin Cotuk
 
Metasploit framework ile exploit gelistirme 2013 1.5
Metasploit framework ile exploit gelistirme   2013 1.5Metasploit framework ile exploit gelistirme   2013 1.5
Metasploit framework ile exploit gelistirme 2013 1.5Canberk Bolat
 
Metasploit Framework ile Exploit Gelistirme
Metasploit Framework ile Exploit GelistirmeMetasploit Framework ile Exploit Gelistirme
Metasploit Framework ile Exploit GelistirmeFatih Ozavci
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Cihan Özhan
 
Wireshark.pdf
Wireshark.pdfWireshark.pdf
Wireshark.pdfandrohitt
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkBGA Cyber Security
 
windows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over clusterwindows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over clusterÇözümPARK
 
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAğ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAlonelaz
 
Bilgisayar Ağları
Bilgisayar AğlarıBilgisayar Ağları
Bilgisayar AğlarıFaik GÜNAY
 
SVN & CVS by Eren SIMSEK
SVN & CVS by Eren SIMSEKSVN & CVS by Eren SIMSEK
SVN & CVS by Eren SIMSEKerensimsek
 
KERNEL VE WİNDOWS KURULUMU
KERNEL VE WİNDOWS KURULUMUKERNEL VE WİNDOWS KURULUMU
KERNEL VE WİNDOWS KURULUMUKadir Ertan Çam
 
Webcast - Failover Cluster Architecture
Webcast - Failover Cluster Architecture Webcast - Failover Cluster Architecture
Webcast - Failover Cluster Architecture Hakan Yüksel
 
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux 2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux Burak Oğuz
 

Similar to Netty Tanıtımı (20)

2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ Programlama
 
Node js part 1 shared
Node js part 1 sharedNode js part 1 shared
Node js part 1 shared
 
AğAğ
 
Metasploit Framework ile Güvenlik Denetimi
Metasploit Framework ile Güvenlik DenetimiMetasploit Framework ile Güvenlik Denetimi
Metasploit Framework ile Güvenlik Denetimi
 
Telsiz Aglarda Guvenlik
Telsiz Aglarda GuvenlikTelsiz Aglarda Guvenlik
Telsiz Aglarda Guvenlik
 
Node js giriş (intro)
Node js giriş (intro)Node js giriş (intro)
Node js giriş (intro)
 
OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack
OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStackOpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack
OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack
 
Metasploit framework ile exploit gelistirme 2013 1.5
Metasploit framework ile exploit gelistirme   2013 1.5Metasploit framework ile exploit gelistirme   2013 1.5
Metasploit framework ile exploit gelistirme 2013 1.5
 
Metasploit Framework ile Exploit Gelistirme
Metasploit Framework ile Exploit GelistirmeMetasploit Framework ile Exploit Gelistirme
Metasploit Framework ile Exploit Gelistirme
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)
 
Wireshark.pdf
Wireshark.pdfWireshark.pdf
Wireshark.pdf
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
 
windows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over clusterwindows server 2008 r2 hyper-v fail over cluster
windows server 2008 r2 hyper-v fail over cluster
 
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAğ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
 
Bilgisayar Ağları
Bilgisayar AğlarıBilgisayar Ağları
Bilgisayar Ağları
 
SVN & CVS by Eren SIMSEK
SVN & CVS by Eren SIMSEKSVN & CVS by Eren SIMSEK
SVN & CVS by Eren SIMSEK
 
KERNEL VE WİNDOWS KURULUMU
KERNEL VE WİNDOWS KURULUMUKERNEL VE WİNDOWS KURULUMU
KERNEL VE WİNDOWS KURULUMU
 
Webcast - Failover Cluster Architecture
Webcast - Failover Cluster Architecture Webcast - Failover Cluster Architecture
Webcast - Failover Cluster Architecture
 
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux 2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
 

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.
  • 5.
  • 6.
  • 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 :)