Redant เป็นเว็บคอนเทนเนอร์ที่มีน้ำหนักเบาบนตาข่าย
ลักษณะ:
Redant เป็นเว็บคอนเทนเนอร์ที่ใช้ Netty ซึ่งคล้ายกับ Tomcat และ Weblogic
คุณจะต้องเริ่มต้นเซิร์ฟเวอร์และคลาสการใช้งานเริ่มต้นคือ NetTyHttpServer เพื่อเริ่มต้นเว็บคอนเทนเนอร์อย่างรวดเร็วดังที่แสดงด้านล่าง:
public final class ServerBootstrap {
public static void main ( String [] args ) {
Server nettyServer = new NettyHttpServer ();
// 各种初始化工作
nettyServer . preStart ();
// 启动服务器
nettyServer . start ();
}
}จนถึงตอนนี้ฉันได้อธิบายโหมดโหนดเดียวทั้งหมด หากประสิทธิภาพของโหนดเดียวไม่สามารถพบได้ในหนึ่งวันฉันต้องใช้คลัสเตอร์ดังนั้นฉันจึงใช้โหมดคลัสเตอร์ด้วย
โหมดคลัสเตอร์ประกอบด้วยโหนดหลักและโหนดทาสหลายโหนด หลังจากได้รับคำขอโหนดหลักส่งต่อคำขอไปยังโหนดทาสสำหรับการประมวลผล โหนดทาสส่งคืนผลลัพธ์ที่ประมวลผลไปยังโหนดหลักและโหนดหลักตอบกลับผลลัพธ์ไปยังคำขอ
ในการใช้โมเดลคลัสเตอร์เราจำเป็นต้องมีฟังก์ชั่นการลงทะเบียนและการค้นพบบริการ ขณะนี้เราใช้ ZK เพื่อทำการลงทะเบียนบริการและการค้นพบ
เนื่องจากโหนดหลักจำเป็นต้องส่งต่อการร้องขอไปยังโหนดทาสโหนดหลักจึงจำเป็นต้องรู้ว่ามีโหนดทาสใดบ้าง ฉันใช้ Zookeeper เพื่อใช้การลงทะเบียนและการค้นพบบริการ
หากคุณไม่มีเซิร์ฟเวอร์ ZK คุณสามารถเริ่มเซิร์ฟเวอร์ Zookeeper โดยใช้วิธีหลักต่อไปนี้:
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 );
}
}
}วิธีนี้คุณสามารถใช้ ZK นี้เมื่อเริ่มต้น Master และ Slave Node ในภายหลัง แต่สิ่งนี้ไม่จำเป็น หากคุณมีเซิร์ฟเวอร์ ZK ที่รันอยู่แล้วคุณสามารถใช้โดยตรงเมื่อเริ่มต้นโหนดหลักและ Slave โดยระบุที่อยู่ของ ZK ในพารามิเตอร์วิธีหลัก
เพียงเรียกใช้รหัสต่อไปนี้เพื่อเริ่มโหนดหลัก:
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 ();
}
}หากระบุที่อยู่ ZK ในพารามิเตอร์วิธีหลักการค้นหาบริการจะดำเนินการผ่านที่อยู่นี้มิฉะนั้นจะใช้ที่อยู่ ZK เริ่มต้น
เพียงเรียกใช้รหัสต่อไปนี้เพื่อเริ่มโหนดทาส:
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 ();
}
}หากระบุที่อยู่ ZK ในพารามิเตอร์วิธีหลักการลงทะเบียนบริการจะดำเนินการผ่านที่อยู่นี้มิฉะนั้นจะใช้ที่อยู่ ZK เริ่มต้น
คุณสามารถลองได้โดยเรียกใช้ตัวอย่างที่ให้ไว้ในโมดูล Redant-Example ซึ่งมีตัวควบคุมสองตัวที่สร้างไว้ในโมดูลตัวอย่าง
หลังจากเริ่มต้นคุณสามารถเยี่ยมชม http://127.0.0.1:8888 ในเบราว์เซอร์ของคุณเพื่อดูเอฟเฟกต์เฉพาะ (พอร์ตเริ่มต้นสามารถแก้ไขได้ใน redant.properties)
หากคุณเห็นข้อความเช่นนี้: "ยินดีต้อนรับสู่ Redant!" หมายความว่าคุณเริ่มประสบความสำเร็จแล้ว
ในโมดูล Redant-Example เส้นทางเริ่มต้นต่อไปนี้จะถูกสร้างขึ้นใน:
| ประเภทวิธีการ | url | ประเภทการตอบสนอง |
|---|---|---|
| รับ | - | HTML |
| - | - | HTML |
| รับ | /ผู้ใช้/นับ | JSON |
| รับ | /ผู้ใช้/รายการ | JSON |
| รับ | /ผู้ใช้/ข้อมูล | JSON |
เช่นเดียวกับฤดูใบไม้ผลิคุณสามารถจัดการวัตถุทั้งหมดผ่านคำอธิบายประกอบ @Bean และฉีดผ่าน @autowired โดยอัตโนมัติ
เคล็ดลับ: สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบ wiki: ถั่ว
เช่นเดียวกับฤดูใบไม้ผลิคุณสามารถปรับแต่งคอนโทรลเลอร์ผ่าน @Controller
@mapping คำอธิบายประกอบถูกใช้ในระดับวิธี @controller + @mapping จะกำหนดคำขอ HTTP เท่านั้น
@Param คำอธิบายประกอบถูกใช้กับพารามิเตอร์ของวิธีการ คำอธิบายประกอบนี้ช่วยให้คุณสามารถแปลงประเภทพื้นฐานเป็นวัตถุ POJO โดยอัตโนมัติ
เคล็ดลับ: สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบ wiki: เราเตอร์
ตัวจัดการคุกกี้สามารถจัดการคุกกี้ที่ผู้ใช้กำหนด
เคล็ดลับ: สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบ wiki: คุกกี้
wh_all4you#hotmail.com
