Tuple prostor - Tuple space - Wikipedia
A n-tice prostor je implementace asociativní paměť paradigma pro paralelní / distribuované výpočty. Poskytuje úložiště n-tice ke kterým lze přistupovat souběžně. Jako ilustrativní příklad zvažte, že existuje skupina procesorů, které produkují data, a skupina procesorů, která data používají. Producenti zveřejní svá data jako n-tice v prostoru a spotřebitelé poté načtou data z prostoru, která odpovídají určitému vzoru. Toto je také známé jako tabule metafora. Tuple prostor lze považovat za formu distribuovaná sdílená paměť.
Tuple prostory byly teoretickým základem Linda jazyk vyvinutý společností David Gelernter a Nicholas Carriero na univerzita Yale v roce 1986.
Byly také vyvinuty implementace n-tice prostorů Jáva (Prostory Java ), Lisp, Lua, Prolog, Krajta, Rubín, Pokec, Tcl a .NET Framework.
Prostory objektů
Prostory objektů je paradigma pro rozvoj distribuované výpočty aplikace. Je charakterizována existencí logických entit zvaných Prostory objektů. Všichni účastníci distribuované aplikace sdílejí Objektový prostor. Poskytovatel služby zapouzdřuje službu jako Objekt, a vloží to do Objektový prostor. Klienti služby poté přistupují k Objektový prostor, zjistit, který objekt poskytuje potřebnou službu, a nechat požadavek obsluhovat objektem.
Prostory objektů, jako počítačové paradigma, navrhl v 80. letech 20. století David Gelernter na univerzita Yale. Gelernter vyvinul jazyk zvaný Linda podporovat koncept globální koordinace objektů.
Objektový prostor lze považovat za virtuální úložiště sdílené mezi poskytovateli a přístupovými osobami síťových služeb, které jsou samy o sobě abstrahovány jako objekty. Procesy mezi sebou komunikují pomocí těchto sdílených objektů - aktualizací stavu objektů podle potřeby.
Pokud je objekt uložen do prostoru, musí být registrován pomocí Adresář objektů v Objektový prostor. Jakékoli procesy pak mohou identifikovat objekt z Adresář objektůpomocí vyhledávání vlastností, kde vlastností určující kritéria pro vyhledávání objektu je jeho název nebo nějaká jiná vlastnost, která jej jednoznačně identifikuje. Proces se může rozhodnout čekat na umístění objektu do Objektový prostor, pokud požadovaný objekt ještě není přítomen.
Předměty, pokud jsou uloženy v Objektový prostor jsou pasivní, tj. jejich metody nelze vyvolat, když jsou objekty v Objektový prostor. Místo toho musí přístupový proces načíst to z Objektový prostor do místní paměti použijte službu poskytovanou objektem, aktualizujte stav objektu a vložte jej zpět do Objektový prostor.
Toto paradigma neodmyslitelně poskytuje vzájemné vyloučení. Protože jakmile je objekt přístupný, musí být odstraněn z Objektový prostor, a je vrácen zpět až po uvolnění. To znamená, že žádný jiný proces nemůže přistupovat k objektu, zatímco je používán jedním procesem, čímž je zajištěno vzájemné vyloučení.
Prostory Java
JavaSpaces je specifikace služby poskytující mechanismus výměny a koordinace distribuovaných objektů (který může, ale nemusí být trvalý) Jáva předměty. Používá se k ukládání stavu distribuovaného systému a implementace distribuované algoritmy. V prostředí JavaSpace všichni komunikační partneři (partneři) komunikují a koordinují sdílením stavu.
Lze použít JavaSpaces škálovatelnost prostřednictvím paralelního zpracování lze také použít k zajištění spolehlivého ukládání objektů prostřednictvím distribuované replikace, ačkoli to nepřežije úplné selhání napájení jako disk; mnozí to považují za spolehlivé, pokud je spolehlivá síla. Distribuce může být také do vzdálených míst; to je však vzácné, protože JavaSpaces se obvykle používají nízká latence, vysoce výkonné aplikace spíše než spolehlivé ukládání do mezipaměti objektů.
Nejčastější softwarový vzor používaný v JavaSpaces je vzor Master-Worker. Mistr rozdá „pracovní jednotky“ do „prostoru“ a ty jsou dělníky čteny, zpracovávány a zapisovány zpět do prostoru. V typickém prostředí existuje několik „prostorů“, několik mistrů a mnoho pracovníků; pracovníci jsou obvykle navrženi tak, aby byli obecní, tj. mohou z prostoru odnést jakoukoli jednotku práce a zpracovat úkol.
JavaSpaces je součástí Java Jini technologie, která sama o sobě nemá obchodní úspěch.[1] Tato technologie si v průběhu let našla a udržela nové uživatele a někteří prodejci nabízejí produkty založené na prostředí JavaSpaces. JavaSpaces zůstávají specializovanou technologií většinou používanou v odvětví finančních služeb a telekomunikací, kde si i nadále udržuje věrné pokračování. Oznámení Jini / JavaSpaces vytvořilo docela nějaký humbuk, i když spoluzakladatel a hlavní architekt společnosti Sun Bill Joy řekněte na rovinu, že tento sen o distribuovaných systémech bude trvat “kvantový skok v myšlení".[2]
GigaSpaces, vývojář datové struktury In-Memory-Computing, implementuje JavaSpaces jako součást své datové mřížky v paměti.
Příklad použití
Následující příklad ukazuje aplikaci vytvořenou pomocí prostředí JavaSpaces. Nejprve objekt, který má být sdílen v Objektový prostor je vyrobeno. Takový objekt se nazývá Vstup v terminologii JavaSpace. Tady je Vstup se používá k zapouzdření služby, která vrací a Ahoj světe! řetězec a sleduje, kolikrát byl použit. Server, který poskytuje tuto službu, vytvoří Objektový prostornebo JavaSpace. The Vstup je tedy psaný do JavaSpace. Klient čte záznam z JavaSpace a vyvolá svou metodu pro přístup ke službě a aktualizuje tím počet využití. Aktualizováno Vstup je zapsán zpět do JavaSpace.
// Vstupní třídaveřejnost třída SpaceEntry nářadí Vstup { veřejnost finále Tětiva zpráva = "Ahoj světe!"; veřejnost Celé číslo počet = 0; veřejnost Tětiva servis() { ++počet; vrátit se zpráva; } veřejnost Tětiva toString() { vrátit se "Počet: " + počet; }}
// Ahoj světe! serveruveřejnost třída Server { veřejnost statický prázdnota hlavní(Tětiva[] args) hodí Výjimka { SpaceEntry vstup = Nový SpaceEntry(); // Vytvořit objekt Entry JavaSpace prostor = (JavaSpace)prostor(); // Vytvoření prostoru objektů // Zaregistrujte a zapište vstup do prostoru prostor.psát si(vstup, nula, Pronájem.NAVŽDY); // Pozastavte na 10 sekund a poté načtěte položku a zkontrolujte její stav. Vlákno.spát(10 * 1000); SpaceEntry E = prostor.číst(vstup, nula, Dlouho.MAX_VALUE); Systém.ven.tisk(E); }}
// Klientveřejnost třída Klient { veřejnost statický prázdnota hlavní(Tětiva[] args) hodí Výjimka { JavaSpace prostor = (JavaSpace) prostor(); SpaceEntry E = prostor.vzít(Nový SpaceEntry(), nula, Dlouho.MAX_VALUE); Systém.ven.tisk(E.servis()); prostor.psát si(E, nula, Pronájem.NAVŽDY); }}
Knihy
- Eric Freeman, Susanne Hupfer, Ken Arnold: Principy, vzory a praxe JavaSpaces. Addison-Wesley Professional, 1. června 1999, ISBN 0-201-30955-6
- Phil Bishop, Nigel Warren: JavaSpaces v praxi. Addison Wesley, 2002, ISBN 0-321-11231-8
- Max K. Goff: Network Distributed Computing: Fitscapes and Fallacies, 2004, Prentice Hall, ISBN 0-13-100152-3
- Sing Li a kol .: Profesionální programování serveru Java, 1999, Wrox Press, ISBN 1-86100-277-7
- Steven Halter: Příklad prostředí JavaSpaces, 2002, Prentice Hall PTR, ISBN 0-13-061916-7
Rozhovory
- Gelernter, David (2009). „Lord of the Cloud“. John Brockman, redaktor a vydavatel Russell Weinberger, přidružený vydavatel, Edge Foundation, Inc.
- Heiss, Janice J. (2003). „Computer Visions: A Conversation with David Gelernter“. Sun Developer Network (SDN).
- Venners, Bill (2003). „Designing as if Programmers are People (Interview with Ken Arnold)“. java.net.
Články
- Brogden, William (2007). „Jak mohou webové služby používat JavaSpaces“. SearchWebServices.com. Citováno 2007-04-18.
- Brogden, William (2007). „Grid computing a webové služby (Beowulf, BOINC, Javaspaces)“. SearchWebServices.com. Citováno 2007-03-20.
- White, Tom (2005). „Jak vytvořit ComputeFarm“. java.net. Citováno 2005-05-21.
- Ottinger, Joseph (2007). „Porozumění prostorům JavaSpaces“. na straně druhé. Citováno 2007-01-31.
- Angerer, Bernhard; Erlacher, Andreas (2005). „Volně vázaná komunikace a koordinace v Java Middleware nové generace“. java.net. Citováno 2006-06-03.
- Angerer, Bernhard (2003). „Vesmírné programování“. onjava.com. Citováno 2003-03-19.
- Sing, Li (2003). „High-impact Web tier clustering, Part 2: Building adaptive, scalable solutions with JavaSpaces“. IBM developerworks.
- Mamoud, Qusay H. (2005). „Začínáme s technologií JavaSpaces: Za konvenční paradigmata distribuovaného programování“. Sun Developer Network (SDN).
- Freeman, Eric; Hupfer, Susanne (20. listopadu 1999). „Vytvořit prostor pro Javaspaces, 1. část (od 5)“. JavaWorld. Citováno 2020-07-17.
- Löffler, Dr. Gerald (2004). „JavaSpaces und ihr Platz im Enterprise Java Universum, Das Modell zum Objektaustausch: JavaSpaces vorgestellt“. Entwickler.com. Citováno 2004-02-01.
- Arango, Mauricio (2009). „Koordinace v paralelních systémech založených na událostech“. blogs.sun.com.
- Nemlekar, Milind (2001). "Škálovatelné distribuované Tuplespaces". NCSU, odbor ECE.
Viz také
- Vesmírná architektura
- Linda (koordinační jazyk)
- Ken Arnold, vedoucí inženýr pro JavaSpaces ve společnosti Sun Microsystems
- Rindo, JavaSpaces analog pro Rubín
Reference
- ^ Lee Gomes: "Předpovědi společnosti Sun Microsystems pro známý systém Jxta ". The Wall Street Journal, 4. června 2001
- ^ Rob Guth: "Více než jen další hezké jméno: Sun's Jini otevírá nový svět distribuovaných počítačových systémů ". SunWorld, Srpen 1998 [15. ledna 2006]
Zdroje
- Gelernter, David. „Generativní komunikace v Lindě“. Transakce ACM v programovacích jazycích a systémech, svazek 7, číslo 1, leden 1985
- Distribuované výpočty (První indický dotisk, 2004), M. L. Liu
externí odkazy
- "TupleSpace" na c2.com
- "Specifikace JavaSpace" na jini.org