PHP       ölçeklenebİlİrlİk
          Ve Performans




      Mustafa İlerİ
 EkİM'12 - Özgür web günlerİ
Yatay ve dİkey Ölçekleme
Temel performans problemlerİ
Yük DENGELEYİCİLER ( load balancer )
Web hızlandırıcılar
PHP hızlandırıcılar
Önbellekleme Sİstemlerİ
arama motorları
MESAJ KUYRUK SİSTEMLERİ
SORULAR
Yatay ve dİkey ölçekleme
Ölçeklenebİlİrlİk
Bİr sİSTEMİN artan bİLGİ İşlem hacmİNİN kolayca yönetİlebİlme ve genİşletİlebİlme yeteneğİdİr.

DİKEY ÖLÇEKLENEBİLİRLİK                                    YATAY ÖLÇEKLENEBİLİRLİK
                                                    BİR SİSTEMİN İŞLEM HACMİNİ ARTTIRABİLMEK
TEK BİR MAKİNE İÇİN KAYNAKLARI                       İÇİN TEK MAKİNEDEKİ YÜKÜ DÜZGÜN OLARAK
ARTTIRARAK SİSTEMİN İŞLEM HACMİNİ                           BİRDEN FAZLA MAKİNEYE VE DÜĞÜME
ARTTIRABİLMEKTİR.                                                              YAYABİLMEKTİR.
YATAY VE DİKEY ÖLÇEKLEME
 yatay ÖLÇEKLENEBİLİRLİK




                           SİSTEMİN CEVAP VERME SÜRESİ
 DİKEY ÖLÇEKLENEBİLİRLİK



                                                         SİSTEM YÜKÜ
PERFORMANS VE ÖLÇEKLENDİRME
                    ÖlçeklenebİLİRLİK != PERFORMANS
PERFORMANS PROBLEMİ: BİR SİSTEM, TEK KULLANICI İLE YAVAŞ ÇALIŞIYORSA
BU BİR PERFORMANS PROBLEMİDİR.

ÖLÇEKLENEBİLİRLİK PROBLEMİ: BİR SİSTEM, ÜZERİNDEKİ YÜK ARTTIĞI
ZAMAN YAVAŞ ÇALIŞIYORSA BU BİR ÖLÇEKLENEBİLİRLİK PROBLEMİDİR.




                     ÖlçeklenebİLİRLİK > PERFORMANS
                      TEMEL SORUN KAYNAK YÖNETİMİ
Temel performans problemlerİ

Gereksİz network trafİğİ
Dİsk İşlemlerİ
Verİtabanına gereksİz yapılaN sorgular
Sİstemde süreklİ çalışan scrİptler
Kötü Kod
Yük DENGELEYİCİLER

  YÜK DENGELEME
  BİR NETWORK TERMİNOLOJİSİDİR. BASİT OLARAK İŞ YÜKÜNÜ BİRDEN FAZLA BİLGİSAYARA DÜZGÜN
  OLARAK PAYLAŞTIRMAKTIR. DONANIMSAL VEYA YAZILIMSAL OLARAK YAPILABİLİR.

  NEDEN ?
  DİKEY ÖLÇEKLEME BELİRLİ BİR YERDEN SONRA ÇOK SIKINTILI OLUR ( MALİYET VE PERFORMANS )
  SİSTEMİN HATA TOLERANSINI ARTTIRMAK.




http://en.wikipedia.org/wiki/Load_balancing_(computing)
Yük dengeleyİCİLER
WEB HIZLANDIRICILAR
 WEB HIZLANDIRICILAR
 WEB SİTELERİNE ERİŞİM ZAMANINI AZALTAN, DOĞAL OLARAK KAYNAK TÜKETİMİNİ DİREKt
 ETKİLEYEBİLEN SİSTEMLERDİR.

 SUNUCU SEVİYESİNDE BELLEKLEME YAPAR, DOSYALAR İÇİN SIKIŞTIRMA YAPAR...
 http://en.wikipedia.org/wiki/Web_accelerator




 NEDEN ?                                                            Alternatİfler
 I/O AZALTMAK                                                                    VarnISH
 İŞLEMCİ YÜKÜNÜ AZALTMAK                                                           NGINX
                                                                                   SQUID
PHP hizlandiricilar
                             PHP HIZLANDIRICILAR:
PHP İLE YAZILMIŞ UYGULAMALARIN PERFORMANSINI İYİLEŞTİRMEYİ AMAÇLAYAN PHP EKLENTİLERİDİR.



                     ALTERNATİF PHP HIZLANDIRICILAR:
                              Alternative PHP Cache (APC)
                               ionCube PHP Accelerator
                                 Nusphere PhpExpress
                                   Zend Optimizer+
                                   Turck MMCache
                                    eAccelerator
                                        XCache
PHP hizlandiricilar
PHP hizlandiricilar
APC                                                           ALTERNATIVE PHP CACHING

APC NEDİR ?
“APC, alternatİf PHP önbelleğİdİr. PHP betİklerİnİ derlemek ve
önbelleklemek İÇİn özgür, açık ve sağlam bİr çalışma ortamı
sağlamak adına tasarlandı.”
                                               http://www.belgeler.org/


APC' NİN AVANTAJLARI
Opcode Cache
Ücretsİz
Kod değİşİkLİğİ yok                                        apc.stat=1 DOSYA DEĞİŞİKLİĞİNDE BELLEĞİ GÜNCELLE
                                                 APC.SHM_SIZE=512 MB CİNSİNDEN BELLEKTE KULLANILACAK ALAN
Açık kaynak
Kolay Kurulum


                                                       http://www.php.net/manual/tr/apc.configuration.php
APC                                                 ALTERNATIVE PHP CACHING
               ab -c 20 -n 1000 http://blog.mustafaileri.com/




                             APC         NORMAL
      SANİYE BAŞINA İSTEK   13.61           8.39      REQUEST PER SECOND
      TOPLAM SÜRE           73.492        119.248     SANİYE
Önbellekleme sİstemlerİ
                                    ÖNBELLEKLEME
 İSTENİLEN BİR VERİNİN GELECEKTEKİ OLASI İSTEKLERDE DAHA HIZLI SERVİS EDİLEBİLMESİ AMACI İLE
                                   BELLEKTE TUTULMASIDIR.


 NEDEN ?                                                                ALTERNATİFLER
 DISK I/O AZALTMAK İÇİN                                                          MEMCACHED
 DB BOTTLENECK AZALTMAK                                                           HAZELCAST
 HIZ                                                                             TERRACOTTA
                                                                                      REDIS
                                                                                        APC
Önbellekleme sİstemlerİ
ÖNBELLEKLEME SİSTEMLERİ


 “There are only two hard things in Computer Science:
        cache invalidation and naming things”.
                                          Phil Lewis Karlton
ÖNBELLEKLEME SİSTEMLERİ

Kİmlİk doğrulama
ÖNBELLEKLEME servİsLERİNDE kİmlİk DOĞRULAMA OLMAYABİLİR ( BKZ. MEMCACHED ).

Verİ kontrolü
Belleklenecek verİnİn kontrolü sağlanmalı,
belleklenen değer İstenİldİğİ zaman yenİlenebİlmelİ.


Depolama aracı olarak kullanırken dİkkat edıİlmelİ
ÖNBELLEKLEME SİSTEMLERİNDE tutulan verİlerİn bİr belleklenme sÜresİ OLABİLİR,
Bu süre sonunda verİler sİlİnEBİLİR.
memcacheD                                                                                                  11211

MemcacheD nedİr ?
MemcacheD, verİtabanı yükünü hafİfleterek, dİnamİk web uygulamalarınıN hızlandırılmasını amaçlayan, açık kaynak
olarak gelİştİrİlen, dağıtık Mİmarİye destek veren bİr bellekleme sİstemİdİr.



                                                                                         Alternatİfler
                                                                                                           Apc
                                                                                                          REDIS
                                                                                                      Membase
                                                                                                     HazelCast
                                                                                                   Memcachedb
                                                                                                        xcache
arama motorları
                                   ARAMA MOTORLARI
  BİR BİLGİSAYAR SİSTEMİ ÜZERİNDE DEPOLANAN BİLGİLERİ BULMAYA YARDIMCI OLMAK İÇİN TASARLANMIŞ
      SİSTEMLERDİR. TEMEL AMAÇ VERİTABANINI GEREKSİZ VE YÜKLÜ SORGULARDAN KURTARMAKTIR.




NEDEN ?                                                                 Alternatİfler
ÇÜNKÜ VERİTABANINDA ARAMa MALİYETLİ VE SORUNLU BİR İŞTİR.                               SOLR
                                                                                      LUCENE
                                                                                      SPHINX
                                                                              ELASTIC SEARCH
arama motorları
SPHINX                                                                   Indexer, searchd


SPHINX
AÇIK KAYNAK OLARAK C++ İLE GELİŞTİRİLMİŞ BİR ARAMA MOTORUDUR.
2001 yılında başlamış bİR PROJEDİR.

KİMLER KULLANIYOR ?
Netlog, Craıgslıst, MozILLA, DAILY MOTION, META CAFE, CEVREMDENEVAR :)
SPHINX                                                         Indexer, searchd

KONFİGÜRASYON
  SPHINX KONFİGÜRASYON DOSYASI /etc/sphinxsearch/sphinxsearch.conf
  4 FARKLI BÖLÜMDEN OLUŞUR.

  1. source: VERİ KAYNAĞININ TANIMLANDIĞI BÖLÜM
  2. index: VERİ İÇİN İNDEKSLEME AYARLARININ BULUNDUĞU BÖLÜM
  3. indexer: İNDEKSLEYİCİ AYARLARI
  4. searchd: ARAMA SUNUCUSU AYARLARI
SPHINX                                                        Indexer, searchd

Source
source geo
{
        type                    = mysql
        sql_host                = 127.0.0.1
        sql_user                = root
        sql_pass                = root
        sql_db                  = veritabani_adi
        sql_port                = 3306
        sql_query_pre           = set names utf8
        sql_query_pre           = set session query_cache_type=OFF
        sql_query               = SELECT L . *, RADIANS( L.locationLng ) AS
longitude, RADIANS( L.locationLat ) AS latitude,GROUP_CONCAT(T.tagName) AS tagLabels
FROM location L LEFT JOIN locationTagRelation LTR ON LTR.locationId=L.locationId
LEFT JOIN tag T ON T.tagId=LTR.tagId WHERE locationStatus='active' GROUP BY
(L.locationId)
        sql_attr_float          = longitude
        sql_attr_float          = latitude
        sql_attr_uint           = locationtype
        sql_attr_multi          = uint tagid FROM query; SELECT locationId,tagId
FROM locationTagRelation
}
SPHINX                                           Indexer, searchd

INDEX
 index geo
 {
         source         =   geo
         path           =   /etc/sphinxsearch/data/geo/geo
         docinfo        =   extern
         mlock          =   0
         min_word_len   =   1
         charset_type   =   utf-8
 }


INDEXER
 index geo
 {
     mem_limit          = 256M
 }
SPHINX                                           Indexer, searchd

SEARCHD
searchd
{
    listen              =   127.0.0.1
    Port                =   3312
    log                 =   /var/log/sphinxsearch/searchd.log
    query_log           =   /var/log/sphinxsearch/query.log
    read_timeout        =   5
    client_timeout      =   300
    max_children        =   30
    pid_file            =   /var/run/searchd.pid
    max_matches         =   1000
    preopen_indexes     =   0
    max_packet_size     =   8M
    max_filters         =   256
    max_filter_values   =   4096
}
SPHINX                       Indexer, searchd

İNDEKSLEME VE ARAMA İŞLEMİ
MESAJ KUYRUK SİSTEMLERİ
                                        MESAJ KUYRUK SİSTEMLERİ
  ASENKRON İŞLEMLERİ SIRAYA KOYARAK ZAMANI GELDİĞİNDE BUNLARI İŞLEYEBİLEN SİSTEMLERDİR.

2004 yılında başlayan ve 2006 yılında olgunlaşan açık standartlı AMQP çözümü İle "mesaj
                   kuyruğu" çözümlerİ bİr standart İle açık hale geldİ.

NEDEN ?                                                                  Alternatİfler
VERİTABANLARINDA KUYRUK İMPLEMENTASYONU GENELDE YOKTUR.                           Apache Qpid
BU TARZ İŞLEMLER İÇİN VERİTABANINA ÇOK FAZLA SAYIDA SORGU GİDEBİLİR.                    JORAM
                                                                                    RabbitMQ
                                                                       Red Hat Enterprise MRG
                                                                                     StormMQ
http://www.kodaman.org/yazi/mesaj-kuyrugu-ve-rabbitmq                               actıvemq
MESAJ KUYRUK SİSTEMLERİ
MESAJ KUYRUK SİSTEMLERİ
ANTI-PATTERN
VERİTABANININ KUYRUK YAPiSI OLARAK KULLANILMASI BİR 'ANTIPATTERN' DİR.

NEDEN ?
1. SİSTEMİN AKIŞI, KUYRUKLANMIŞ İŞLEMLERİN SONUÇLARINDAN ETKİLENİR.

2. SÜREKLİ OLUŞAN INSERT DELETE UPDATE SORGULARI YÜZÜNDEN VERİTABANINDA
'BOTTLENECK' OLUŞUR.

3. VERİTABANI ÜZERİNDE KUYRUK YAPISI KURMAK İSTERSENİZ BUNUN İÇİN BİR KUYRUK
İMPLEMENTASYONU OLUŞTURMANIZ GEREKEBİLİR.

TEHLİKE !
ANTİPATTERNLER İLK UYGULANDIĞINDA HERŞEY YOLUNDA VE DOĞRU GİDİYORMUŞ GİBİ GÖZÜKSE
DE SİSTEMİNİZ BÜYÜDÜKÇE DURUMU İÇİNDEN ÇIKILMAZ BİR HALE GETİRİRLER.
Sorular ?
EMAIL:
  mustafa.ileri@sonsuzdongu.com


TWITTER:
  https://twitter.com/mustafaileri


LINKEDIN:                                         MUSTAFA İLERİ
  http://www.linkedin.com/pub/mustafa-          Software Developer
  ileri/33/727/a27
                                         19 MAYIS M. NİHAL S. NO:5 DEVECİOĞLU APT.
                                                          DAİRE:3
BLOG:                                         ERENKÖY – KADIKÖY / İSTANBUL
  http://blog.mustafaileri.com
  http://blog.sonsuzdongu.com

Scalability performance on_php

  • 1.
    PHP ölçeklenebİlİrlİk Ve Performans Mustafa İlerİ EkİM'12 - Özgür web günlerİ
  • 2.
    Yatay ve dİkeyÖlçekleme Temel performans problemlerİ Yük DENGELEYİCİLER ( load balancer ) Web hızlandırıcılar PHP hızlandırıcılar Önbellekleme Sİstemlerİ arama motorları MESAJ KUYRUK SİSTEMLERİ SORULAR
  • 3.
    Yatay ve dİkeyölçekleme Ölçeklenebİlİrlİk Bİr sİSTEMİN artan bİLGİ İşlem hacmİNİN kolayca yönetİlebİlme ve genİşletİlebİlme yeteneğİdİr. DİKEY ÖLÇEKLENEBİLİRLİK YATAY ÖLÇEKLENEBİLİRLİK BİR SİSTEMİN İŞLEM HACMİNİ ARTTIRABİLMEK TEK BİR MAKİNE İÇİN KAYNAKLARI İÇİN TEK MAKİNEDEKİ YÜKÜ DÜZGÜN OLARAK ARTTIRARAK SİSTEMİN İŞLEM HACMİNİ BİRDEN FAZLA MAKİNEYE VE DÜĞÜME ARTTIRABİLMEKTİR. YAYABİLMEKTİR.
  • 4.
    YATAY VE DİKEYÖLÇEKLEME yatay ÖLÇEKLENEBİLİRLİK SİSTEMİN CEVAP VERME SÜRESİ DİKEY ÖLÇEKLENEBİLİRLİK SİSTEM YÜKÜ
  • 5.
    PERFORMANS VE ÖLÇEKLENDİRME ÖlçeklenebİLİRLİK != PERFORMANS PERFORMANS PROBLEMİ: BİR SİSTEM, TEK KULLANICI İLE YAVAŞ ÇALIŞIYORSA BU BİR PERFORMANS PROBLEMİDİR. ÖLÇEKLENEBİLİRLİK PROBLEMİ: BİR SİSTEM, ÜZERİNDEKİ YÜK ARTTIĞI ZAMAN YAVAŞ ÇALIŞIYORSA BU BİR ÖLÇEKLENEBİLİRLİK PROBLEMİDİR. ÖlçeklenebİLİRLİK > PERFORMANS TEMEL SORUN KAYNAK YÖNETİMİ
  • 6.
    Temel performans problemlerİ Gereksİznetwork trafİğİ Dİsk İşlemlerİ Verİtabanına gereksİz yapılaN sorgular Sİstemde süreklİ çalışan scrİptler Kötü Kod
  • 7.
    Yük DENGELEYİCİLER YÜK DENGELEME BİR NETWORK TERMİNOLOJİSİDİR. BASİT OLARAK İŞ YÜKÜNÜ BİRDEN FAZLA BİLGİSAYARA DÜZGÜN OLARAK PAYLAŞTIRMAKTIR. DONANIMSAL VEYA YAZILIMSAL OLARAK YAPILABİLİR. NEDEN ? DİKEY ÖLÇEKLEME BELİRLİ BİR YERDEN SONRA ÇOK SIKINTILI OLUR ( MALİYET VE PERFORMANS ) SİSTEMİN HATA TOLERANSINI ARTTIRMAK. http://en.wikipedia.org/wiki/Load_balancing_(computing)
  • 8.
  • 9.
    WEB HIZLANDIRICILAR WEBHIZLANDIRICILAR WEB SİTELERİNE ERİŞİM ZAMANINI AZALTAN, DOĞAL OLARAK KAYNAK TÜKETİMİNİ DİREKt ETKİLEYEBİLEN SİSTEMLERDİR. SUNUCU SEVİYESİNDE BELLEKLEME YAPAR, DOSYALAR İÇİN SIKIŞTIRMA YAPAR... http://en.wikipedia.org/wiki/Web_accelerator NEDEN ? Alternatİfler I/O AZALTMAK VarnISH İŞLEMCİ YÜKÜNÜ AZALTMAK NGINX SQUID
  • 10.
    PHP hizlandiricilar PHP HIZLANDIRICILAR: PHP İLE YAZILMIŞ UYGULAMALARIN PERFORMANSINI İYİLEŞTİRMEYİ AMAÇLAYAN PHP EKLENTİLERİDİR. ALTERNATİF PHP HIZLANDIRICILAR: Alternative PHP Cache (APC) ionCube PHP Accelerator Nusphere PhpExpress Zend Optimizer+ Turck MMCache eAccelerator XCache
  • 11.
  • 12.
  • 13.
    APC ALTERNATIVE PHP CACHING APC NEDİR ? “APC, alternatİf PHP önbelleğİdİr. PHP betİklerİnİ derlemek ve önbelleklemek İÇİn özgür, açık ve sağlam bİr çalışma ortamı sağlamak adına tasarlandı.” http://www.belgeler.org/ APC' NİN AVANTAJLARI Opcode Cache Ücretsİz Kod değİşİkLİğİ yok apc.stat=1 DOSYA DEĞİŞİKLİĞİNDE BELLEĞİ GÜNCELLE APC.SHM_SIZE=512 MB CİNSİNDEN BELLEKTE KULLANILACAK ALAN Açık kaynak Kolay Kurulum http://www.php.net/manual/tr/apc.configuration.php
  • 14.
    APC ALTERNATIVE PHP CACHING ab -c 20 -n 1000 http://blog.mustafaileri.com/ APC NORMAL SANİYE BAŞINA İSTEK 13.61 8.39 REQUEST PER SECOND TOPLAM SÜRE 73.492 119.248 SANİYE
  • 15.
    Önbellekleme sİstemlerİ ÖNBELLEKLEME İSTENİLEN BİR VERİNİN GELECEKTEKİ OLASI İSTEKLERDE DAHA HIZLI SERVİS EDİLEBİLMESİ AMACI İLE BELLEKTE TUTULMASIDIR. NEDEN ? ALTERNATİFLER DISK I/O AZALTMAK İÇİN MEMCACHED DB BOTTLENECK AZALTMAK HAZELCAST HIZ TERRACOTTA REDIS APC
  • 16.
  • 17.
    ÖNBELLEKLEME SİSTEMLERİ “Thereare only two hard things in Computer Science: cache invalidation and naming things”. Phil Lewis Karlton
  • 18.
    ÖNBELLEKLEME SİSTEMLERİ Kİmlİk doğrulama ÖNBELLEKLEMEservİsLERİNDE kİmlİk DOĞRULAMA OLMAYABİLİR ( BKZ. MEMCACHED ). Verİ kontrolü Belleklenecek verİnİn kontrolü sağlanmalı, belleklenen değer İstenİldİğİ zaman yenİlenebİlmelİ. Depolama aracı olarak kullanırken dİkkat edıİlmelİ ÖNBELLEKLEME SİSTEMLERİNDE tutulan verİlerİn bİr belleklenme sÜresİ OLABİLİR, Bu süre sonunda verİler sİlİnEBİLİR.
  • 19.
    memcacheD 11211 MemcacheD nedİr ? MemcacheD, verİtabanı yükünü hafİfleterek, dİnamİk web uygulamalarınıN hızlandırılmasını amaçlayan, açık kaynak olarak gelİştİrİlen, dağıtık Mİmarİye destek veren bİr bellekleme sİstemİdİr. Alternatİfler Apc REDIS Membase HazelCast Memcachedb xcache
  • 20.
    arama motorları ARAMA MOTORLARI BİR BİLGİSAYAR SİSTEMİ ÜZERİNDE DEPOLANAN BİLGİLERİ BULMAYA YARDIMCI OLMAK İÇİN TASARLANMIŞ SİSTEMLERDİR. TEMEL AMAÇ VERİTABANINI GEREKSİZ VE YÜKLÜ SORGULARDAN KURTARMAKTIR. NEDEN ? Alternatİfler ÇÜNKÜ VERİTABANINDA ARAMa MALİYETLİ VE SORUNLU BİR İŞTİR. SOLR LUCENE SPHINX ELASTIC SEARCH
  • 21.
  • 22.
    SPHINX Indexer, searchd SPHINX AÇIK KAYNAK OLARAK C++ İLE GELİŞTİRİLMİŞ BİR ARAMA MOTORUDUR. 2001 yılında başlamış bİR PROJEDİR. KİMLER KULLANIYOR ? Netlog, Craıgslıst, MozILLA, DAILY MOTION, META CAFE, CEVREMDENEVAR :)
  • 23.
    SPHINX Indexer, searchd KONFİGÜRASYON SPHINX KONFİGÜRASYON DOSYASI /etc/sphinxsearch/sphinxsearch.conf 4 FARKLI BÖLÜMDEN OLUŞUR. 1. source: VERİ KAYNAĞININ TANIMLANDIĞI BÖLÜM 2. index: VERİ İÇİN İNDEKSLEME AYARLARININ BULUNDUĞU BÖLÜM 3. indexer: İNDEKSLEYİCİ AYARLARI 4. searchd: ARAMA SUNUCUSU AYARLARI
  • 24.
    SPHINX Indexer, searchd Source source geo { type = mysql sql_host = 127.0.0.1 sql_user = root sql_pass = root sql_db = veritabani_adi sql_port = 3306 sql_query_pre = set names utf8 sql_query_pre = set session query_cache_type=OFF sql_query = SELECT L . *, RADIANS( L.locationLng ) AS longitude, RADIANS( L.locationLat ) AS latitude,GROUP_CONCAT(T.tagName) AS tagLabels FROM location L LEFT JOIN locationTagRelation LTR ON LTR.locationId=L.locationId LEFT JOIN tag T ON T.tagId=LTR.tagId WHERE locationStatus='active' GROUP BY (L.locationId) sql_attr_float = longitude sql_attr_float = latitude sql_attr_uint = locationtype sql_attr_multi = uint tagid FROM query; SELECT locationId,tagId FROM locationTagRelation }
  • 25.
    SPHINX Indexer, searchd INDEX index geo { source = geo path = /etc/sphinxsearch/data/geo/geo docinfo = extern mlock = 0 min_word_len = 1 charset_type = utf-8 } INDEXER index geo { mem_limit = 256M }
  • 26.
    SPHINX Indexer, searchd SEARCHD searchd { listen = 127.0.0.1 Port = 3312 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 client_timeout = 300 max_children = 30 pid_file = /var/run/searchd.pid max_matches = 1000 preopen_indexes = 0 max_packet_size = 8M max_filters = 256 max_filter_values = 4096 }
  • 27.
    SPHINX Indexer, searchd İNDEKSLEME VE ARAMA İŞLEMİ
  • 28.
    MESAJ KUYRUK SİSTEMLERİ MESAJ KUYRUK SİSTEMLERİ ASENKRON İŞLEMLERİ SIRAYA KOYARAK ZAMANI GELDİĞİNDE BUNLARI İŞLEYEBİLEN SİSTEMLERDİR. 2004 yılında başlayan ve 2006 yılında olgunlaşan açık standartlı AMQP çözümü İle "mesaj kuyruğu" çözümlerİ bİr standart İle açık hale geldİ. NEDEN ? Alternatİfler VERİTABANLARINDA KUYRUK İMPLEMENTASYONU GENELDE YOKTUR. Apache Qpid BU TARZ İŞLEMLER İÇİN VERİTABANINA ÇOK FAZLA SAYIDA SORGU GİDEBİLİR. JORAM RabbitMQ Red Hat Enterprise MRG StormMQ http://www.kodaman.org/yazi/mesaj-kuyrugu-ve-rabbitmq actıvemq
  • 29.
  • 30.
    MESAJ KUYRUK SİSTEMLERİ ANTI-PATTERN VERİTABANININKUYRUK YAPiSI OLARAK KULLANILMASI BİR 'ANTIPATTERN' DİR. NEDEN ? 1. SİSTEMİN AKIŞI, KUYRUKLANMIŞ İŞLEMLERİN SONUÇLARINDAN ETKİLENİR. 2. SÜREKLİ OLUŞAN INSERT DELETE UPDATE SORGULARI YÜZÜNDEN VERİTABANINDA 'BOTTLENECK' OLUŞUR. 3. VERİTABANI ÜZERİNDE KUYRUK YAPISI KURMAK İSTERSENİZ BUNUN İÇİN BİR KUYRUK İMPLEMENTASYONU OLUŞTURMANIZ GEREKEBİLİR. TEHLİKE ! ANTİPATTERNLER İLK UYGULANDIĞINDA HERŞEY YOLUNDA VE DOĞRU GİDİYORMUŞ GİBİ GÖZÜKSE DE SİSTEMİNİZ BÜYÜDÜKÇE DURUMU İÇİNDEN ÇIKILMAZ BİR HALE GETİRİRLER.
  • 31.
  • 32.
    EMAIL: mustafa.ileri@sonsuzdongu.com TWITTER: https://twitter.com/mustafaileri LINKEDIN: MUSTAFA İLERİ http://www.linkedin.com/pub/mustafa- Software Developer ileri/33/727/a27 19 MAYIS M. NİHAL S. NO:5 DEVECİOĞLU APT. DAİRE:3 BLOG: ERENKÖY – KADIKÖY / İSTANBUL http://blog.mustafaileri.com http://blog.sonsuzdongu.com