BirazBilgi

BirazBilgi.Com

Bilim Teknoloji Yaşam ve İnternet Konulu Makaleler


Google Başarısının Sırrı Nedir? Sistem Altyapısı Detayları
 Kategori: Teknoloji ve Internet

1996'da Kaliforniya Stanford Üniversitesinde doktora öğrencileri Larry Page ve Sergey Brin'in bir araştırma projesi olarak başlayan, bugün dünyanın en değerli markalarından olan çok uluslu Amerikan şirketi Google; sahip olduğu sunucu sistemi, yazılım sistemi ve veritabanı olarak nasıl bir mimari kullanıyor? Saniyeler içinde bu kadar veriyi nasıl analiz edip karşımıza sonuçlar çıkartıyor? bu altyapı hakkında bilgiler vereceğiz.

Öncelikle Google'in dünya üzerinde farklı lokasyonlara dağıtılmış resmi rakamları açıklamasalar da yaklaşık 1.000.000 bilgisayara sahip olduğunu varsayabiliriz. Bu bilgisayarın hepsini bir süper bilgisayar mantığında algılamamak lazım çoğu bilgisayar standart seviye sunuculardır işin buradaki sırrı server cluster yapısı yani sunucu kümeleme sistemi... Google, Linux sistemi üzerinde kendine özgü geliştirmeler yaparak bu kümele sistemi daha başarılı, daha hızlı ve ihtiyacına uygun hale getirdi. Özellikle basit sunucuları güçlü biçimde çalıştırabilmek üzere Linux sistemini uyarladı böylece düşük maliyetlerle yüksek iş yapan bir datacenter kurabildi. Google'nin bu kadar çok sunucuya sahip olması, arama motoru dışında sahip olduğu diğer servislerin ihtiyacı sebebiyledir.

Kümeleme simetrik yapıda uygulandığında özellikle internet sunucularında performans, verimlilik, ölçülebilirlik sağlanır. Asimetrik yapıda uygulanan kümelemede de çöken sunucu yerine devreye giren yedekli bir sistem sağlanır. Sunucu kümeleme işlemi veri kaybını, ağ bağlantısı kesintileri veya işlemlerden meydana gelen hataların önüne geçmek için tercih edilebilir. Kümeleme sistemi hem Windows sunucu sistemlerinde hemde Linux sistemlerinde kullanılmak üzere ilgili şirketler tarafından üretilmiş protokolleri bulunmaktadır. İşte hiç kesilmeyen bir hizmetin, tek bir bilgisayar gibi çalışan büyük bir depolamanın yönetimi bu şekildedir.

Google programlama işi için Python, Java ve C programlama dilini kullanıyor diyebiliriz, en büyük ağırlık Python dilinde zira bu programlama dilinin yazarı Guido Von Rossum'un 2005 yılından bu yana Google'da çalıştığı söylentiler arasındadır. Python ile sistem programlama, kullanıcı ara birimi programlama, ağ programlama, uygulama ve veritabanı yazılımı programlama gibi birçok alanda yazılım geliştirebilir. Girintilere dayalı basit söz dizimi ile öğrenilmesini ve uygulaması kolay bir dildir. Bu sayede söz diziminin ayrıntıları ile vakit yitirmeden programlama yapılmaya başlanabilen bir dil olma özelliği en büyük avantajlı yönü olarak önem kazanmaktadır. Hemen hemen her türlü platformda çalışabilmektedir Unix , Linux, Mac, Windows, Amiga, Symbian gibi.

Google veritabanı yapısında BigTable Berkeley DB kullanıldığını düşünüyoruz, Berkeley DB, yüksek performanslı, gömülü bir veritabanı kütüphanesidir. 1990lı yılların başlarında 4.4BSD geliştiriliyorken Unix'teki ndbm aracının yerini almak üzere geliştirilmiştir ve 1992de Berkeley DB 1.85 sürümü olarak 4.4BSD dağıtımına dahil edilmiştir. Veritabanı, sıralı anahtarları verileri tutar ve bir anahtar için birden fazla veriyi destekler, aynı anda çalışan binlerce iş parçacığının 256 terabayt büyüklüğünde bir veritabanına erişebilmesini mümkün kılar. Saniyede milyonlarca okuma/yazma isini yapabilir. BigTable Berkeley DB, Google File System üstünde çalışan dağınık yapılı hash mekanızmasıdır bildiğimiz veritabanlarına benzemez yani Join yada SQL dilindeki sorguları desteklemez. Anahtarlar ile kontrol altında tutulabilen dataya erişim için sorgulama mekanizması saglar. Burada veritabanı içinde farklı sunucu gruplarına yük dağılımı yapılarak arama işi dağıtılmış ve veritabanının büyümesi daha stabil hale getirilmiştir böylece en alt seviye olan server grubu erişim görevlerini ram üzerinde önbellekleyebilir ve erişim hızı maksimum seviyeye çıkarılabilir. Berkeley DB şu anda Oracle tarafından satın alınmıştır.

Google tarafında; sunucu, işletim sistemi ve database yapısı hakkında mevcut olduğunu düşündüğümüz sistem hakkında bilgiler verdik şimdi işin hızlı sonuç mimarisi için neler yapılıyor buna değinelim. Özelleştirilmiş bir linux ile hız performans ve güvenlik elde edildi. Arama sonuçlarımızda bize bir milyon sonuç bulundu dese de karşımıza en fazla elli sorgu sonucu gelir ve siz sayfaları dolaştıkça diğer sorgular çalışıp verileri gelmiş olur buna işin indexleme boyutundadır. MapReduce programlama modeli ile büyük boyutlarda datalar oluşturulur ve bu datalar işlenir. Belirlenen şemaya islenen anahtar çiftleri daha alt anahtar çiftlerini kendi içinde barındırır. (merge fonksiyonuyla birden çok alt anahtarı tek bir alt anahtarda toplar) Bu şekilde yazılan data parçacıkları düşük maliyetli serverlardan oluşan büyük bir kümeleme sistemi üzerinde çalıştırılır. Yani MapReduce database yapıları ölçeklenemez yada ölçeklenebilmek için çok ciddi maliyetlerin ortaya çıktığı durumlarda bu iş için devreye giriyor, mevcut kümeleme sistemi ile bu yükü ölçeklenebilir hale getiriyor. Google INVERTED INDEX dediğimiz yapıyı kullanır, hızlı işlem için bir ters indeks (inverted index) kullanır. Verileri aranabilir yapmak için kullandığı bir veri yapısıdır bu işlemde dokümanın içerdiği verilerden tokenlar ve tekil terimler ortaya çıkarılır.

Bir arama motorunun en başında kurguladığı doğru bir altyapı seçimi ile neden muazzam bir düzeyde büyümesinin açık bir yapısını görüyoruz.

SiteSahibi1 Aralık 2016, PerşembeOkunma: 927

 

Makaleye Ait Yorumlar

Okuruz
13 Şubat 2017, Pazartesi

Yandexten de ayni performansi beklemekteyim


nadide
6 Şubat 2017, Pazartesi

Güzel yazı olmuş ellerinize emeğinize sağlık takibe aldım başarılarınızın devnı dilerim..amı


Makaleye Yorum Yaz

Adınız Soyadınız
E-Posta Adresiniz
Web Adresiniz
Yorumunuz
Güvenlik Kodu
Resmi Değiştir
Bunları Biliyormuydunuz?
Bir kilo limonda, bir kilo çilekten daha fazla şeker olduğunu, biliyor muydunuz?
Oto Yedek Parça Firmaları
Kriweb Hosting Service

 


Tüm Hakları Saklıdır © 2017 BirazBilgi.Com | Hosting Sponsoru :Kriweb Hosting Service | BirazBilgi Blog v3.0 XHTML 1.0 ve CSS3