Redant ist ein nettybasierter leichter Webcontainer
Merkmal:
Redant ist ein Netty-basierter Webcontainer, ähnlich wie Tomcat und Weblogic.
Sie müssen nur einen Server starten, und die Standard -Implementierungsklasse ist NettyHttpServer, um schnell einen Webcontainer zu starten, wie unten gezeigt:
public final class ServerBootstrap {
public static void main ( String [] args ) {
Server nettyServer = new NettyHttpServer ();
// 各种初始化工作
nettyServer . preStart ();
// 启动服务器
nettyServer . start ();
}
}Bisher habe ich den gesamten einzelnen Knotenmodus beschrieben. Wenn die Leistung eines einzelnen Knotens an einem Tag nicht erfüllt werden kann, muss ich einen Cluster verwenden, sodass ich auch den Clustermodus implementiert habe.
Der Cluster -Modus besteht aus einem Masterknoten und mehreren Sklavenknoten. Nach Erhalt der Anfrage leitet der Masterknoten die Anforderung zur Verarbeitung an den Slaveknoten weiter. Der Sklavenknoten gibt das verarbeitete Ergebnis an den Masterknoten zurück, und der Masterknoten reagiert auf das Ergebnis der Anforderung.
Um das Clustermodell zu implementieren, müssen wir eine Serviceregistrierung und Erkennungsfunktion haben. Derzeit verwenden wir ZK, um die Registrierung und Entdeckung von Dienstleistungen durchzuführen.
Da der Masterknoten die Anforderung an den Sklavenknoten weiterleiten muss, muss der Masterknoten wissen, welche Sklavenknoten derzeit vorhanden sind. Ich benutze Zookeeper, um die Serviceregistrierung und -Inalation zu implementieren.
Wenn Sie keinen ZK -Server zur Verfügung haben, können Sie einen Zookeeper -Server starten, indem Sie die folgende Hauptmethode ausführen:
public final class ZkBootstrap {
private static final Logger LOGGER = LoggerFactory . getLogger ( ZkBootstrap . class );
public static void main ( String [] args ) {
try {
ZkServer zkServer = new ZkServer ();
zkServer . startStandalone ( ZkConfig . DEFAULT );
} catch ( Exception e ){
LOGGER . error ( "ZkBootstrap start failed,cause:" , e );
System . exit ( 1 );
}
}
}Auf diese Weise können Sie diesen ZK verwenden, wenn Sie den Master- und Sklavenknoten später starten. Aber das ist nicht notwendig. Wenn Sie bereits über einen laufenden ZK -Server verfügen, können Sie ihn direkt verwenden, wenn Sie den Master- und Slave -Knoten starten, indem Sie die Adresse von ZK in den Hauptmethodenparametern angeben.
Führen Sie einfach den folgenden Code aus, um einen Masterknoten zu starten:
public class MasterServerBootstrap {
public static void main ( String [] args ) {
String zkAddress = ZkServer . getZkAddressArgs ( args , ZkConfig . DEFAULT );
// 启动MasterServer
Server masterServer = new MasterServer ( zkAddress );
masterServer . preStart ();
masterServer . start ();
}
}Wenn die ZK -Adresse in den Hauptmethodenparametern angegeben ist, wird die Serviceerkennung über diese Adresse durchgeführt, andernfalls wird die Standard -ZK -Adresse verwendet.
Führen Sie einfach den folgenden Code aus, um einen Sklavenknoten zu starten:
public class SlaveServerBootstrap {
public static void main ( String [] args ) {
String zkAddress = ZkServer . getZkAddressArgs ( args , ZkConfig . DEFAULT );
Node node = Node . getNodeWithArgs ( args );
// 启动SlaveServer
Server slaveServer = new SlaveServer ( zkAddress , node );
slaveServer . preStart ();
slaveServer . start ();
}
}Wenn die ZK -Adresse in den Hauptmethodenparametern angegeben ist, wird die Dienstregistrierung über diese Adresse durchgeführt, andernfalls wird die Standard -ZK -Adresse verwendet.
Sie können es versuchen, indem Sie das im Modul Redant-Example angegebene Beispiel ausführen, in dem zwei Controller in das Beispielmodul integriert sind.
Nach dem Start können Sie http://127.0.0.1:8888 in Ihrem Browser besuchen, um die spezifischen Effekte anzuzeigen (der Standardport kann in redant.Properties geändert werden)
Wenn Sie eine Nachricht wie folgt sehen: "Willkommen bei Redant!", Bedeutet dies, dass Sie erfolgreich angefangen haben.
Im Modul des Redant-Beispiels sind die folgenden Standardrouten integriert:
| Methodentyp | URL | Antworttyp |
|---|---|---|
| ERHALTEN | / | Html |
| * | * | Html |
| ERHALTEN | /Benutzer/Graf | JSON |
| ERHALTEN | /Benutzer/Liste | JSON |
| ERHALTEN | /Benutzer/Info | JSON |
Wie bei Frühling können Sie alle Objekte über @Bean Annotation verwalten und sie automatisch über @autowired injizieren.
Tipps: Weitere Informationen finden Sie in Wiki: Bean: Bean
Wie bei Frühling können Sie einen Controller über @Controller anpassen.
@Mapping Annotation wird auf Methodenebene verwendet, @Controller + @Mapping definiert nur eine HTTP -Anforderung.
@Param Annotation wird für die Parameter der Methode verwendet. Mit dieser Annotation können Sie den Basistyp automatisch in ein Pojo -Objekt umwandeln.
Tipps: Weitere Informationen finden Sie in Wiki: Router
Der Cookie-Manager kann benutzerdefinierte Cookies verwalten.
Tipps: Weitere Informationen finden Sie in Wiki: Cookies
wh_all4you#hotmail.com
