Resim depolama ve işleme

Bir kaç yıl önce sadece en büyüklerin yaşadığı ölçek problemlerini artık herkes yaşıyor. Resim depolama ve işleme ise bunun en iyi örneklerinden biri.

Problem

  • Araç ya da yüz resimlerini çeken kameralar var.
    • Bunlar resimleri FTP ile gönderiyor.
  • Gelen resimler bir web uygulamasında gösteriliyor.
    • Resimler işlenerek küçük boyutlu halleri üretiliyor.
  • Geriye dönük OCR vb amaçlı toplu analizler gerekebilir.
  • Resimler 3 yıl boyunca kayıtlı durmalı.

problem

1) Mikro

İlk çözüm gayet standart. Web hosting işlerinde onlarca yıldır yapıldığı gibi FTP ve HTTP servisleri aynı sunucu üzerinde çalışabilir:

  1. Kameralar sunucuya FTP ile bağlanıp resimleri gönderir.
  2. FTP sunucu resimleri makinedeki diske kaydeder.
  3. HTTP sunucu diskteki resimleri olduğu gibi kullanır.
  4. Bir uygulama resimlerin farklı boyutlarını oluşturup aynı yere yazar.
  5. 3 yıl sonra resimlerin silinmesi için zaman ayarlı bir görev konur.
  6. Geriye dönük ne yapılmak istenirse yine bu makinede çalışabilir.

mikro

Hatta yüksek ihtimal diğer tüm gerekli uygulamalar da bu makine üzerinde çalıştırılır. Gayet basit ve temiz bir çözüm.

2) Küçük

Mikro ölçek çözümde ilk bariz problem, resimlerin tek bir yerde durmasından kaynaklı verilerin bozulması tehlikesi. Neyseki bu problem aynı sunucuda çalışacak donanım ya da yazılım tabanlı bir RAID sistemiyle kolaylıkla çözülür.

küçük

Bu sayede disklerin herhangi birinin bozulmasına karşı veriler korunmuş olur. Sistem tek bir makinede çalışarak hayatına devam edebilir.

3) Orta

Gerek aktif kamera sayısının artmasıyla, gerekse resimleri izleyecek istemcilerin sayısının artmasıyla bu iş bir süre sonra tek bir sunucunun halledemeyeceği bir noktaya gelir, birden fazla sunucu kullanma gereği oluşur. En kolay çözüm ise bu sistemin aynısından birkaç tane daha hazırlamak.

orta

Ancak bu durumda hem kameralar hem istemciler birbirlerinden ayrılmalı, kullanıcılar birden fazla sistemi aynı anda kullanabilmeli.

4) Büyük

Birbirinden ayrı ve sayıları her gün artan sistemler, hem kullanıcılar hem de yöneticiler açısından hızla içinden çıkılmaz bir karmaşaya dönüşür. Bu yüzden sistemlerin sayısının artırılması yerine tek bir sistemin ölçeklendirilmesi gerekir. Öncelikle sistemin FTP, HTTP, resim işleme vb fonksiyonları ayrılır. Ancak bu servislerin sayısını artırabilmek için:

  1. Hepsinin ortak kullanabileceği bir veri depolama ortamı
  2. Hepsine birden erişebilmek için bir yük dengeleyici

gerekir. Sonuç ölçeklenebilir mimari şu şekilde oluşur:

büyük

Yeni eklenen yük dengeleme ve depolama sistemlerinin ölçeklenmesi ise ayrıca incelenir.

Büyük ölçekli yük dengeleme

Nispeten daha da büyük sistemlerde ihtiyaç olan bir durum olarak yük dengeleyicilerin artırılarak ölçeklenmesi FTP, HTTP vb. erişim servislerinde yapılan işleme benzer: istenen sayıda yerleştirilip hepsi aynı şekilde çalıştırılabilir.

Dışarıdan erişimin birden fazla yük dengeleyiciye nasıl dağıtılacağı konusu ise genelde kapsam dışı kalır. Diğer bir deyişle sistem mimarlarına farklı yöntemlerle çözmeleri gereken bir problem daha!

yük dengeleyici

Büyük ölçekli veri depolama

Yukarıdaki şekilde gösterilen ve genelde NAS olarak adlandırılan veri depolama sistemleri herkesin bildiği gibi 2 ana bileşenden oluşur:

  1. Diskler
  2. Kontrol ya da denetim birimleri

Bir çok sistem disk sayısı ve dolayısıyla kapasite konusunda neredeyse sonsuz ölçeklenebilir olduğunu iddia eder. Teorik olarak istediğimiz kadar disk kutusu bağlayıp içlerine de istediğimiz kadar disk koyabiliriz. Pratikte bağlayıcı olan iki şey: fiziksel yer ve (varsa) lisanslar için gerekli bütçe.

Ancak kontrol/denetim birimleri için aynı şeyi söylemek pek de mümkün değil. Çoğu sistem en fazla 2 birim kullanabilir. Çoğunda da sadece biri aktif çalışır, diğeri yedek olarak bekler. Diğer bir deyişle makine artırarak ölçeklenme sağlanamaz. Kapasite arttıkça oluşan sistem tam bir darboğaza döner:

veri depolama

Ayrıca bu şekilde sadece bir yedekle tasarlanan sistemlerin arıza durumunda yedeklerine geçişi de çok problemsiz olmaz. Ama bunlar nedense sadece aktif sistem bozulduğunda belli olur, aslında olmamaları gerekir, şans eseri tam o zamana denk gelirler!

Bu tip büyük çözümlerin başka bir problemi de beraberlerinde gelen karmaşa. Tek bir sistemin farklı özelliklerini farklı sistemlerle ve farklı makinelerle halletmeye çalışmak ciddi bir zaman ve efor kaybına yol açar.

5) Sade

Nihai çözüm, her şeyin en baştan ölçeklenebilir şekilde tasarlandığı dağıtık bir sistemdir. Hem erişim tarafında hem depolama tarafında oluşan tüm problemler tek bir sade tasarımla ilk günden çözülmelidir.

Wise Cluster O³ :

  • Tamamen dağıtık bir sistemdir
  • Verileri farklı sunuculara ve disklere dağıtarak korur
  • Gerekli tüm dengeleme işlerini otomatik olarak yapar

wise cluster

Bunlara ek olarak birçok veri depolama sistemi gibi

  • FTP üzerinden veri alabilir
  • Aynı verileri HTTP üzerinden sunabilir
  • Resim işleme uygulamalarını çalıştırabilir
  • Veri eskitme işlerini yapabilir

Ancak hepsinden farklı olarak tüm bu fonksiyonların hem otomatik yedekli şekilde çalışmalarını, hem de kümedeki makine sayısıyla beraber ölçeklenmelerini sağlar. Böylece tek bir küme ve tek tip makine ile

  • Depolama ve kapasite
  • Yük dengeleme ve erişim
  • Ek veri uygulamaları

için tek çözüm olur.

Aklınıza takılan bir yer mi var?

Kendi işinizin çözümü için şimdi bize ulaşın!