Elasticsearch Serisi : 02 Mimari Özellikleri, Sharding, Failovering ve Scaling

By Burak Tungut - 10.12.2015 - Kategori DevOps

Herkese selam!

Blogumu takip ediyorsanız bir önceki makalem Elasticsearch Serisi : 01 Ubuntu Server'a Elasticsearch Kurulumu idi. Eğer seriye yeni başlayacaksanız ve hiç elasticsearch kurulumu gerçekleştirmediyseniz bir göz atmanızda fayda var derim.

Bugün ise aşağıda göreceğiniz ve elasticsearch'de bilmemiz gereken terimlere değineceğiz. Son iki maddemiz olan shards ve replicas'lara biraz ayrıcalık tanıyacağız. Çünkü makalenin odak noktası olarak onları belirledim. Sonraki bölümlerde detaylarıyla diğer maddelerede değineceğiz.

  1. Node
  2. Cluster
  3. Index
  4. Type
  5. Mapping
  6. Document
  7. Shard ve Replica

Bazı yabancı kaynakları incelerseniz node'lardan önce cluster'ları incelediklerini görebilirsiniz. Bu gerçekten garibime gidiyor. Neden mi? Aşağıda değindim. Haydi başlayalım.

Node

Elasticsearch node ismi

Bir server üzerine kurduğumuz ve sonraki makalelerimizde göreceğimiz document'larımızı index'leyip, üzerlerinde query'ler çalıştıracağımız tek bir elasticsearch instance'ına verdiğimiz isimdir. Buna örnek olarak bir önceki makalemizde ubuntu server üzerine kurduğumuz elasticsearch instance'ını verebiliriz. Kendileri bir node olurlar. 

Kurduğumuz bir node özellikle müdahele etmediysek random bir isim alır. Elasticsearch geliştiricileri random bir string vermektense Marvel karakterlerinden bir tanesini random seçerek atanmasını sağlamışlardır. Hatta gelin bir önceki makalede kurduğumuz elasticsearch node'unun ismine bir bakalım.

Bunun için /_nodes endpoint'ine HTTP GET request atmamız yeterli olacaktır. Sense yardımıyla bir request atalım ve node'umuza Marvel karakterlerinden atanan ismi görelim.

Beklentim bir Hulk idi fakat ilk defa duyduğum Balthakk ismi ile karşılaştım smiley

Eğer sonraki alt konuda inceleyeceğimiz gibi bir cluster'ımız varsa ve çok fazla node üzerinde çalışıyorsak yönetilebilirlik açısından default isimler yerine bizim vereceğimiz isimleri tercih etmek durumunda kalabiliiz. Bir node'un ismini sadece bir HTTP POST ile sonradan değiştirebiliyoruz. REST API'lar üzerine kurulu olmasının bir faydası daha! 

Dikkatinizi birde resimdeki ilk key'lerden cluster_name'e çekmek isterim. Bu da node'un dahil edileceği cluster ismimiz. Eğer aynı network'de birden fazla cluster'ımızda varsa default cluster ismi yerine yine kendimiz bir cluster ismi vermek durumunda kalabiliriz diyelim ve şimdi cluster ile konumuza devam edelim.

Devamı

Elasticsearch Serisi : 01 Ubuntu Server'a Elasticsearch Kurulumu

By Burak TUNGUT - 30.11.2015 - 4 Yorum - Kategori DevOps

Herkese uzun bir aradan sonra tekrar merhaba laugh

Şöyle bir baktımda son makalemden bu yana tam 2 yıl geçmiş. Şu aralar yeni makaleler yazmak, sahenelere geri dönmek aklımdaydı. Seçtiğim günün bir önceki makalemi yazdığım günden tam 2 sene sonra olması cidden büyük bir tesadüf oldu. 2 sene boyunca neler yaptığımı, nerelerde olduğumu ve hayatımda ne gibi değişiklikler olduğunuda bir makale ile kısaca ele alacağım. Belki merak edenler olur laugh

Bu makale aslında şu aralar yoğunlaştığım elasticsearch hakkında başlayacağım makale serisine bir giriş yapmış olacağız. İşi en baştan almak gerekir diye düşündüm. Bu nedenle bir Ubuntu server üzerine SSH server ve elasticsearch engine'i kuracağız.

Makalemde elasticsearch'in ne olduğu ile ilgili detaylı bilgiler vermeyeceğim. Hiç duymamış olan arkadaşlar için küçük bir araştırma yapmalarını öneririm. Aynı zamanda makale de ubuntu server'ın bir VM üzerine nasıl kurulacağınıda anlatmayacağım. Bunlar için step-by-step bir çok resimli makale bulabilirsiniz. Ama küçük öneriler vermek gerekirse aşağıdakileri kullandım;

  1. Oracle VM VirtualBox 5
  2. Ubuntu Server 14.04.3
  3. Putty (SSH Client için)
  4. Elasticsearch 1.7.4

Şu anda her ne kadar elasticsearch'in major 2 version ve bir iki tane de minör version'ı release olmuş olsada çok fazla breaking changes bulunduğu için 1.7.4'yi kurdum. Siz isterseniz herhangi major 2 version'unda kurabilirsiniz.

Ubuntu Server Üzerine SSH Server ve JDK Kurulumu

Benim gibi clean install'ları tercih edenlerden misiniz? Öyleyse kurduğunuz ubuntu server üzerinde SSH server bulunmamakta. İşe onu kurmak ile başlayalım. Console'dan sudo-i komutu ile super user'a geçiş yapalım. İsimlendirmeler sizcede çok güzel değil mi ? Kendimi şu anda elasticsearch kurulumu yapmak üzere olan neredeyse hiç linux kullanmamış süper bir kullanıcı olarak hissediyorum laugh

Super user'a geçiş

Şimdi SSH server kurulumunu yapalım. Bunun için console'dan apt-get install openssh-server komutunu çalıştıralım. Bellki bir kaç işlemden sonra diskte kullanılacak alan için bizden izin istenecektir. Buna Y ile cevap verelim.

SSH server kurulumu

Devamı

C# Data Caching ve Uygulama Senaryosu

By Burak TUNGUT - 1.12.2013 - 11 Yorum - Kategori C#

Proje KatmanlarıUzun, hatta baya bir uzun aradan sonra herkese merhabalar :)

Haziran 2013'de yazdığım son makaleden sonra yaklaşık 6 ay geçmiş. Açıkçası nasıl geçti bu kadar zaman anlamış değilim. Neyse. Klişe lafları bırakıp işimize bakalım :)

Bu makale de Data Caching konusunu ele alıyor olacağız. Makaleyi yazmadan önce anlaşılır ve uyarlanabilir olması için daha önce bir kaç projede kullandığım yapı üzerinden ilerlemeye ve bunu bir diyagrama dökmeye karar verdim.

Açıkçası hayatımda ilk kez bir diyagram hazırladım (Yazılım Mühendisliği derslerinde ki Use-Case ve UML'leri saymazsak tabi ki :) ). 

Yapacağımız örnekte ki projeleri (katmanları) Presentation ve Infrastructure olmak üzere ikiye ayırdım.
Presentation kısmını 1 adet Asp.Net MVC projesi üstleniyor olacak. Bunun haricinde Business, Data-Access, Caching ve Core katmanları ise Infrastructure içerisinde olacaklar.

Senaryo ve Akış

Üretiminde içinde bulunduğunuz, senaryosu ürün bazlı olan bir Web projesi düşünün. Ya da kısa bir değiş ile bir E-Ticaret sitesi. Üst tarafta kategoriler, solda markalar ve layoutda listelenen ürünler. Şimdiye kadar ki kısımda pek sorunumuz yok.

Peki her bir ürüne tıkladığımızda (ürünün detay sayfasına gittiğimizde) arka tarafta bir SQL sorgusunun çalıştığını size hatırlatsam. Hatta bir de sitemizin popüler olduğunu söylesem. Bence daha fazla ileriye gitmeye gerek yok. Sorunların ortaya çıkması için yeterli neden saydım gibi :)

Devamı

Algoritma ve Programlama Mantığı Kitabım Satışa Sunuldu

By Burak TUNGUT - 18.7.2013 - 1 Yorum - Kategori Genel

2013 İlkbahar dönemi içerisinde yazıp bitirdiğim Algoritma ve Programlama Mantığı adlı kitabım geçen hafta ön satışa çıkmış idi. Bu hafta içerisinde ise baskısı sorunsuzca tamamlanan kitabım bir çok sitede satışa sunuldu.

Aşağıdaki linkler yardımıyla kitabımı ve videolu eğitim CD'sini satın alabilirsiniz;

 

                          

                              

            

 

Devamı

C# Castle Windsor ve IoC Container Kullanımı

By Burak TUNGUT - 13.6.2013 - Kategori C#

Herkese Merhabalar,

2. sınıfa veda ettik, güzel bir yaza girişte yaptık derken farkettim ki uzun süredir makaleleri aksattımsmiley Daha fazla arayı soğutmadan hemen bir makaleye giriş yapalım.
Bir önceki makalemde C# ile Dependency Injection ve Loosely Coupling konusuna değinmiştik.Inversion of Control Container Aslında makalenin sonunda bu konuya daha farklı bir bakış açısı ile devam edeceğimizden bahsetmiştim.

Öyle sanıyorum bir önceki makalemde verdiğim örnekten dolayı artık sıkı bağlı tiplerden ve bu formu sağlayacak kodlamalardan uzaklaşacağız. Zaten makalede verdiğimiz örneği, Dependency Injection'ın hakkını vererek tekrar revize etmiş idik.

IoC Container

Bu makale de ise olayı bir kademe daha ileriye taşıyacağız. Bir önceki makale de işi yürütecek ve bundan önce instance alma işlemini yapacak kısmı bir metotda yapıyorduk. Böyle bir yapıda ise, söz konusu tipe işimiz her düştüğünde bir instance daha alınacak ve aynı işlemler tekrarlanacak.
Oysaki IoC Container'lar sayesinde, instance işlemini bir kereliğe mahsus yaptırabilir ve tipi kullanacağımız her bir işlemde ise bir önceki instancenin kullanılmasını sağlayabiliriz.

Envarterlerin İndirilmesi

Şu anda yapacağımız işlemlere karar verdik. Sıra sorunumuzu çözecek babayiğit bir IoC kütüphanesi bulmakta. Aklıma ilk gelen Microsoft ürünü olan, Ninject ve Castle Projects adı altında geliştirilen Windsor kütüphanesi.

Bu makalemde Windsor kütüphanesini kullanıyor olacağız. Tabi ki kodlama kısmına geçmeden önce kütüphanemizin en son sürümünü buradan indirelim.
İndirdiğimiz dosya içerisinden Castle.Core ve Castle.Windsor kütüphanelerini projemize ekleyelim.

Mouse ve Base Tiplerimiz

Hatırlarsanız bir önceki makalede son olarak bir adet IMouse adında bir interfaceimiz ve bu interfaceyi implemente eden iki farklı mouse tipimiz mevcuttu. Toplam da bu 3 tipi yeni projemiz de yine kullanıyor olacağız. Bu nedenle aşağıdaki tipleri projemize dahil edelim.

interface IMouse
    {
        void Write();
    }

 

class LogitechMouse : IMouse
    {
        public void Write()
        {
            Console.WriteLine("Logitech Mouse Kullanıldı");
        }
    }

    class A4TechMouse : IMouse
    {
        public void Write()
        {
            Console.WriteLine("A4Tech Mouse Kullanıldı");
        }
    }

Devamı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Facebook
Son Yorumlar