Dağıtık Sistemler CS5001



Benzer belgeler
Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001

Alıştırmalar 2 - Dağıtık Sistemler. Alıştırma 2. Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Proxy (Vekil) Tasarım Şablonu KurumsalJava.com

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

Business Delegate Tasarım Şablonu KurumsalJava.com

Dağıtık Sistemler CS5001

BİL132 Bilgisayar Programlama II

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

BİL-141 Bilgisayar Programlama I (Java)

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

F.Ü. Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuvarı DENEY NO: 6 JAVA İLE DAĞITIK PROGRAMLAMA.

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

BİL-141 Bilgisayar Programlama I (Java)

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

TCP / IP NEDİR? TCP / IP SORUN ÇÖZME

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir.

Internet: Tarihçe ve Kavramlar

Uygulamaları ulut bilişime geçirmeden önce, firmanızın/şirketinizin ya da. işinizin gereksinimlerini göz önüne almanız gerekir. Aşağıda bulut bilişime

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

.com. Özcan Acar 2009 Kurumsal Java.com

ÖNDER BİLGİSAYAR KURSU. Sistem ve Ağ Uzmanlığı Eğitimi İçeriği

Java ile Tasarım Prensipleri ve Tasarım Örüntüleri

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Java Dersi. Altuğ Bilgin Altıntaş

BSM 532 KABLOSUZ AĞLARIN MODELLEMESİ VE ANALİZİ OPNET MODELER

PAKET TRANSFER SİSTEMİ

Elbistan Meslek Yüksek Okulu Güz Yarıyılı EKi Salı, Perşembe Öğr. Gör. Murat KEÇECĠOĞLU

Java Programlama Giriş

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

JAVA API v2.0 Belge sürümü: 2.0.2

Dağıtık Sistemler CS5001

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Basit bir web uygulaması

NETWORK BÖLÜM-5 OSI KATMANLARI. Öğr. Gör. MEHMET CAN HANAYLI CELAL BAYAR ÜNİVERSİTESİ AKHİSAR MESLEK YÜKSEKOKULU 1/27

İŞ PARÇACIKLARI (THREADS)

Görsel Programlama DERS 11. Görsel Programlama - Ders11/ 1

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

İş Parçacıkları Thread(s)

TCP/IP. TCP (Transmission Control Protocol) Paketlerin iletimi. IP (Internet Protocol) Paketlerin yönlendirmesi TCP / IP

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Progress Barlı, FTP Dosya Upload Appleti

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.

Web 2.0 Örnek Eğitim Notu

JAVA ile DAĞITIK PROGRAMLAMA

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

İlgili Konular: Object.equals(java.lang.Object), Object.hashCode(), rehash(), Collection, Map, HashMap, TreeMap, Serialized Form

Programlama Dillerinde Kullanılan Veri Tipleri

Java Programlamaya Giriş

4. Bölüm Programlamaya Giriş

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

// hataları işaret eden referans

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

PAKET TRANSFER SİSTEMİ

İleri Düzey Ağ Tabanlı Programlama (COMPE 505) Ders Detayları

Üst Düzey Programlama

Ders 8 Konu Özeti ve Problemler

YMT219 VERİ YAPILARI ÖDEV-1

HSancak Nesne Tabanlı Programlama I Ders Notları

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

Ayni sistem(host) üzerinde IPC. Ağ(network) aracılığı ile IPC

Bİ L 131 Hafta 2. 1) Bilgisayara Java SE Development Kit 7 kurulması

Sınav Dağılım & IMKB Endeks

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR


Bölüm 8 : PROTOKOLLER VE KATMANLI YAPI: OSI, TCP/IP REFERANS MODELLERİ.

İçerik. Temel Kavramlar. Yazılım Geliştirme Aşamaları. Problemi Anlama ve Çözümleme. Biçimsel Gösterim - 1. Nesneye Yönelik Programlama

Temel Kavramlar. BS-515 Nesneye Yönelik Programlama. Ders #1 (26 Ekim 2009)

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

Açık Kod VPN Çözümleri: OpenVPN. Huzeyfe ÖNAL

Görsel Programlama DERS 12. Görsel Programlama - Ders12/

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

Ders Kodu Yarıyıl T+U Saat Kredi AKTS. Programlama Dilleri

Transkript:

Dağıtık Sistemler CS5001 Th. Letschert Çeviri: Turgay Akbaş TH Mittelhessen Gießen University of Applied Sciences Dağıtık Programlar ve Uygulamalar I -

Dağıtık Programlar Dağıtık Algoritmalar ve Dağıtık Programlar Program Bir program biçimsel tanımlanmış notasyon = programlama dilindeki bir algoritma, dil işlemsel(uygulanabilir) Semantik(=Gerçekleştirim) olarak düşünülebilir. Dağıtık Program Bir dağıtık program bir programlama dilinde tanımlanmış dağıtık bir algoritmadır. Problem: Dağıtık algoritmaların formülize edilebileceği neredeyse hiçbir programlama dili yoktur. Dağıtık algoritmalar iki bileşenlden oluşur: Lokal süreçlerin tanımı genellikle işletim sisteminin iletişim operasyonlarını destekleyen programlama dilleriyle yapılır. Topoloji tanımı genellikle otonom işlemciler üzerinde gerçekleştirilen süreçlerin yapılandırma/kurulumlarıyla yapılır. Her ikiside genellikle dökümanların homojen olmayan bir koleksiyonunda(program kodu, yapılandırma dosyaları,...) tanımlanmışlardır. İkilem(Dilemma) Dağıtık programlar olarak çalıştırılabilen dağıtık algoritmalar gerçekte uygulamaya özel detaylardır, anlaşılmaları zor ve gerçekleştirimleri pahallıdır. Gerçekleştirilemeyen sahte kod(pseudocode) olarak ifade edilen dağıtık algoritmalar inandırıcı, ikna edici değillerdir. ( sıkıcı ). Seite 2

Dağıtık Programlar Dağıtık Algoritmadan Dağıtık Programa Dağıtık Algoritma Sahte Kod (Pseudocode) + Model (genellikle dolaylı) Dağıtık program Gerçekleştirim çeşitlilikleri: Programlama dilleri + desteklenen altyapı belirsiz, uygulama bağımlı Semantik ~> belirsiz Model Seite 3

Dağıtık Uygulamalar Dağıtık Programdan Dağıtık Uygulamaya Dağıtık Program iletişim kuran süreçler formunda bir çözüm Dağıtık Uygulama Uygulama odaklı probleme düzgün ayrılmış sistemler üzerine kurulmuş çözüm. Dağıtık Uygulama ve Dağıtık Program Şartlarla kesinlikle ayrılmış değillerdir ve genellikle eş anlamlı olarak kullanılabilirler Dağıtık uygulamalar altyapı yerine uygulamaya dayalıdır. Dağıtık uygulamalar aynı zamanda modüller/katmanlar olarak tanımlanabilen birçok dağıtık uygulamadan oluşabilirler. Seite 4

Dağıtık Uygulamalar Dağıtık Uygulamalar Tarihçe Neden Dağıtık Uygulamanın ihtiyacına göre sistem dağıtılmıştır. Dağıtıklıktan Kaynaklanan Problemler Eşleri bulma => Adlandırma Servisleri Sıralama(Marshalling): yapılandırılmış verileri dil ve platform sınırlarına göre taşıma(büyüklük, Veri bit sıralaması, Karmaşık Verilerin Yapıları) Çözümler 1 ~ 1980 Dağıtıklık Donanım(Hardware) üzerinde gerçekleştirildi. (Ağ aygıtları için sürücüler) ~ 1990 Dağıtıklık bir işletim sistemi platformu üzerinde gerçekleştirildi. (Ağ- / Soket-Programlama) Windows - 1992'den itibaren TCP/IP desteği ~ 2000 Soket programlamada programlama dili desteği (çok ince bir katmanda) Pionier Java ~ 1990 2000 Dağıtık İşletim Sistemleriyle ilgili yoğun araştırma Ağ düğümleri üzerinde katman olarak işletim sistemi, süreçlerin dağıtıklığı görünmez. Başarısız oldu. ~ 1990 OSI : Oturum / Sunum Katmanı (Session-/Presentation-Layer) ~ 2000 ~ 2005 SOA, Web dağıtıklığın kutsal kasesi için arama devam etmektedir Seite 5

Dağıtık Uygulamalar Dağıtık Uygulamalar Tarihçe 90'ların Ortasındaki Dağıtım Platformları Normal: Assembler'da sürücü yazımı yerine layer-4-api kullanılarak yazılmış C programları (Ağ Programlama / Soketler). Araştırma Konusu, tecrübeli geliştiriciler tarafından kullanım Layer-4 tarafından soyutlama örn. OSI: (Presentation- / Session-Layer) Özelleştirilmiş hizmetler tarafından desteklenme örn. Adlandırma servisleri Standard Kod Blokları (üretilen / sağlanan) örn. RPC Kütüphanelerde standart çözümlerin hazırlanması örn. XDR Programlama dillerinde entegre edilmesi Orta Katman, SOA,... Karşı konulamaz artış: Web-Teknolojileri Sorunları ve çözümleri basitleştirmek Sadece bir protokol: HTTP (neredeyse) sadece bir serileştirme konsepti: Text, XML, JSON Seite 6

(Middleware) Üzerinde Dağıtık Uygulamalar Hedef Dağıtıklık uygulama geliştiricisi için büyük ölçüde şeffaf(görünmez) olmalıdır. Bunun için yazılım soyutlamaları(software Abstraction), örn. Protokoller (De-) serileştirme yardımları ve Araçlar ve Altyapı, örn. Adlandırma hizmetleri (Eşlerin bulunması için) Broadcast Grup iletişimi.. ile sağlanmıştır Gerçekte dağıtık olmayan algoritma Dağıtık Uygulama Dağıtık algoritmalar BS BS BS BS BS BS HW HW HW HW HW HW Seite 7

/ Örnek RPC Sunucu İstemci üretilen üretilen Stub-P1 Veriler Kodlama/ kod çözme... Skeleton Veriler kodlama kod çözme Stub-Pn Veriler Kodlama/ kod çözme Prosedür P1... Prosedür Pn Uygulama geliştiriciler oluşturulmuş kodlar ve kütüphane fonksiyonlarının yardımlarıyla dağıtık programlar ve prosedürler yazarlar. Seite 8

/ Örnek RMI Dağıtık uygulama yazmak için savunulan strateji üç aşamalı yaklaşımdır. İlk aşamada nesnelerin nerede oldukları ve iletişimlerinin nasıl sağlandığı konusunda endişe edilmez. İkinci aşama nesne yerlerini ve iletişim metotlarını somutlaştırarak performasın ayarlanmasıdır. Son aşama ise ''gerçek mermi'' ile test aşamasıdır(bölünmüş ağlar, çöken makineler,...) Waldo et al. a note on distributed computing (1994) RMI RPC prensiplerinin geliştirilmiş bir halidir; - Dağıtık prosedürler yerine dağıtık nesneler kullanımı - Bir programlama dili üzerine yoğun sınırlama - bunlardan dolayı kolaylaştırma ve esnekleştirme. Seite 9

/ RMI Serialization / deserialization oluşturulmuş(generated) sunucu işlemleri Gerekli sınıfların otomatik yüklenmesi (Nesneler herzaman sınıflara aittir) Proxy nesnelerinin otomatik oluşturumu ve yüklenmesi Sınıflar Ve Metotlar Süreç Süreç/İşlem Oluşturma, İstemci ProxyNesnesi Nesne yükleme Proxy-Sınıfı (Metotlarla birlikle) Seite 10

Örnek Buffer : Lokal (dağıtık olmayan) Çözüm public class Buffer<TokenType> { TokenType place; boolean empty = true; public class Main { static enum Token { PING, PONG ; static Buffer<Token> buffer = new Buffer<>(); synchronized void put(tokentype t) throws InterruptedException { while (! empty ) wait(); place = t; empty = false; notify(); public static void main(string[] args) { new Thread(new Runnable(){ // Producer public void run() { while (true) { try { buffer.put(token.ping); Thread.sleep(1000); System.out.println(buffer.get()); catch (InterruptedException e) { ).start(); synchronized TokenType get() throws InterruptedException { while ( empty ) wait(); empty = true; notify(); return place; new Thread(new Runnable(){ // Consumer public void run() { while (true) { try { buffer.put(token.pong); Thread.sleep(1000); System.out.println(buffer.get()); catch (InterruptedException e) { ).start(); Dağıtım: Producer / Consumer ve Buffer farklı süreçlerde. Seite 11

Buffer : RMI ile gerçekleştirim (1) java.io.serializable; java.rmi.remote; java.rmi.remoteexception; Servis katmanları Bu servis istemcilerine nesneyi sunar.. public interface BufferI<TokenType extends Serializable> extends Remote { public void put(tokentype t) throws RemoteException, InterruptedException; public TokenType get() throws RemoteException, InterruptedException; java.io.serializable; java.rmi.remoteexception; java.rmi.registry.locateregistry; java.rmi.registry.registry; java.rmi.server.unicastremoteobject; public class RMIBuffer<TokenType extends Serializable> implements BufferI<TokenType> { private TokenType place; private boolean empty = true; @Override public synchronized void put(tokentype t) throws RemoteException, InterruptedException { while (! empty) wait(); place = t; empty = false; notify(); Service gerçekleştirimi @Override public synchronized TokenType get() throws RemoteException, InterruptedException { while ( empty ) wait(); empty = true; notify(); return place; Seite 12

Puffer: RMI ile gerçekleştirim (2) public static void main(string[] args) throws RemoteException { RMIBuffer<Token> obj = new RMIBuffer<>(); BufferI<Token> stub = (BufferI<Token>) UnicastRemoteObject.exportObject(obj, 0); Registry registry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); registry.rebind("rmibuffer", stub); ServisKayıt işlemi System.err.println("Server ready"); Seite 13

Puffer : RMI ile gerçekleştirim (3) java.net.malformedurlexception; java.rmi.naming; java.rmi.notboundexception; java.rmi.remoteexception; Producer public class Pinger { public static void main(string[] args) throws MalformedURLException, RemoteException, NotBoundException, InterruptedException { BufferI<Token> buffer = (BufferI<Token>) Naming.lookup("rmi://127.0.0.1/RMIBuffer"); while (true) { buffer.put(token.ping); java.net.malformedurlexception; java.rmi.naming; java.rmi.notboundexception; java.rmi.remoteexception; Consumer public class Consumer { public static void main(string[] args) throws MalformedURLException, RemoteException, NotBoundException, InterruptedException { BufferI<Token> buffer = (BufferI<Token>) Naming.lookup("rmi://127.0.0.1/RMIBuffer"); while (true) { System.out.println(buffer.get()); Seite 14

Dağıtık Programlar Günümüzde Uygulamalar ve Dağıtıklığın Şeffaflığı hedefi ilişkilendirilir. Dağıtık programların kullanım durumu dağıtıklığın problemlerine dayanmaktadır. Bu problemler soyutlaştırılamaz ve soyutlaştırılmamalı, bunun yerine uygulama geliştiriciler tarafından çözülmelidirler. Bununla birlikte kendilerini dağıtık bilgisayarların sekiz yanılgısından(peter Deutsch, James Gosling) uzak tutabilirler. 1. The network is reliable. 2. Latency is zero. 3. Bandwidth is infinite. 4. The network is secure. http://en.wikipedia.org/wiki/fallacies_of_distributed_computing 5. Topology doesn't change. 6. There is one administrator. 7. Transport cost is zero. 8. The network is homogeneous. RMI örnek olarak hiç bir hata ile karşılaşmadığı sürece, sistemde herşey yolunda gittiği sürece mükemmel. Infrastukturprobleme sind weitgehend gelöst, eine weitere absolute Transparenz wird nicht angestebt.?? Soru: RMI asenkron modele ne ölçüde uymaktadır? Seite 15

Dağıtık Uygulamalar Web Teknolojileri ile Dağıtık Uygulamalar Taşıma Protokolü olarak HTTP üzerinde indirgeme Bütün iletişimler HTTP kullanır Request-Response Uygulama Protokollerinde İndirgeme Bütün uygulama (oturum) protokolleri request-response protokolleridir. Web-Soketleri: bu sınırlamanın gecikmiş aşımıdır Serileştirme konseptlerinde indirgeme XML / JSON / HTML Seite 16