Reaktormuster
Reaktionen im Gerätemodus können bisher nicht vermieden werden. Viele bekannte Serversoftware oder Middleware werden basierend auf dem Reaktormodus implementiert, wie z. B. Nginx, Redis und Netty.
Das Reaktormuster ist ein Muss und ein Muss für die Hochleistungsnetzwerkprogrammierung.
Einführung in den Reaktor
Der Reaktormodus besteht aus zwei Hauptrollen: Reaktor-Reaktor-Thread und Handler-Prozessor:
(1) Reaktor Verantwortlichkeiten des Reaktorthreads: Verantwortlich für die Reaktion auf E/A-Ereignisse und deren Verteilung an Handler-Prozessoren.
(2) Verantwortung des Prozessors des Handlers: nicht blockierende Ausführung der Geschäftsverarbeitungslogik.
Aus der obigen Definition des Reaktormusters erkennen wir nichts Magisches an diesem Muster. Natürlich gibt es viele Versionen des Reaktormusters, von einfach bis komplex. Nach der bisherigen Definition handelt es sich lediglich um die einfachste Variante.
Fataler Fehler bei Multithread-OIO
In der OIO-Programmierung von Java verwendet das erste und primitivste Netzwerkserverprogramm eine While-Schleife, um den Port kontinuierlich zu überwachen für neue Verbindungen. Wenn ja, rufen Sie eine Verarbeitungsfunktion auf, um sie abzuschließen. Der Beispielcode lautet wie folgt:
@Test public void client() throws IOException { Socket client = new Socket("127.0.0.1", 9999); Writer writer = new OutputStreamWriter(client.getOutputStream()); writer.write("Hello World"); writer.flush(); writer.close(); client.close(); } @Test public void server() throws IOException { ServerSocket server = new ServerSocket(9999); while (true){ Socket socket = server.accept(); Reader reader = new InputStreamReader(socket.getInputStream()); print(reader); reader.close(); socket.close(); server.close(); } }
Das größte Problem bei dieser Methode ist: Wenn das Handle (Socket) der vorherigen Netzwerkverbindung nicht verarbeitet wurde, dann Die nachfolgende Verbindungsanforderung kann nicht empfangen werden, sodass alle nachfolgenden Anforderungen blockiert werden und der Durchsatz des Servers zu niedrig ist. Für Server ist dies ein ernstes Problem.
Empfohlenes Tutorial: „Java“
Das obige ist der detaillierte Inhalt vonJava-Reaktor-Reaktormuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!