2016-05-05 22 views
-1

Ich habe einen Client senden rund 500k Anfragen (Nachrichten)/min. Jede Nachricht wird etwa 200 Byte bis 2 KB umfassen. Jede Nachricht wird in einer Datenbank (wie Couchbase) gespeichert.Was ist die korrekte Struktur eines asynchronen TCP-Servers in Go?

Wie strukturiert man einen Go TCP-Server in Bezug auf Kerne, Ports, Verbindungen und Gououtines richtig, um diese Last zu bewältigen?

+0

Was haben Sie versucht? Das sind nicht viele Anfragen, also erstellen Sie einen Proof of Concept und testen Sie es. – JimB

Antwort

1

Wie JimB erwähnt, sollte ein TCP-Server nicht schwierig sein, aufzustehen und Benchmarking für Ihre Bedürfnisse zu starten. Ein einfaches Layout wäre, auf eingehende TCP-Verbindungen zu warten und dann eine Go-Routine auszuführen, um sie zu handhaben. In dieser Goroutine können Sie den gewünschten Sperrcode setzen, in diesem Fall einen Schreibzugriff auf eine DB. Hier ist ein Link auf ein einfaches Beispiel:

Simple example

Sobald Sie, dass die Arbeit, können Sie es anspruchsvoller, wenn es nicht Ihren Leistungsstandards erfüllen. Hier ist ein schönes Beispiel für die Verwendung eines Worker-Pools zur Verarbeitung von 1M HTTP-Anfragen pro Minute.

More sophisticated example

+0

Und wie kann ich X TCP Anfragen/min generieren? – Donovan