Elasticsearch gerçek zamanlı olarak çalışabilen bir arama motoru. Index’lediğiniz veri üzerinden çok hızlı bir şekilde arama ve filtreleme yapma imkanı sunuyor. İstenilen arama ve filtreleme sonuçlarına ulaşabilmek için öncelikle verinin doğru bir şekilde Elasticsearch’e tanıtılması gerekiyor. Bunu da index oluştururken belirttiğimiz mapping ayarıyla yapıyoruz. Mapping bize; verinin yapısı, türü, index’lenirken ve aranırken hangi analyzer’ların kullanılacağı gibi bir çok tanım yapma imkanı sunuyor.
PHP ile RabbitMQ Kullanımı
RabbitMQ popüler bir mesaj kuyruğu sistemidir. Mesaj kuyruğu yazılımlarının genel çalışma şekli şöyledir; yapılacak işler bir kuyruğa aktarılır ve işi yapacak olan worker’lar sırasıyla kuyruktan iş alıp yaparlar. Uygulama akışı sırasında kullanıcının, tamamlanmasını beklemesine gerek olmayan işleri arka planda gerçekleştirmek ya da bir işi birden fazla worker’a dağıtarak daha kısa sürede tamamlamak gibi işler için kullanılır. Mainstream bir örnek vermek gerekirse; başarılı bir kayıt işleminden sonra kullanıcıya hoşgeldiniz mail’i gönderileceğini varsayalım. Mail gönderme işlemi, bir mail sunucuna bağlanma ya da bir web servis kullanma süreçlerinden geçeceği için zaman alacaktır fakat kullanıcının başarılı kayıt sayfasını görmek için mail gönderiminin tamamlanmasını beklemesine gerek yoktur. O nedenle mail gönderme işlemi bir mesaj kuyruk sistemine yazılır ve bir consumer tarafından gönderim arka planda gerçekleşir.
Continue reading PHP ile RabbitMQ Kullanımı
Cache Sistemlerinde “Dog-pile Effect” den Korunmak
Standart bir web uygulamasında, cache araçlarını kullanmak basit görünebilir. Bir değerin cache’de var olup olmadğı kontrol edilir, varsa değer alınır, yoksa yeniden üretilip daha sonraki isteklere sunulmak üzere cache’e yazılır. Fakat yüksek trafiğe sahip bir uygulamada, cache süresi bittiğinde aynı anda gelen istekler, cache’lenmiş içeriği eş zamanlı tazelemeye çalışabilirler. Bu da kullandığınız veri kaynağına (veritabanı, web servis vb..) extra yük getirecektir.
Varnish Notları
Varnish web uygulamalarını hızlandırmaya yarayan faydalı bir araç. Web sunucusunun önünde yer alır ve içeriği cache’ler. Böylece aynı içeriği ulaşmak isteyen kullanıcılar için, uygulama, aynı output’u üretmek için tekrar tekrar uğraşmaz. Belirlenen cache süresi içinde sayfayı ziyaret eden kullanıcılar web sunucusuna uğramadan, istedikleri içeriği Varnish’den hızlıca alırlar. Cache süresi bitiminde ise kullanıcılardan bir tanesi tarafından oluşturulan içerik tekrar cache’lenir, bu sırada diğer ziyaretçiler içeriğin oluşmasını bekler, bu sayede race condition durumu engellenir.
Varnish ayarları VCL (Varnish Configuration Language) ile yapılır. Aşağıda bir isteğin hangi VCL methotlarına, hangi sırayla, hangi koşulda uğradığını gösteren bir akış şeması mevcut:
Continue reading Varnish Notları
Node.js + Redis Pub/Sub Örneği
Örnek uygulamada, iki üye arasındaki mesajlaşma sayfasında, bir üye diğerine mesaj yazarken karşı tarafa “X mesaj yazıyor..” şeklinde anlık durum bilgisi vereceğiz.
Continue reading Node.js + Redis Pub/Sub Örneği