Redant est un conteneur Web léger basé sur un réseau
caractéristiques:
Redant est un conteneur Web basé sur un réseau, similaire à Tomcat et WebLogic.
Il vous suffit de démarrer un serveur et la classe d'implémentation par défaut est NetTyHTTPServer pour démarrer rapidement un conteneur Web, comme indiqué ci-dessous:
public final class ServerBootstrap {
public static void main ( String [] args ) {
Server nettyServer = new NettyHttpServer ();
// 各种初始化工作
nettyServer . preStart ();
// 启动服务器
nettyServer . start ();
}
}Jusqu'à présent, j'ai décrit tout le mode à un nœud. Si les performances d'un seul nœud ne peuvent pas être respectées un jour, j'ai besoin d'utiliser un cluster, j'ai donc également implémenté le mode de cluster.
Le mode de cluster est composé d'un nœud maître et de plusieurs nœuds esclaves. Après avoir reçu la demande, le nœud maître transmet la demande au nœud esclave pour le traitement. Le nœud esclave renvoie le résultat traité au nœud maître et le nœud maître répond au résultat à la demande.
Pour implémenter le modèle de cluster, nous devons avoir une fonction d'enregistrement de service et de découverte. Actuellement, nous utilisons ZK pour effectuer l'enregistrement des services et la découverte.
Étant donné que le nœud maître doit transmettre la demande au nœud esclave, le nœud maître doit savoir quels nœuds esclaves sont actuellement là. J'utilise Zookeeper pour implémenter l'enregistrement et la découverte des services.
Si vous n'avez pas de serveur ZK disponible, vous pouvez démarrer un serveur Zookeeper en exécutant la méthode principale suivante:
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 );
}
}
}De cette façon, vous pouvez utiliser ce ZK lors du démarrage du nœud maître et esclave plus tard. Mais ce n'est pas nécessaire. Si vous avez déjà un serveur ZK en cours d'exécution, vous pouvez l'utiliser directement lors du démarrage du nœud maître et esclave, en spécifiant l'adresse de ZK dans les principaux paramètres de la méthode.
Exécutez simplement le code suivant pour démarrer un nœud maître:
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 ();
}
}Si l'adresse ZK est spécifiée dans les principaux paramètres de la méthode, la découverte de service sera effectuée via cette adresse, sinon l'adresse ZK par défaut sera utilisée.
Exécutez simplement le code suivant pour démarrer un nœud esclave:
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 ();
}
}Si l'adresse ZK est spécifiée dans les principaux paramètres de la méthode, l'enregistrement de service sera effectué via cette adresse, sinon l'adresse ZK par défaut sera utilisée.
Vous pouvez l'essayer en exécutant l'exemple fourni dans le module Redant-Example, qui a deux contrôleurs intégrés dans le module d'exemple.
Après le début, vous pouvez visiter http://127.0.0.1:8888 dans votre navigateur pour afficher les effets spécifiques (le port par défaut peut être modifié dans Redant.Properties)
Si vous voyez un message comme ceci: "Bienvenue à Redant!", Cela signifie que vous avez commencé avec succès.
Dans le module d'exemple redant, les routes par défaut suivantes sont intégrées:
| Type de méthode | URL | Type de réponse |
|---|---|---|
| OBTENIR | / / | Html |
| * | * | Html |
| OBTENIR | / utilisateur / compte | Json |
| OBTENIR | / utilisateur / liste | Json |
| OBTENIR | / utilisateur / info | Json |
Comme le printemps, vous pouvez gérer tous les objets via @Bean Annotation et les injecter automatiquement via @Autowired.
Conseils: Pour plus d'informations, veuillez vérifier le wiki: Bean
Comme Spring, vous pouvez personnaliser un contrôleur via @Controller.
@Mapping Annotation est utilisé au niveau de la méthode, @Controller + @Mapping définit uniquement une demande HTTP.
L'annotation @param est utilisée sur les paramètres de la méthode. Cette annotation vous permet de convertir automatiquement le type de base en un objet PoJo.
Conseils: Pour plus d'informations, veuillez consulter Wiki: Router
Le gestionnaire de cookies peut gérer les cookies définis par l'utilisateur.
Conseils: Pour plus d'informations, veuillez consulter le wiki: cookies
wh_all4you # hotmail.com
