การควบคุมคำขอ HTTP ขาออก

ฉันใช้ vert.x เป็นเซิร์ฟเวอร์เพื่อรับคำขอค้นหาซึ่งจากนั้นจะถูกประมวลผลบนเซิร์ฟเวอร์ไปยังคำขอ HTTP ขาออกหลายรายการไปยังบริการภายนอกต่างๆ

สำหรับพฤติกรรมแบบอะซิงโครนัส ฉันเลือกใช้ RxJava โดยใช้ไคลเอ็นต์ http ดั้งเดิมของ Vert.x

บริการที่ฉันใช้จำกัดการโทรสูงสุด 1 ครั้งต่อวินาที

อะไรจะเป็นวิธีที่ดีที่สุด/ง่ายที่สุดในการควบคุมคำขอขาออกของ NIO HTTP

  1. ในสภาพแวดล้อมเซิร์ฟเวอร์เดียว
  2. ในสภาพแวดล้อมเซิร์ฟเวอร์แบบคลัสเตอร์

person Yaniv Cohen    schedule 27.10.2016    source แหล่งที่มา
comment
คุณช่วยแสดงรหัสหน่อยได้ไหม? ฉันไม่เข้าใจว่าทำไมคุณถึงตอบโต้อย่างเต็มที่หากคุณมีปัญหาคอขวดเพียงวินาทีเดียว?   -  person Hans Wurst    schedule 27.10.2016
comment
ฉันใช้ RxJava เพราะดูเหมือนว่าจะเป็นโซลูชันที่สมบูรณ์กว่าสำหรับการเขียนโปรแกรมเชิงฟังก์ชันแบบอะซิงโครนัสมากกว่า API ในอนาคตหรือตามสัญญา   -  person Yaniv Cohen    schedule 29.10.2016


คำตอบ (1)


ในเซิร์ฟเวอร์เดียว แนวทางที่ไร้เดียงสาในการแก้ปัญหาของคุณคือ:

  1. พุชคำขอบวกกับตัวจัดการผลลัพธ์ไปที่คิว
  2. มีตัวจัดการเป็นระยะที่ดึงองค์ประกอบออกจากคิวทุกๆ วินาทีและดำเนินการตามคำขอ
  3. เรียกตัวจัดการผลลัพธ์พร้อมกับผลลัพธ์หรือข้อผิดพลาด

ในลักษณะคลัสเตอร์ คุณสามารถขยายแนวคิดก่อนหน้านี้และรวมไว้บนที่อยู่บัสเหตุการณ์ได้ ดังนั้นมันจะเป็นดังนี้:

  1. ส่งข้อความไปยังที่อยู่พร้อมกับคำขอและตั้งค่าตัวจัดการการตอบกลับ
  2. บริการจะทำงานตามคำอธิบายก่อนหน้านี้
  3. แทนที่จะเรียกตัวจัดการ บริการจะใช้ตัวจัดการการตอบกลับข้อความเพื่อส่งผลลัพธ์
person Paulo Lopes    schedule 28.10.2016
comment
ขอบคุณเปาโลสำหรับคำตอบของคุณ เกี่ยวกับส่วนคลัสเตอร์ของคำตอบ ฉันจะต้องควบคุมอัตราการใช้ของคิวบัสข้อความนั้นให้ตรงกับขีดจำกัดอัตราการโทรออก - person Yaniv Cohen; 29.10.2016