Welche Programmiersprache sollte ich für meinen Hochleistungs-Webservice wählen?
Ich bin in den Prozess des Aufbaus einer Web-Service-API für meine Anwendung.
Auch ich bin der Planung zu entlarven-Service über REST und SOAP.
Ich bin daran interessiert, feedback aus der community, welche Programmiersprache sollte ich wählen, um den service einzuführen? (Ich weiß, C# -, Java-und Ruby - RoR gut genug, um den Dienst).
Der service ist vor allem eine HTTP-POST-service.
Es muss um das Jahr 2000 herum gleichzeitige verbindungen sowie in der Lage sein zu handhaben, rund 10.000 HTTP-POST-pro-Sekunde. (für SEIFE haben wir eine submit-Methode für den Kunden zu nennen).
Den service nicht zurück, keine Antwort für den client POST-Anforderungen.
Irgendwelche Ideen auf, welche Programmiersprache/- Architektur, die verwendet werden sollte?
InformationsquelleAutor der Frage | 2009-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
10.000 Anfragen pro Sekunde 25 Milliarden Zugriffe pro Monat. Das bedeutet, dass eines von zwei Dingen:
Armenschrecklich design Wahl.Den Wechsel der hardware allein zu verteilen, dass die Last über eine farm von web-front-ends Kosten würde viele Tausende von Dollar.
Starten, indem Sie ein web-service, der Griff 50 Anforderungen pro Sekunde (Wahl der Sprache ist nicht enorm relevant). Wenn Ihre Anwendung ist so beschäftigt, dass Sie diese Schwelle überschreiten regelmäßig die, Sie sich leisten können, jemanden einstellen, um die Arbeit auf die scaling-problem, full-time, und nicht, um Hilfe zu bitten, auf einem freien Q&A site.
InformationsquelleAutor der Antwort Rex M
Basierend auf meiner bisherigen Erfahrung kann ich Ihnen den folgenden Rat.
InformationsquelleAutor der Antwort pi.
Bei 10.000 posts eine zweite, die Sprache ist die am wenigsten Ihrer sorgen. Ein viel größeres Problem, wäre das design Ihrer Serverfarm und das Netzwerk. Ich nehme an, Sie nicht ausführen möchten, wird dies auf einer einzigen box?
InformationsquelleAutor der Antwort Jason
Hoch skalierbare Anwendungen, zuverlässige, verteilte und den Einsatz von multicore - /Multiprozessor-Systeme? Hier ich denke da sofort an Erlang/OTP zusammen mit Yaws als web application server. Yaws läuft extrem stabil und schnell unter extrem hoher Last. Und Erlang/OTP-Plattform ist konzipiert für die Parallelität und Verteilung, zusammen mit einigen Mechanismen, die helfen, zu entwickeln, stabile software. Die Kosten: Parallelität-Orientierung mit einer funktionalen Programmiersprache ist kein OOP mit Java-oder C# - die syntax scheint seltsam (aber ist sehr direkt und kraftvoll, sobald man Sie angenommen hat), und die Anzahl von third-party Bibliotheken ist nicht so riesig wie für die mainstream-Sprachen. Aber es lohnt sich.
Hoffe, das hilft
mue
InformationsquelleAutor der Antwort Mue
Zu diesem Satz, und da sind Sie zu brechen HTTP sowieso (noch keine Antwort) könnte man genauso gut entwickeln, Ihre eigenen server, oder zur änderung eines open-source-server.
Schreibe alles in C oder C++, und Sie werden rasend ungefähr so schnell wie möglich.
Skalierbarkeit betroffen ist mehr als die Sprache der Wahl wenn.
-Adam
InformationsquelleAutor der Antwort Adam Davis
Konnte ich sehen, bekommen eine Milliarde posts pro Monat in einer einzigen Maschine. Ich habe einen web service in c# geschrieben, die derzeit Umgang mit über 3,5 Millionen posts pro Tag. Der web-server läuft zusammen bei 3% CPU-Auslastung. Das heißt, ich könnte schieben Sie es mindestens 20 mal so schwer...
Vorausgesetzt, jeder Ihrer Maschinen hatte 4 Xeon mit Sechs Kernen, 32 GB RAM, schnelle Festplatten-array, und eine hoch optimierte Datenbank schreibt, Sie könnte es tun. Obwohl die Kosten pro server ist wahrscheinlich in der $35K - $40K-Bereich.
Unabhängig, Ihren Engpass würde nicht mit C# oder Java. Es wäre mit dem Datenbank-server, je nachdem wie groß es wächst. In meinem Fall, es ist über 300 GB mit 10 GB gelöscht und 10GB Hinzugefügt pro Tag.
InformationsquelleAutor der Antwort NotMe
Schauen wir uns die Fragen:
IO: das wird leicht sein, die den größten Engpass in Ihrem system. Wählen Sie eine Sprache, die bietet die beste integration mit dem host-Betriebssystem und stellt erweiterte Semantik für non-blocking und Optional Unterstützung für Parallelität.
Daten: SEIFE? XML? Sie möchten minimieren einem un-nötigen cpu-Zyklen. Was ist Los mit einfach mit JSon? (Und es ist keine göttliche diktieren, dass eine REST-Architektur basierende server nicht verwenden können binäre Daten in das Protokoll ...)
Inhalt: Wenn keine transformation von Daten (text, Zahl, zum Beispiel) beteiligt ist, müssen Sie auch überlegen, welche Sprache bietet die effizientesten Mechanismen. Als ein Beispiel, in Java (das ist ein sehr starker Kandidat für Sie, btw) der String-Klasse ist ein schwerer CPU-hog.
Java und Erlang sind sehr gute Kandidaten. C ist immer eine option, aber die Programmierung ist viel schwieriger.
InformationsquelleAutor der Antwort alphazero
Kann man wirklich jede Sprache durch CGI (Common Gateway Interface), so kommt es auf die Leistung. Unter den Sprachen, die Sie Liste, erwarte ich, dass C# am schnellsten. Einen guten Vergleich für die Geschwindigkeit der Sprachen untereinander ist Die Sprache Shootout
Wenn Sie wirklich müssen Leistung, die Sie vielleicht möchten Sie einen Blick in die Richtung, in der eine weitere performance-orientierte Sprache wie C oder D, um die Anfrage zu behandeln.
Es hängt alles davon ab, welche Art von Berechnung, jede Anfrage zu erfüllen haben wirklich.
InformationsquelleAutor der Antwort Zuu
Update: Its meant to be ein Feuer-und-vergessen-web-service. Ich denke ich werde Sie zurücksenden einen einfachen HTTP-200/OK-response -
Nein, das ist nicht gedacht zur Ausführung auf einer einzigen box. Seinen soll zunächst auf ein paar Boxen (sagen wir 3-4).
Wenn die Anfragen eingegangen sind, die Sie geschoben werden, um die Warteschlange, die auf anderen Maschinen, dann werden Sie genommen und in eine HBase/Voldemort-Shop.
Wie gesagt, seine bedeutete zu sein ein "fire-and-forget" - web-service -
InformationsquelleAutor der Antwort Ray Dookie
Benötigen Sie einen C-llike Sprache und vermeiden Sie das schreiben eines kompletten server würde ich vorschlagen, CGI (das ist, was php und ähnliches laufen alle über sowieso)
Windows-Server bieten ISAPI-plug-ins, aber diese laufen in dem Kontext des Servers, so dass memory-leaks und GPFs-nehmen Sie den server herunter. Hinzu kommt, dass die Unannehmlichkeiten beenden/starten Sie den server jedes mal, wenn Sie ändern etwas, CGI/FastCGI sieht besser aus.
InformationsquelleAutor der Antwort Mike Trader