Inhalt. Vorwort... IX. 1 Einführung... 1 Grundlagen... 1 Kritik... 2 Soziales Netz... 4 Warum Facebook genutzt wird... 7



Ähnliche Dokumente
Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

ICS-Addin. Benutzerhandbuch. Version: 1.0

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Guide DynDNS und Portforwarding

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Lizenzen auschecken. Was ist zu tun?

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

Formular»Fragenkatalog BIM-Server«

Hilfen zum Twitter-Hashtag-Marketing!

Echtzeitanomalieerkennung für Internetdienste (Abschlussvortrag)

4D Server v12 64-bit Version BETA VERSION

Anleitung über den Umgang mit Schildern

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

EIDAMO Webshop-Lösung - White Paper

Checkliste zur Planung einer Webseite

TYPO3 CMS 6.2 LTS. Die neue TYPO3- Version mit Langzeit- Support

3 Windows als Storage-Zentrale

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Inhaltsverzeichnis. Vorwort... 3 Installation von XAMPP... 3 Installation von Joomla... 8 Schlusswort Copyright

Professionelle Seminare im Bereich MS-Office

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

HTBVIEWER INBETRIEBNAHME

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Inkrementelles Backup

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Verwendung des Terminalservers der MUG

Installationsanleitung

Speicher in der Cloud

:: Anleitung Hosting Server 1cloud.ch ::

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Anleitung zur Nutzung des SharePort Utility

Business Page auf Facebook

Installation des CMS-Systems Contao auf einem Windows-Rechner mit XAMPP

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Workshop: Eigenes Image ohne VMware-Programme erstellen

Installation SQL- Server 2012 Single Node

SMART Newsletter Education Solutions April 2015

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

COMPUTER MULTIMEDIA SERVICE

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Webalizer HOWTO. Stand:

WordPress. Dokumentation

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

3. Neuen Newsbeitrag erstellen Klicken Sie auf das Datensatzsymbol mit dem +, damit Sie einen neuen Newsbeitrag erstellen können.

Internet Explorer Version 6

Gmail in Thunderbird mit IMAP einrichten

Hinweise zum Update des KPP Auswahltools (Netzwerkinstallation) auf Version 7.2

Leichte-Sprache-Bilder

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

SICHERN DER FAVORITEN

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

Microblogging im TCC mit dem TCC Twitter

WIE SMI-UNTERNEHMEN SOCIAL MEDIA NUTZEN

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Softwaren Engineering I

LabView7Express Gerätesteuerung über LAN in einer Client-Serverkonfiguration. 1. Steuerung eines VI über LAN

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies

Anleitung. Datum: 28. Oktober 2013 Version: 1.2. Bildupload per FTP. FTP-Upload / Datei-Manager FTP. Glarotech GmbH

MULTICHANNEL IN SOZIALEN NETZWERKEN

Whitepaper. Produkt: List & Label 16. List & Label 16 unter Linux/Wine. combit GmbH Untere Laube Konstanz

Intranet Moodle

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

SCHULUNG MIT SYSTEM: E-LEARNING VON RAUM21

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

MetaQuotes Empfehlungen zum Gebrauch von

INFOBLATT FÜR DAS NEU AUFSETZEN IHRES COMPUTERS

Fragebogen zur Erfassung der Anforderungen eines Websiteprojekts

Windows 10 > Fragen über Fragen

MANUAL FÜR LEHRPERSONEN. Intranet Moodle. Manual für Lehrpersonen V1.0 1 / 7

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

virtuos Leitfaden für die virtuelle Lehre

Whitepaper webmethods 9.0. webmethods 9.0. Die Integrationsplattform für BPM, EAI und SOA 2013 SYRACOM AG

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

INSTALLATION VON INSTANTRAILS 1.7

Datensicherung EBV für Mehrplatz Installationen

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

TeamViewer App für Outlook Dokumentation

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Windows Server 2008 (R2): Anwendungsplattform

Anleitung zur Verwendung der UHH-Disk am. Universitätskolleg

15 Arten von QR-Code-Inhalten!

Nachricht der Kundenbetreuung

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Transkript:

Inhalt Vorwort.............................................................. IX 1 Einführung........................................................ 1 Grundlagen....................................................... 1 Kritik............................................................ 2 Soziales Netz...................................................... 4 Warum Facebook genutzt wird........................................ 7 2 Die Facebook- Plattform............................................ 13 Architektur der Facebook-Plattform................................... 13 Open Source...................................................... 15 3 Integrationspunkte................................................ 19 Interne Integrationspunkte.......................................... 21 Externe Integrationspunkte.......................................... 34 Zusammenfassung................................................. 51 4 Entwickeln mit Facebook............................................ 52 Anwendungen.................................................... 53 Voraussetzungen.................................................. 55 Anwendung anlegen................................................ 56 Anwendungseinstellungen........................................... 57 Hallo Welt....................................................... 65 Software Development Kits.......................................... 67 Schnittstellen..................................................... 72 Entwicklungswerkzeuge............................................. 77 Erfolgsfaktoren.................................................... 80 Zusammenfassung................................................. 87 V

5 Anwendungsbeispiele.............................................. 88 Welcome-Page.................................................... 88 MP3-Player....................................................... 97 Facebook-Karaoke................................................ 104 Facebook-Galerie................................................. 114 Hosting......................................................... 120 Zusammenfassung................................................ 123 6 Graph API....................................................... 124 Abfragen........................................................ 124 Erstellen........................................................ 134 Löschen von Objekten............................................. 137 Autorisierung.................................................... 137 Echtzeit-Updates................................................. 147 Objekte......................................................... 152 7 Open Graph Protocol.............................................. 226 Allgemein....................................................... 227 Objekttypen..................................................... 228 Ortsangaben..................................................... 228 Kontaktinformationen............................................. 229 8 REST-API........................................................ 230 Veraltete Methoden............................................... 230 batch.run....................................................... 232 Anmeldung und Sicherheit.......................................... 233 Anwendungen................................................... 240 Dashboard...................................................... 256 Benutzer........................................................ 273 Freunde........................................................ 282 Gruppen........................................................ 286 Facebook-Pages.................................................. 289 Stream......................................................... 291 Nachrichten..................................................... 302 Veranstaltungen.................................................. 311 Kommentare..................................................... 320 Fotos und Videos................................................. 324 Notizen......................................................... 337 VI Inhalt

Links.......................................................... 340 FBML.......................................................... 345 FQL.......................................................... 346 9 FQL............................................................ 350 Einführung...................................................... 350 Allgemeine Angaben.............................................. 354 Nachrichten..................................................... 359 Anwendungen................................................... 364 Der Stream...................................................... 367 Benutzer........................................................ 378 Freunde........................................................ 389 Seiten.......................................................... 392 Veranstaltungen.................................................. 396 Foto und Video.................................................. 399 Statistiken....................................................... 405 10 XFBML......................................................... 416 fb:activity....................................................... 416 fb:live-stream.................................................... 418 fb:recommendations.............................................. 418 fb:like.......................................................... 420 fb:like-box...................................................... 423 fb:comments.................................................... 424 fb:facepile....................................................... 425 fb:bookmark..................................................... 426 fb:add-profile-tab*................................................ 427 fb:login......................................................... 428 fb:login-button................................................... 428 fb:name........................................................ 429 fb:profile-pic..................................................... 431 fb:share-button................................................... 432 Index............................................................... 433 Inhalt VII

KAPITEL 2 Die Facebook- Plattform In diesem Kapitel werden Sie einiges über den Aufbau der Facebook-Plattform erfahren. Lesen Sie, welche Technologien zum Einsatz kommen und welche Besonderheiten es in Bezug auf die Entwicklung von Facebook selbst gibt. Architektur der Facebook-Plattform Nach Aussagen seiner Betreiber ist Facebook die PHP-basierte Website mit dem zweitgrößten Trafficaufkommen der Welt. In den letzten zwei Jahren hat sich das Trafficaufkommen mehr als verdoppelt, und somit proportional auch die Last auf die Infrastruktur. Facebook hat derzeit nach eigenen Angaben Zehntausende von Webservern, die jeweils ein Data-Center an der Ostküste und der Westküste der Vereinigten Staaten füllen. Momentan baut Facebook ein eigenes Data-Center in Prineville, Oregon, das Anfang 2011 fertiggestellt sein soll. Der technische Aufbau der Facebook-Infrastruktur ist relativ gewöhnlich. Facebook verwendet einen herkömmlichen LAMP-Stack, also Linux, Apache, MySQL und PHP. Load-Balancer weisen einzelne Anfragen einem Webserver zu. Die Anfragen werden von vorkompilierten PHP-Skripten verarbeitet. Diese greifen auf die MySQL- Instanzen zu, wobei diese Anfragen über Memcache gecached werden. Für spezielle Anwendungen innerhalb von Facebook kommen auch andere Technologien zum Einsatz. Zum Beispiel wird für die Inbox-Suche Cassandra verwendet, dem Facebook-Chat liegt eine in Erlang programmierte Anwendung zugrunde und für den Betrieb der Infrastruktur kommen weitere Technologien zum Einsatz. Die Infrastruktur von Facebook umfasst Schätzungen zufolge mehr als 60.000 Server. Bei einer derartigen Anzahl von Servern fallen regelmäßig und relativ oft Festplatten, Speicher, Mainboards und CPUs aus. Das Operations-Team von Facebook hat alle Hände voll zu tun und ist stets damit beschäftigt, die Plattform am Leben zu erhalten. 13

Abbildung 2-1: Vereinfachter technischer Aufbau Aktuelle Statusmeldungen zur Facebook-Plattform lassen sich unter der eigens dafür eingerichteten Webseite http://developers.facebook.com/live_status nachverfolgen. Hier erfährt man als Erstes, wenn etwas nicht stimmt. Zum Beispiel kann es vorkommen, dass bestimmte API-Funktionen nicht zur Verfügung stehen oder eine schlechte Reponse-Zeit haben. Abbildung 2-2: Livestatus der Facebook-Plattform Interessant ist auch der Innovations- und Entwicklungszyklus von Facebook. Anstatt den herkömmlichen Prozess vom Entwickler über die Qualitätssicherung zur Operationseinheit zu gehen, entwickelt, testet und deployt ein Facebook-Entwickler seine Arbeit selbst. Die Entwickler wissen meistens am besten, worauf es ankommt, und können Fehler wesentlich schneller beheben. Facebook setzt auf kleine Entwicklungsteams, die mit 14 Kapitel 2: Die Facebook- Plattform

einem technischen Mitarbeiter der Firma einem sogenannten»operations Guy«zusammenarbeiten, der die Schnittstelle zur Operationseinheit bildet; das ermöglicht direkten Informationsaustausch, und die entsprechenden Mitarbeiter helfen dabei, Architekturentscheidungen zu treffen. Alles in der technischen Umgebung von Facebook läuft auf dem Betriebssystem Linux. (Hier und da sind genaugenommen ein paar Solaris-Kisten in Betrieb, aber alles andere basiert auf Linux.) Tom Cook, Systems Engineer bei Facebook, erklärte bei der von O Reilly ausgerichteten Konferenz Velocity 2010, dass eine Variante von CentOS 5 mit einem angepassten 2.6er-Kernel eingesetzt wird. Für das Konfigurationsmanagement setzt man auf die CF-Engine und für das Monitoring kommen neben selbstgeschriebenen Tools ODS, Ganglia und Nagios zum Einsatz. Open Source Beim Betrieb der Facebook-Platform kommt vorwiegend Open Source-Software zum Einsatz, wobei das Facebook-Team die jeweilige Software selbst erweitert und so der Community etwas zurückgibt. Facebook selbst hat auch einige seiner Eigenentwicklungen als Open Source bereitgestellt. Im Folgenden geht es um ein paar der von Facebook eingesetzten Technologien, die für Sie vielleicht von Interesse sein könnten. HipHop for PHP Dabei handelt es sich um einen Quellcodewandler, der PHP-Code in nativen C++-Code überführt und mit g++ kompiliert wird. Das ermöglicht es dem Entwicklungsteam von Facebook, weiterhin in PHP zu programmieren und trotzdem eine auf Leistung optimierte Anwendung zu entwickeln. HipHop für PHP wurde von nur drei Ingenieuren entwickelt und steht als Open Source-Download zur Verfügung. Es hat über zwei Jahre gedauert, HipHop in den produktiven Betrieb zu überführen und es bedient heute 100% des Traffics von Facebook. Die Leistungsfähigkeit ist enorm: Mit HipHop kann die Leistung bis zu 50% angehoben werden. Memcache Facebook hat einen ziemlich großen Footprint, was Memcache angeht. Memcache ist der Caching-Layer zwischen der Datenbank und den Webservern. Zur Orientierung: Derzeit hält die Facebook-Anwendung über 300 Terabyte ihrer Daten via Memcache im RAM- Speicher der laufenden Server. MySQL In MySQL werden die meisten Daten der Site endgültig gespeichert, wobei die meisten Interaktionen auf der Website mit Memcache erfolgen und immer seltener mit MySQL. Alternativ dazu setzt Facebook mehr und mehr auf die selbst entwickelte NoSQL-Datenbank Cassandra (s.u.). Open Source 15

Services Services sind im Zusammenhang mit dem technischen Aufbau der Facebook-Plattform dedizierte Systeme, die Daten für die Auslieferung aus verschiedenen Quellen aggregieren. Beispiele für diese Services sind News Feed, Search, Chat, Ads, Media usw. Cassandra Cassandra gehört zu den immer beliebter werdenden NoSQL-Datenbanken. Sie wurde ursprünglich von den Facebook-Ingenieuren Avinash Lakshman (er ist einer der Autoren von Amazon Dynamo) und Prashant Malik für die Inbox-Suche entwickelt. 2008 wurde Cassandra als Open Source-Projekt auf Google Code veröffentlicht. Zu diesem Zeitpunkt wurden das System innerhalb eines Clusters mit über 600 CPU-Kernen und mehr als 120 Terabyte Daten eingesetzt. Für immer mehr Facebook-interne Anwendungen wird Cassandra als Storage-Engine eingesetzt. Bekannte Nutzer von Cassandra sind unter anderem Digg, Twitter, Rackspace und Cisco Webex. Thrift Bei Thrift handelt es sich um ein Remote Procedure Call Framework, das von Facebook zu dem Zweck entwickelt wurde, skalierbare, programmiersprachenübergreifende Serviceentwicklung zu ermöglichen. Mit Thrift definiert man Datentypen und Serviceschnittstellen in einer sehr simplen Definitionsdatei. Mithilfe dieser Datei generiert Thrift Code, mit dem man RPC-Clients und -Server entwickeln kann, die sprachenübergreifend kommunizieren können. Derzeit ist Thrift für die Sprachen C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk und OCaml verfügbar. Apache Hive Hive ist eine auf Apache Hadoop basierende Warehouse-Infrastruktursoftware, die einfache Werkzeuge zur Verfügung stellt, um Daten zu summieren und Analysen und Liveabfragen über große Datenmengen durchzuführen. Seit 2008 wird Hive bei Facebook für die Datenanalyse eingesetzt. Hive stellt eine SQL-ähnliche Sprache zur Abfrage zur Verfügung. Für Abfragen, die mit herkömmlichen Features der Sprache nicht verarbeitet werden können, stellt Hive darüber hinaus ein Map/Reduce-Framework zur Verfügung. Derzeit geht es dabei um eine Installation mit über 4.800 CPU-Kernen und mehr als 8 Petabyte Daten, in der täglich mehr als 8.000 Jobs verarbeitet werden. Flashcache Ursprünglich wurde das Linux-Kernelmodul Flashcache von Facebook als Blockcache für InnoDB/MySQL entwickelt. Flashcache kann jedoch überall eingesetzt werden und ist nicht ausschließlich für InnoDB/MySQL sinnvoll. Bei InnoDB kommt es zu Latenzen während des Lesens, wenn die Arbeitsdaten nicht in den Buffer-Pool passen; auch beim 16 Kapitel 2: Die Facebook- Plattform

Schreiben treten gewöhnlich Latenzen auf, da die Daten auf die Festplatte geschrieben werden. Mit Flashcache ist es möglich, einen Blockcache hierfür auf schnellere Medien wie zum Beispiel SSDs zu legen. Dabei werden dann die Daten auf den SSDs zwischengespeichert und können so vom System schneller abgerufen werden. So lässt sich die Performance von InnoDB/MySQL erheblich steigern. Jedoch kann diese Methode auch für alle anderen Anwendungen mit ähnlicher Problemstellung eingesetzt werden. Flashcache ist Open Source und steht unter GPL-2-Lizenz zum Download zur Verfügung. Tornado Tornado wurde von Facebook 2009 unter der Apache-Lizenz 2.0 veröffentlicht. Es ist ein Non-blocking Webserver, der auf viele gleichzeitige Verbindungen spezialisiert ist. Tornado wurde ursprünglich von FriendFeed entwickelt, das 2009 von Facebook gekauft wurde. Tornado eignet sich vor allem für Echtzeitwebdienste. Das Framework wurde in Python geschrieben und ähnelt dem Django-Framework, dessen Templates sich auch in Tornado verwenden lassen. FriendFeed verwendet Tornado hinter einem nginx-server, der als Load-Balancer fungiert. Facebook setzt diesen Webserver derzeit nicht ein, da ein Großteil der Facebook-Plattform in PHP geschrieben ist. Scribe Scribe ist ein Server, der in der Lage ist, Logging-Daten von vielen Servern in Echtzeit zu aggregieren. Facebook hat Scribe entwickelt, um bei den vielen verschiedenen eingesetzten Technologien einheitlich Logging-Daten zu sammeln bzw. zu aggregieren. 2008 wurde Scribe von Facebook zu Open Source gemacht. Es ist ohne clientseitige Anpassung skalierbar. Derzeit unterstützt Scribe mehr als 100 Anwendungen und verträgt mehrere Milliarden Nachrichten pro Tag. Wer viele Logging-Daten sammeln muss, findet in Scribe einen guten Freund und Helfer. Der Client loggt die Daten mit einer Thrift- Schnittstelle. Gerade bei verteilten Systemen entfaltet Thrift seine Stärken und ist für viele Operations-Teams unabdingbar. Varnish Varnish ist ein HTTP-Beschleuniger bzw. ein HTTP-Cache. Es wurde für dynamische Websites entwickelt, die sehr viele Inhalte haben. Dabei cacht Varnish die generierte Website im Speicher. Bei dynamischen Websites sind oft mehrere Schritte via Frontend, Middleware und Backend sowie einige Datenbankabfragen notwendig, um eine Seite zu erzeugen. Varnish speichert diese zwischen und generiert nur neue, wenn sich die Seite geändert hat. Facebook setzt diesen Beschleuniger für Medien und Ähnliches ein. Ursprünglich wurde das Projekt von der Onlineabteilung der norwegischen Boulevardzeitung Verdens Gang initiiert. Varnish ist in C entwickelt, Open Source, steht unter der BSD-Lizenz und wurde 2006 mit der Version 1.0 veröffentlicht. Open Source 17

CFEngine Die Software CFEngine ist ein regelbasiertes Konfigurationsmanagement-System, das für die automatisierte Konfiguration und Wartung von Servern eingesetzt wird. Facebook verwendet CFEngine für die Wartung von Host-Konfigurationen und für gewöhnliche Wartungsarbeiten der Produktionsumgebung. CFEngine steht als Open Source und Commercial-Variante zur Verfügung und wird unter anderem vom US-Militär, IBM, Nokia, ebay und der Yale-Universität verwendet. 18 Kapitel 2: Die Facebook- Plattform