ในขอบเขตของการพัฒนาซอฟต์แวร์สมัยใหม่ ความต้องการแอปพลิเคชันประสิทธิภาพสูง ปรับขนาดได้ และตอบสนองเพิ่มมากขึ้นเรื่อยๆ การเขียนโปรแกรมเชิงโต้ตอบกำลังกลายเป็นกระบวนทัศน์อันทรงพลังในการตอบสนองข้อกำหนดเหล่านี้ และ Reactor Core ก็อยู่ในแนวหน้าของคลื่นลูกนี้ ในฐานะซัพพลายเออร์ชั้นนำของ Reactor Core ฉันตื่นเต้นที่จะแบ่งปันกับคุณถึงวิธีใช้ Reactor Core อย่างมีประสิทธิภาพใน RESTful API แบบโต้ตอบ
ทำความเข้าใจเกี่ยวกับแกนเครื่องปฏิกรณ์
Reactor Core เป็นไลบรารีเชิงโต้ตอบพื้นฐานสำหรับ JVM โดยอิงตามข้อกำหนด Reactive Streams โดยจัดเตรียมชุดของคลาสและตัวดำเนินการเพื่อสร้างแอปพลิเคชันแบบอะซิงโครนัส ไม่บล็อก และขับเคลื่อนด้วยเหตุการณ์ สองประเภทหลักใน Reactor Core คือ Mono และ Flux โมโนแสดงถึงสตรีมปฏิกิริยาที่ปล่อยองค์ประกอบ 0 หรือ 1 ซึ่งมีประโยชน์สำหรับสถานการณ์เช่นการจัดการผลลัพธ์เดียว เช่น การตอบสนองจากการสืบค้นฐานข้อมูลสำหรับบันทึกเดียว ในทางกลับกัน Flux แสดงถึงกระแสปฏิกิริยาที่สามารถปล่อย 0 ไปยังหลายองค์ประกอบ ทำให้เหมาะสำหรับกรณีเช่นการจัดการรายการผลลัพธ์จากฐานข้อมูล
นำเข้า reactor.core.publisher.Mono; นำเข้า reactor.core.publisher.Flux; // ตัวอย่างการสร้าง Mono Mono singleValueMono = Mono.just("Hello, Reactor"); // ตัวอย่างการสร้าง Flux Flux numberFlux = Flux.range(1, 10);
การตั้งค่า Reactive RESTful API ด้วย Spring WebFlux
Spring WebFlux เป็นเฟรมเวิร์กเว็บแบบโต้ตอบในระบบนิเวศของ Spring ที่ผสานรวมกับ Reactor Core ได้อย่างราบรื่น ในการเริ่มใช้ Reactor Core ใน RESTful API เราต้องตั้งค่าโปรเจ็กต์ Spring WebFlux ก่อน
ขั้นตอนที่ 1: สร้างโปรเจ็กต์ Spring Boot
คุณสามารถใช้ Spring Initializr (https://start.spring.io/) เพื่อสร้างโปรเจ็กต์ Spring Boot ใหม่ เลือก Spring WebFlux เป็นการพึ่งพา
ขั้นตอนที่ 2: กำหนดคอนโทรลเลอร์
มาสร้างตัวควบคุมง่ายๆ เพื่อสาธิตวิธีใช้ Mono และ Flux ใน RESTful API กันดีกว่า
นำเข้า org.springframework.web.bind.annotation.GetMapping; นำเข้า org.springframework.web.bind.annotation.RestController; นำเข้า reactor.core.publisher.Mono; นำเข้า reactor.core.publisher.Flux; @RestController คลาสสาธารณะ ReactiveController { @GetMapping("/single") สาธารณะ Mono getSingleValue() { return Mono.just("นี่คือค่าเดียวจาก API"); } @GetMapping("/multiple") Flux สาธารณะ getMultipleValues() { return Flux.just("ค่า 1", "ค่า 2", "ค่า 3"); } }
ในตัวอย่างนี้ จุดสิ้นสุด /single ส่งคืน Mono ที่แสดงถึงค่าสตริงเดียว จุดสิ้นสุด /multiple ส่งคืน Flux ที่ส่งค่าสตริงหลายค่า
![]()

ขั้นตอนที่ 3: เรียกใช้แอปพลิเคชัน
เมื่อคุณกำหนดคอนโทรลเลอร์แล้ว คุณก็สามารถรันแอปพลิเคชัน Spring Boot ได้ จากนั้นคุณสามารถใช้เครื่องมือเช่น cURL หรือบุรุษไปรษณีย์เพื่อทดสอบจุดสิ้นสุดได้
ขด http://localhost:8080/ขดเดียว http://localhost:8080/หลาย
การใช้ประโยชน์จากผู้ปฏิบัติงานหลักของเครื่องปฏิกรณ์
Reactor Core มีชุดตัวดำเนินการที่หลากหลายเพื่อจัดการกระแสปฏิกิริยา โอเปอเรเตอร์เหล่านี้สามารถใช้เพื่อแปลง กรอง รวม และดำเนินการอื่นๆ บนอ็อบเจ็กต์ Mono และ Flux
ผู้ประกอบการแปลงร่าง
ตัวดำเนินการแผนที่ใช้ในการแปลงแต่ละองค์ประกอบในสตรีม ตัวอย่างเช่น หากเรามีฟลักซ์ของจำนวนเต็มและเราต้องการยกกำลังสองตัวเลขแต่ละตัว:
หมายเลขฟลักซ์ = Flux.range(1, 5); Flux squaredNumbers = number.map (num -> num * num);
ตัวดำเนินการกรอง
ตัวดำเนินการตัวกรองใช้ในการกรององค์ประกอบในสตรีมตามภาคแสดง ตัวอย่างเช่น หากเราต้องการกรองเลขคู่ทั้งหมดออกจากฟลักซ์ของจำนวนเต็ม:
ฟลักซ์ allNumbers = Flux.range(1, 10); Flux OddNumbers = allNumbers.filter(num -> num % 2 != 0);
การรวมตัวดำเนินการ
ตัวดำเนินการ zip สามารถใช้เพื่อรวมองค์ประกอบจากหลายสตรีม สมมติว่าเรามีวัตถุ Flux สองวัตถุ อันหนึ่งมีชื่อและอีกวัตถุหนึ่งมีอายุ และเราต้องการสร้าง Flux ใหม่ด้วยข้อมูลที่รวมกัน:
ชื่อ Flux = Flux.just("Alice", "Bob", "Charlie"); อายุของฟลักซ์ = Flux.just(25, 30, 35); Flux รวมกัน = Flux.zip(ชื่อ, อายุ) .map(tuple -> tuple.getT1() + " is " + tuple.getT2() + " years old");
การจัดการข้อผิดพลาดในแกนเครื่องปฏิกรณ์
การจัดการข้อผิดพลาดเป็นส่วนสำคัญในการสร้างแอปพลิเคชันเชิงโต้ตอบที่มีประสิทธิภาพ Reactor Core มีหลายวิธีในการจัดการกับข้อผิดพลาดในสตรีมที่เกิดปฏิกิริยา
การใช้ onErrorReturn
ตัวดำเนินการ onErrorReturn ช่วยให้คุณสามารถส่งคืนค่าเริ่มต้นเมื่อมีข้อผิดพลาดเกิดขึ้นในสตรีม
Mono erroryMono = Mono.error (RuntimeException ใหม่ ("มีบางอย่างผิดพลาด")); โมโนกู้คืนMono = errorMono.onErrorReturn("ค่าเริ่มต้น");
การใช้ onErrorResume
โอเปอเรเตอร์ onErrorResume ช่วยให้คุณสามารถจัดเตรียมสตรีมทางเลือกเมื่อเกิดข้อผิดพลาด
ข้อผิดพลาดโมโนMono = Mono.error (RuntimeException ใหม่ ("ข้อผิดพลาดในสตรีม")); Mono fallbackMono = Mono.just("การตอบสนองทางเลือก"); Mono resumedMono = errorMono.onErrorResume (ข้อผิดพลาด -> fallbackMono);
แอปพลิเคชัน Reactor Core ในโลกแห่งความเป็นจริงใน RESTful API
Reactor Core สามารถเพิ่มประสิทธิภาพและการตอบสนองของ RESTful API ได้อย่างมากในสถานการณ์จริงต่างๆ
สูง - แอปพลิเคชั่นที่มีการรับส่งข้อมูล
ในแอปพลิเคชันที่ได้รับคำขอพร้อมกันจำนวนมาก การเขียนโปรแกรมแบบโต้ตอบด้วย Reactor Core สามารถจัดการคำขอเหล่านี้ได้อย่างมีประสิทธิภาพมากขึ้น ตัวอย่างเช่น ในแอปพลิเคชันอีคอมเมิร์ซ เมื่อมีผู้ใช้หลายคนส่งคำขอเพื่อดูรายละเอียดผลิตภัณฑ์พร้อมกัน RESTful API แบบโต้ตอบโดยใช้ Reactor Core สามารถจัดการคำขอเหล่านี้ได้โดยไม่ต้องบล็อกเธรดของเซิร์ฟเวอร์ จึงปรับปรุงปริมาณงานโดยรวม
สถาปัตยกรรมไมโครเซอร์วิส
ในสถาปัตยกรรมไมโครเซอร์วิส บริการต่างๆ มักจำเป็นต้องสื่อสารกันแบบอะซิงโครนัส Reactor Core สามารถใช้เพื่อสร้าง RESTful API แบบโต้ตอบสำหรับไมโครเซอร์วิสเหล่านี้ ตัวอย่างเช่น บริการผู้ใช้อาจจำเป็นต้องสื่อสารกับบริการสั่งซื้อเพื่อดึงข้อมูลคำสั่งซื้อ ด้วยการใช้ Reactor Core บริการผู้ใช้สามารถสร้างคำขอที่ไม่ปิดกั้นไปยังบริการสั่งซื้อและดำเนินการงานอื่น ๆ ต่อไปในขณะที่รอการตอบกลับ
เหตุใดจึงเลือกผลิตภัณฑ์หลักเครื่องปฏิกรณ์ของเรา
ในฐานะซัพพลายเออร์แกนเครื่องปฏิกรณ์ที่เชื่อถือได้ เรานำเสนอแกนเครื่องปฏิกรณ์คุณภาพสูงที่ออกแบบมาเพื่อตอบสนองความต้องการที่มีความต้องการมากที่สุด ของเราแกนเครื่องปฏิกรณ์สินค้าผลิตด้วยความแม่นยำและใช้วัสดุที่ทันสมัย เช่นแกนเหล็กเหล็กซิลิคอนซึ่งรับประกันคุณสมบัติทางแม่เหล็กที่ดีเยี่ยมและการสูญเสียพลังงานต่ำ
นอกจากนี้เรายังให้การสนับสนุนทางเทคนิคที่ครอบคลุมเพื่อช่วยให้คุณรวมแกนเครื่องปฏิกรณ์ของเราเข้ากับโครงการ RESTful API เชิงโต้ตอบของคุณ ไม่ว่าคุณจะเป็นสตาร์ทอัพที่ต้องการสร้างแอปพลิเคชันที่ปรับขนาดได้หรือองค์กรที่จัดตั้งขึ้นโดยมีเป้าหมายเพื่อปรับปรุงประสิทธิภาพของระบบที่มีอยู่ แกนเครื่องปฏิกรณ์ของเราคือตัวเลือกที่เหมาะสมที่สุด
ติดต่อเราเพื่อจัดซื้อจัดจ้าง
หากคุณสนใจผลิตภัณฑ์ Reactor Core ของเราและต้องการหารือเกี่ยวกับข้อกำหนดเฉพาะของคุณ เราขอแนะนำให้คุณติดต่อเรา ทีมผู้เชี่ยวชาญของเราพร้อมที่จะช่วยเหลือคุณในการหาทางออกที่ดีที่สุดสำหรับโครงการของคุณ เราเชื่อว่าด้วยแกนเครื่องปฏิกรณ์คุณภาพสูงและความคิดสร้างสรรค์ของคุณ เราสามารถสร้าง RESTful API ที่ตอบสนองประสิทธิภาพสูงร่วมกันได้
อ้างอิง
- เอกสารประกอบแกนเครื่องปฏิกรณ์
- เอกสาร Spring WebFlux
- รูปแบบการเขียนโปรแกรมเชิงโต้ตอบและแนวทางปฏิบัติที่ดีที่สุด
