Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source,...
Transcript of Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source,...
![Page 1: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/1.jpg)
Wegweiser
Verteilte Systeme:
Web Services
Einführung 1
![Page 2: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/2.jpg)
SOA – Service Oriented Architecture
• Div. Design Prinzipien
– Lose Kopplung
– Abstraktion
– Wiederverwendbarkeit
– Zustandslosigkeit
– …
Einführung 2
Service Consumer
Frontend
Service Provider
Business Logik Persistenz
Web Services
![Page 3: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/3.jpg)
SOAP
• Entstanden 1999
• XML basiert
• HTTP typisch als Transport, aber nicht erforderlich
• Struktur: Envelope, Header, Body
• WSDL als Beschreibungssprache
• (tot: UDDI)
Einführung 3
![Page 4: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/4.jpg)
SOAP Nachrichtenaufbau
Einführung 4
SOAP Envelope
SOAP Header
SOAP Body
Headers
XML Content
SOAPFault
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
![Page 5: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/5.jpg)
WSDL
Einführung 5
Quelle: W3C
![Page 6: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/6.jpg)
Beispiel: SoapUI
Einführung 6
![Page 7: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/7.jpg)
REST (REpresentational State Transfer)
• SOA mit REST -> ROA
• Erdacht 2000 von Roy Fielding als Doktorarbeit
• Stark an HTTP gebunden, URL adressierbar
• Response Encodings: XML, JSON, HTML, andere denkbar
• Zustandslos, CRUD
Einführung 7
![Page 8: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/8.jpg)
HTTP Methoden bei REST
Einführung 8
Primitive Bedeutung
GET Ressource lesen, ohne Status zu verändern
POST Ressource anlegen und sonstige Operationen
PUT Ressource anlegen/ändern
PATCH Teilweise Änderung einer Ressource
DELETE Ressource löschen
HEAD Metadaten zu einer Ressource erfragen
OPTIONS Methoden zum Ressourcenzugriff abfragen
![Page 9: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/9.jpg)
REST Beispiel
Einführung 9
![Page 10: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/10.jpg)
REST Encoding
• JSON, XML, YAML, HTML oder beliebig
• Chunking
• Compression
• Multipart
Einführung 10
{“id“:23,“nachName“:“Magschok“,“vorName“:“Georg“,“alter“:23}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person id=„23">
<alter>23</alter>
<vorName>Georg</vorName>
<nachName>Magschok</nachName>
</person>
![Page 11: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/11.jpg)
Beispiel: Enunciate
Einführung 11
![Page 12: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/12.jpg)
REST in Java: JAX-RS
@Path("/greeting")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public class GreetingService {
@GET public Response message() {
return new Response("Hi REST!");
}
@POST public Response lowerCase(final Request message) {
return new Response(message.getValue().toLowerCase());
}
}
Einführung 12
![Page 13: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/13.jpg)
REST: WADL
Einführung 13
![Page 14: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/14.jpg)
HATEOAS & RMM
• Rest Maturity Model (Leonard Richardson)
• HATEOAS (Hypermedia as the Engine of Application State): Dynamische Ressource Links, weg von der statischen Interfacedefinition
Einführung 14
Quelle: Martin Fowler
![Page 15: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/15.jpg)
Andere Mechanismen zur verteilten Kommunikation
• RPC
• DCOM
• CORBA
• RMI
• XML-RPC
• DCE
• RMI-IIOP
• Thrift
• …
Einführung 15
![Page 16: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/16.jpg)
Wegweiser
Scaling:
wie kriegen wir die Cloud groß genug?
Einführung 16
![Page 17: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/17.jpg)
Scaling Dimensionen
Einführung 17
Scaling
Storage
Filesystem DB RAM
Netzwerk Processing
![Page 18: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/18.jpg)
Wegweiser
DB Scaling
Einführung 18
![Page 19: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/19.jpg)
DB Anwendungsebenen Cloud
1. Cloud Provider bieten Datenbanken als IaaS und SaaS Angebote an
– Meist individuell entwickelt
– Teilweise als open source veröffentlicht
– Die Geschichte der Systeme und Experten ist stark vernetzt.
2. Cloud-Entwickler nutzen verteilte Datenbanksysteme auf Cloud-Infrastrukturen
– Anspruch an Verteilung, Replikation, CAP-Entscheidungen
Einführung 19
![Page 20: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/20.jpg)
Umgang mit Relationalen DBMSs
• Siehe Einführung
– Scale-Up
– Scale-Out
• Normalisierung + De-Normalisierung!
• Sharding
• Dimensionen:
– Storage
– Zugriffe/Performance
– technische DB-Optimierung (z.B. Indizes, Caching)
• … Einführung 20
![Page 21: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/21.jpg)
Zoo an Alternativen aka NoSQL
• In Memory DBs: SAP HANA; memcached, eXtremeDB
• Caches: memcached, redis
• Key-Value Stores: redis, Amazon Dynamo, Apache Cassandra
• Dokumenten DBs: CouchDB, MongoDB
• Graph DBs: InfoGrid, Neo4j
• Object DBs: ZopeDB, Gemstone
• …
Einführung 21
![Page 22: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/22.jpg)
NoSQL: Häufige Eigenschaften
• Nomen est Omen – keine SQL basierte Abfrage => aber bewegt sich in die Richtung
• Verzicht auf striktes ACID
• Eventual Consistent
• Einfache Skalierbarkeit durch Daten Verteilung / Sharding => siehe Consistent Hashing.
• Spezialisierter Use-Case
• Keine oder weniger „strikte“ Schemata
Einführung 22
![Page 23: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/23.jpg)
Beispiel:
Apache
• Open Source, ursprünglich entwickelt von Facebook
• Konzepte übernommen von
– Amazons Dynamo DB (der Core Entwickler von Cassandra hat vorher an Dynamo mitentwickelt)
– Google BigTable
• Kommerzieller Support von DataStax
– (inkl. AWS Deployment, falls gewünscht)
Einführung 23
![Page 24: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/24.jpg)
Cassandra Konzepte (1)
• Peer-to-Peer Modell - kein Master => Gossip Protokoll
• Automatische Replikation / Verteilung => Consistent Hashing
• Multi-Datacenter Support
• Tuneable Consistency Modell (per Operation) – read repair Konflikt Auflösung
• Hohe Performance => r/w skaliert weitestgehend linear mit Anzahl der Knoten
• Hohe Verfügbarkeit => definierbarer Replikationsfaktor, Hinted Handoff
Einführung 24
![Page 25: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/25.jpg)
Cassandra Konzepte (2)
• Key-Value++ / Column based
• Cassandra Query Language (CQL)
• Lightweight Transactions => PAXOS
• Map/Reduce support => Integration in Hadoop
Einführung 25
![Page 26: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/26.jpg)
Cassandra Tuneable Consistency
• Replikationsfaktor wird festgelegt
• Quorum = GanzZahligAbgerundet(Replikationsfaktor / 2 + 1)
• Verschiedene Konsistenzlevel (pro Operation wählbar)
• Konflikt Auflösung via Timestamp – neuster gewinnt
• Lesend (Auswahl): – ONE: Antwort des nächsten Knotens
– Quorum: Antwort mit aktuellstem Zeitstempel aus Quorum Knoten
– Local Quorum: wie Quorum aber nur aus einem Rechenzentrum
– ALL: Antwort mit aktuellstem Zeitstempel nach Abfrage aller Replika-Knoten
Einführung 26
![Page 27: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/27.jpg)
Cassandra Tuneable Consistency
• Schreibend (Auswahl): – Any: Der Schreibzugriff muss persistiert sein (eventuell Lesen nicht
möglich wenn die zuständigen Knoten nicht verfügbar => Hinted Handoff)
– ONE: Der Schreibzugriff muss einem zuständigen Knoten persistiert sein (ist danach lesbar)
– Quorum: der Schreibzugriff muss bei Quorum Knoten erfolgreich sein
– Local Quorum: wie Quorum nur 1 RZ
– All: der Schreibzugriff muss bei allen Replika-Knoten erfolgreich sein
Einführung 27
Publikumsfrage – Beispiele für verschiedene
Lese-/ Schreibszenarien
![Page 28: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/28.jpg)
Cassandra Datenmodell
Einführung 28
Keyspace (=>Datenbank)
Column Family (=>Tabelle )
Row
Name:Value
Column
Name:Value Name:Value
…
…
Row
Row Key:
Row Key: …
…
Bestimmt den zuständigen Knoten
=> Consistent Hashing
Der Inhalt der Row liegt „linear“ auf
der Platte
![Page 29: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/29.jpg)
Cassandra Datenmodell Beispiele
Einführung 29
Keyspace: StudiDB
Column Family: Student
Vorname:Paul Nachname:
Muster Note:1plus 123:
Vorname:Lisa Email:[email protected] 124:
create keyspace StudiDB;
use StudiDB;
create column family Student;
set Student [‚123‘][‚Vorname‘] = ‚paul‘
set Student [‚123‘][‚Nachname‘] = ‚Muster‘
set Student [‚123‘][‚Note‘] = ‚1plus‘
set Student [‚124‘][‚Vorname‘] = ‚Lisa‘
…
…
get Student[‚123‘]
=>(colum-Vorname, value=Paul, timestamp=34324)
=>(column-Nachname=Muster, timestamp=132423)
=>(column…
get Student where note=‚1plus‘
Secondary Index muss gesetzt sein
![Page 30: Verteilte Systeme: Web Servicesmage0003/cloudcomputing/Cloud_3.pdf · Apache • Open Source, ursprünglich entwickelt von Facebook • Konzepte übernommen von –Amazons Dynamo](https://reader030.fdocuments.in/reader030/viewer/2022020304/5b9f8eb609d3f2857a8b51df/html5/thumbnails/30.jpg)
Cassandra Randbedingungen
• Colums können hinten oder vorne hinzugefügt werden => implizite zeitliche Sortierreihenfolge möglich
• Löschen von Colums erzeugen „Tombstones“
– => z.B: Queues sind ein Anti-Pattern
• Schreibzugriffe schneller als Lesen (disk commit log => Memtable => DataFile (Sorted Strings Table) & SSTableIndex & Bloomfilter)
• Vorsicht bei secondary Indexen auf Columns
– Die Rows sind verteilt gespeichert
– Niedrige Kardinalität (viele Duplikate) von Vorteil
– Bei Hoher Kardinalität (und sehr kleine ausgeprägte Selektivität) zu hoher overhead => unnötige Anfragen an alle Knoten im Cluster
Einführung 30
Level:ANY Level:ONE