Redant es un contenedor web liviano con sede en Netty
característica:
Redant es un contenedor web con sede en Netty, similar a Tomcat y WebLogic.
Solo necesita iniciar un servidor y la clase de implementación predeterminada es NettyhttPserver para iniciar rápidamente un contenedor web, como se muestra a continuación:
public final class ServerBootstrap {
public static void main ( String [] args ) {
Server nettyServer = new NettyHttpServer ();
// 各种初始化工作
nettyServer . preStart ();
// 启动服务器
nettyServer . start ();
}
}Hasta ahora, he descrito todo el modo de nodo único. Si el rendimiento de un nodo único no se puede cumplir en un día, entonces necesito usar un clúster, por lo que también he implementado el modo de clúster.
El modo de clúster está compuesto por un nodo maestro y varios nodos de esclavos. Después de recibir la solicitud, el nodo maestro reenvía la solicitud al nodo esclavo para su procesamiento. El nodo esclavo devuelve el resultado procesado al nodo maestro, y el nodo maestro responde al resultado a la solicitud.
Para implementar el modelo de clúster, necesitamos tener una función de registro y descubrimiento de servicios. Actualmente, utilizamos ZK para hacer el registro de servicios y el descubrimiento.
Debido a que el nodo maestro necesita reenviar la solicitud al nodo esclavo, el nodo maestro debe saber qué nodos de esclavos están actualmente allí. Utilizo Zookeeper para implementar el registro y el descubrimiento del servicio.
Si no tiene un servidor ZK disponible, puede iniciar un servidor ZOOKEEPER ejecutando el siguiente método principal:
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 esta manera, puede usar este ZK al comenzar el nodo maestro y esclavo más tarde. Pero esto no es necesario. Si ya tiene un servidor ZK en ejecución, puede usarlo directamente al iniciar el nodo maestro y esclavo, especificando la dirección de ZK en los parámetros del método principal.
Simplemente ejecute el siguiente código para iniciar un nodo maestro:
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 la dirección ZK se especifica en los parámetros del método principal, el descubrimiento del servicio se realizará a través de esta dirección; de lo contrario, se utilizará la dirección ZK predeterminada.
Simplemente ejecute el siguiente código para iniciar un nodo esclavo:
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 la dirección ZK se especifica en los parámetros del método principal, el registro del servicio se llevará a cabo a través de esta dirección; de lo contrario, se utilizará la dirección ZK predeterminada.
Puede probarlo ejecutando el ejemplo proporcionado en el módulo Redant-Ejemplo, que tiene dos controladores integrados en el módulo de ejemplo.
Después de comenzar, puede visitar http://127.0.0.1:8888 en su navegador para ver los efectos específicos (el puerto predeterminado se puede modificar en redant.properties)
Si ve un mensaje como este: "¡Bienvenido a Redant!", Significa que ha comenzado con éxito.
En el módulo de ejemplo de redant, las siguientes rutas predeterminadas están integradas:
| Tipo de método | Url | Tipo de respuesta |
|---|---|---|
| CONSEGUIR | / | Html |
| * | * | Html |
| CONSEGUIR | /usuario/recuento | Json |
| CONSEGUIR | /usuario/lista | Json |
| CONSEGUIR | /usuario/información | Json |
Al igual que Spring, puede administrar todos los objetos a través de la anotación de @Bean y inyectarlos automáticamente a través de @aUtowired.
Consejos: Para más información, consulte Wiki: Bean
Al igual que Spring, puede personalizar un controlador a través de @Controller.
La anotación de @mapping se usa en el nivel de método, @Controller + @mapping solo define una solicitud HTTP.
La anotación @param se usa en los parámetros del método. Esta anotación le permite convertir automáticamente el tipo básico en un objeto POJO.
Consejos: Para más información, consulte Wiki: Router
El Administrador de cookies puede administrar cookies definidas por el usuario.
Consejos: Para obtener más información, consulte Wiki: Cookies
wh_all4you#hotmail.com
