# Xgrid
Xgrid, Apple'in Gelişmiş Hesaplama Grubu alt bölümü tarafından geliştirilen ve bilgisayar ağına bağlı bilgisayarların tek bir görev için katkıda bulunmasına izin veren tescilli bir program ve dağıtık hesaplama işlem protokolüdür.
Ağ yöneticilerine, mandelbrot kümesi gibi daha küçük operasyonlara kolayca bölünebilen hesaplamalar için daha önce kullanılmayan hesaplama gücünden istifade etmelerini sağlayan bir bilgi işlem kümesi oluşturma yöntemi sunar. Xgrid istemcisi, Mac OS X Tiger (10.4)'ten Mac OS X Lion (10.7)'ye çalışan tüm bilgisayarlara önceden yüklendiğinden, bir Xgrid kümesinin kurulumu maliyetin hemen yanında yapılabilir.
Xgrid istemcisi OS X Mountain Lion (10.8)'e dahil değildi. Xgrid işlemcisinin iş planlayıcısı olan Xgrid denetleyicisi, macOS Server'e dahildir ve Apple'dan ücretsiz indirilebilir. Apple, komut satırı iş kontrol mekanizmasını minimalist olarak korurken etrafında inşa edilmiş daha karmaşık araçlar geliştirmek için bir API sağladı.
Program, diğer düğümlerle iletişim kurmak için bir şema üzerine katmanlı kendi iletişim protokolünü kullanmaktadır. Bu iletişim protokolü, BEEP altyapısı, bir ağ uygulama protokol çerçevesi ile arabirim oluşturur. Xgrid sistemi tarafından keşfedilen, yani Mac OS X'in Xgrid hizmetini etkinleştirmiş bilgisayarlar, görevleri işlemek için kullanılabilir bilgisayarların listesine otomatik olarak eklenir.
Başlatan bilgisayar, kontrolöre işlemek için komple talimatları veya işi gönderdiğinde, kontrolör görevi, görev olarak bilinen bu küçük talimat paketlerine böler. Xgrid sisteminin tasarımı, bu küçük paketlerin ağdaki tüm Xgrid özellikli bilgisayarlara aktarılmasından oluşur. Bu bilgisayarlar veya düğümler, denetleyici tarafından sağlanan yönergeleri yerine getirip sonuçları döndürür. Kontrolör, bireysel görev sonuçlarını bütün iş sonuçlarına birleştirir ve bunları başlatan bilgisayara döndürür.
Apple, XGFrid'in tasarımını, NeXT'nin OpenStep işletim sistemi uygulama programlama arabirimi (API) ile dağıtılan Zilla programında modelledi. Şirket ayrıca Xgrid'in Mac OS X Server sürümünü bir GUI kontrol paneli ve tam özellik seti olarak sunarken yalnızca komut satırı işlevleri ve az esneklikle Mac OS X'in istemci sürümünü sağlamayı seçti.


## Tarihi.
Xgrid'in asıl konsepti, 1980'lerin sonunda NeXT tarafından yaratılmış OPENSTEP işletim sisteminde bulunan Zilla.app'a kadar geriye dönülebilir. Zilla, son kullanıcı işletim sisteminde yayınlanan ve boşta ekran koruyucu motifini kullanan ilk dağıtılmış bilgi işlem programıdır. Bu, SETI@home ve Distributed.net gibi yaygın olarak kullanılan projelerde bulunmasından bu yana tasarım özelliği idi. Zilla, kullanımı kolay ve iyi tasarım için 1991'de ulusal Computerworld Smithsonian Ödülü'nü (Science Category) kazandı. Apple, Zilla'yı 1997'de NeXT geri kalanıyla birlikte satın aldı ve daha sonra Zilla'yı Xgrid için ilham kaynağı olarak kullandı. Xgrid'in ilk beta sürümü Ocak 2004'te çıktı.
Birçok organizasyon büyük uluslararası hesaplama ağlarında Xgrid'i kabul etmiştir. Xgrid kümesine bir örnek, MacResearch'ın OpenMacGrid'idir; burada, bilim adamları, araştırmaları ile ilgili görevleri yerine getirmek için büyük miktarda işleme gücüne erişim talep edebilir. Bir diğeri de artık yok olan Xgrid @ Stanford projesi idi, Stanford Üniversitesi kampüsünde ve dünyanın çeşitli yerlerindeki bilgisayarları kullanarak biyokimyasal araştırma yapıyordu. Apple Xgrid'i OS X v10.8 (Mountain Lion) ile birlikte Podcast Producer gibi bağımlı servislerle birlikte kullanmayı bıraktı.


## Arayüzey.
Xgrid'e komut satırından erişmek mümkünken de, Xgrid grafik kullanıcı arayüzü, Mac OS X Server ile birlikte verilen ve Mart 2009'dan itibaren çevrimiçi olarak sunulan bir program Xgrid sistemini yönetmenin çok daha etkili bir yoludur. Başlangıçta Xgrid aracısı tüm Mac OS X sürüm 10.4 kurulumlarına dahil edilmiştir, ancak GUI Mac OS X Server kullanıcıları için ayrılmıştır. Bu karar, bilgisayar camiasının platformu benimseme çabalarını sınırladı. Sonunda, Apple, Mac OS X Sunucu Yönetim Araçları'nı, Mac OS X Sunucusu ile birlikte verilen Xgrid yönetim uygulamasını kamuya açıkladı.
Standart (sunucu dışı) Mac OS X dağıtımında grafik denetleyici arabiriminin olmamasına rağmen, "xgridctl" ve "xgrid" komut satırı araçları yoluyla bir Xgrid denetleyicisi ayarlamak mümkündür. Xgrid kontrolörü arka plan programı çalıştırıldıktan sonra, ızgarayı Apple'ın Xgrid Yönetim Aracı ile idare etmek mümkündür. VisualHub gibi bazı uygulamalar, kullanıcı arabirimleri aracılığıyla Xgrid denetleyici özelliğini sağladı.


## Protokol.
Xgrid protokolü, ağdaki düğümlerle iletişim kurmak için BEEP ağ çerçevesini kullanır. Sistemin altyapısı, protokol üzerinden iletişim kuran üç tür bilgisayar içerir. Birincisi, hesaplamayı ileten müşteridir. Sonraki hesaplamayı başlatan ve ayıran denetleyicidir. Sonunda, aracılar hesaplamanın tahsis edilen kısmını işleme koyarlar.
Bir bilgisayar, bu bileşenlerin üçünün bir veya tümü gibi aynı anda hareket edebilir. Xgrid protokolü, bilgisayarların iletişim kurmaları için temel altyapıyı sağlar, ancak belirtilen hesaplamanın işlenmesine dahil değildir. Xgrid, bazen paralel görevler olarak adlandırılan küçük görevlere kolaylıkla ayrılabilen zaman alıcı hesaplamaları hedef almaktadır. Buna Monte Carlo benzetimi, 3D rendering ve Mandelbrot haritaları da dahildir.
Xgrid protokolü içinde, aynı küme üzerindeki diğer bilgisayarlara üç tür ileti iletilebilir: istekler, bildirimler ve yanıtlar. İsteklerin yanıtla birlikte alıcı tarafından cevaplandırılması gerekir, bildirimler bir yanıt gerektirmez ve yanıtlar gönderilen iletilere verilen yanıtlardır. Adlarına, türüne (istek / bildirim / cevap) ve içeriklerine göre tanımlanırlar. Her mesaj bir BEEP mesajı (BEEP MSG) içinde kapsüllenir ve boş bir cevapla (RPY) alındığında onaylanır.
Xgrid, BEEP mesaj / cevap altyapısını kullanmaz. Bir yanıt gerektiren herhangi bir alınan mesaj sadece cevabı içeren bağımsız bir BEEP mesajı üretir. Xgrid mesajları, BEEP ağı üzerinden gönderilmeden önce XML'ye dönüştürülen anahtar / değer çifti sözlükleri olarak kodlanır.


## Mimari.
Xgrid sisteminin mimarisi iş tabanlı bir sistem etrafında tasarlanmıştır; kontrol birimi aracı işleri gönderir ve aracılar yanıtları döndürür. Denetleyicinin bir Xgrid sisteminde gerçek hesaplaması bir iş olarak bilinir. İş, girdi parametreleri, veri dosyaları, dizinler, yürütülebilir (executable) veya kabuk komut dosyaları gibi görevin başarıyla tamamlanması için gereken tüm dosyaları içerir. Bir Xgrid işinde bulunan dosyalar aynı anda ya da eşzamansız olarak yürütülmelidir. İş tamamlandıktan sonra, denetleyici, müşteriye görevi tamamlamak veya başarısızlığını e-posta gibi bildirmek üzere ayarlanabilir. İstemci, görevler çalışırken ağdan ayrılabilir. Ayrıca, bireysel görevlerin devam eden ilerlemelerini takip edemese de, denetleyiciyi sorgulayarak talep üzerine iş durumunu izleyebilir.
Denetçi, bir Xgrid'in doğru işlevinin merkezinde yer alır, çünkü bu düğüm ajanlar üzerindeki görevlerin dağıtımından, denetiminden ve koordinasyonundan sorumludur. Denetleyici üzerinde çalışan program, talep üzerine bireysel ajan arızalarını işlemek için görev atayabilir ve yeniden atayabilir. Bir aracıya atanan görev sayısı iki faktöre bağlıdır: bir Xgrid üzerindeki aracı sayısı ve her düğümdeki işlemci sayısı. Bir Xgrid üzerindeki temsilci sayısı, denetleyicinin görevleri nasıl atayacağını belirler. Görevler, çok sayıda aracı için eşzamanlı olarak atanabilir veya az sayıda aracı için kuyruğa alınabilir. Bir Xgrid'de birden fazla işlemci bulunan bir düğüm tespit edildiğinde, denetleyici işlemci başına bir görev atayabilir; bu yalnızca ağdaki aracıların sayısı denetleyicinin tamamlaması gereken görev sayısından düşükse oluşur.
Xgrid, HTTP ile karşılaştırılabilir bir IETF standardı olan Blok Genişletilebilir Değişim Protokolü (BEEP) üzerine, ancak iki-yönlü çoklanmış iletişimi, örneğin peer-to-peer ağlarda bulunanlar üzerine odaklanarak katlanır. BEEP, birden fazla aracı arasında tek bir ağ veya internet bağlantısı üzerinden iletişim kurmak için profiller tanımlamak için XML kullanır.