หลายสาขาวิชาของการพัฒนาซอฟต์แวร์ได้ข้อสรุปเช่นเดียวกัน พวกเขากำลังสร้างระบบที่ตอบสนองต่อความต้องการบริการที่ทันสมัย บริการแบบโต้ตอบใช้งานได้ถึงประกาศปฏิกิริยา บริการเชิงโต้ตอบถูกสร้างขึ้นให้แข็งแกร่ง ยืดหยุ่น ยืดหยุ่น และเขียนด้วยฮาร์ดแวร์ที่ทันสมัย ​​เวอร์ชวลไลเซชั่น เว็บไคลเอนต์ที่สมบูรณ์ และไคลเอนต์มือถือ

Reactive Manifesto สรุปคุณสมบัติของระบบปฏิกิริยาตามหลักการสี่ประการ: ตอบสนอง ยืดหยุ่น ยืดหยุ่น และขับเคลื่อนด้วยข้อความ

การตอบสนองหมายความว่าบริการควรตอบสนองอย่างทันท่วงที และอย่าปล่อยให้ลูกค้าหรือบริการต้นน้ำค้าง ความล้มเหลวของระบบไม่ควรทำให้เกิดปฏิกิริยาลูกโซ่ของความล้มเหลว ความล้มเหลวของระบบดาวน์สตรีมอาจทำให้การตอบสนองลดลง แต่การตอบสนองกลับไม่เป็นเช่นนั้น

ความยืดหยุ่นสอดคล้องกับการตอบสนอง ระบบควรตอบสนองแม้เมื่อเผชิญกับความล้มเหลวและข้อผิดพลาดในเวลาที่เหมาะสม สามารถตอบสนองได้เนื่องจากสามารถตรวจพบการตอบสนองแบบอะซิงโครนัสไม่กลับมาทันเวลาและให้บริการการตอบสนองที่ลดลง (ตัวตัดวงจร) อาจตอบสนองได้แม้จะล้มเหลวเนื่องจากสามารถใช้โหนดดาวน์สตรีมที่ล้มเหลวในเวอร์ชันที่จำลองแบบ ความล้มเหลวและการกู้คืนถูกสร้างขึ้นในระบบ การตรวจสอบและการสร้างอินสแตนซ์ใหม่เพื่อช่วยในการกู้คืนอาจถูกมอบหมายไปยังทรัพยากรอื่นที่มีความพร้อมใช้งานสูง องค์ประกอบสำคัญของความยืดหยุ่นคือความสามารถในการตรวจสอบโหนดที่ดีที่รู้จักและดำเนินการค้นหาบริการเพื่อค้นหาบริการต้นน้ำและปลายน้ำทางเลือก

ความยืดหยุ่นทำงานร่วมกับความยืดหยุ่น ความสามารถในการขยายบริการใหม่ๆ และสำหรับบริการดาวน์สตรีมและอัพสตรีม และไคลเอนต์ในการค้นหาอินสแตนซ์ใหม่นั้นมีความสำคัญต่อทั้งความยืดหยุ่นของระบบและความยืดหยุ่นของระบบ ระบบรีแอกทีฟสามารถตอบสนองต่อการเปลี่ยนแปลงของโหลดได้โดยการหมุนบริการต่างๆ เพื่อแบ่งโหลด ลองนึกภาพชุดบริการสำหรับเกมฟุตบอลอาชีพที่แสดงสถิติแบบเรียลไทม์ ระหว่างเล่นเกม คุณอาจต้องหมุนบริการต่างๆ มากมาย ในช่วงที่ไม่ใช่เกม คุณอาจต้องการบริการเหล่านี้เพียงเล็กน้อย ระบบปฏิกิริยาเป็นระบบที่สามารถเพิ่มและลดทรัพยากรตามความต้องการ เช่นเดียวกับความยืดหยุ่น Service Discovery ช่วยให้มีความยืดหยุ่นเนื่องจากมีกลไกสำหรับบริการต้นน้ำและปลายน้ำและลูกค้าในการค้นพบโหนดใหม่เพื่อให้สามารถกระจายโหลดได้ทั่วบริการ

ขับเคลื่อนด้วยข้อความ: ระบบปฏิกิริยาต้องอาศัยการส่งข้อความแบบอะซิงโครนัส ขอบเขตที่กำหนดไว้นี้ระหว่างบริการ (in-proc และ out of proc) ซึ่งอนุญาตให้มีการเชื่อมต่อแบบหลวม (เผยแพร่/สมัครสมาชิกหรือ async สตรีมหรือการโทรแบบ async) การแยก (ความล้มเหลวหนึ่งครั้งไม่กระเพื่อมผ่านไปยังบริการอัปสตรีมและไคลเอนต์) และข้อผิดพลาดที่ตอบสนองที่ดีขึ้น การจัดการ การมีข้อความช่วยให้สามารถควบคุมปริมาณงาน (เปลี่ยนเส้นทาง ขยายบริการเพิ่มเติม) โดยใช้แรงดันย้อนกลับและใช้เหตุการณ์แรงดันย้อนกลับเพื่อกระตุ้นการเปลี่ยนแปลงเพื่อกำหนดรูปแบบการรับส่งข้อมูลผ่านคิว การส่งข้อความช่วยให้จัดการการตอบกลับได้โดยไม่ปิดกั้น

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

มีหัวข้อที่เกี่ยวข้องกันของการเขียนโปรแกรมเชิงโต้ตอบและการเขียนโปรแกรมเชิงโต้ตอบเชิงหน้าที่ซึ่งเกี่ยวข้องกับแถลงการณ์เชิงโต้ตอบ ระบบสามารถเป็นระบบปฏิกิริยาและไม่ใช้รูปแบบการเขียนโปรแกรมเชิงโต้ตอบ การเขียนโปรแกรมเชิงโต้ตอบมักใช้เพื่อประสานงานการเรียกแบบอะซิงโครนัสไปยังบริการต่างๆ รวมทั้งเหตุการณ์และสตรีมจากไคลเอ็นต์และระบบอื่นๆ

ตัวอย่าง: ลูกค้าเรียกใช้บริการ Z บริการ Z เรียกใช้บริการ A และ บริการ B แต่ส่งกลับเฉพาะผลลัพธ์รวมของบริการ A และบริการ C ผลลัพธ์ของบริการ B ใช้เพื่อเรียกใช้บริการ C ดังนั้น Z ต้องเรียก A, B นำผลลัพธ์ของ B และเรียก C จากนั้นส่งคืน A/C รวมกันกลับไปที่ไคลเอนต์ และการโทรทั้งหมดเหล่านี้ต้องเป็นการโทรแบบอะซิงโครนัสและไม่มีการบล็อก แต่เราควรจะสามารถจัดการกับข้อผิดพลาดสำหรับ A, B หรือ C และจัดการการหมดเวลาเพื่อให้ไคลเอ็นต์ไม่แฮงค์เมื่อ Z เรียกใช้บริการดาวน์สตรีม การประสานการเรียกใช้บริการต่างๆ จำเป็นต้องมีการประสานงานด้านโปรแกรมเชิงโต้ตอบบางอย่าง กรอบงาน เช่น RxJava, RxJS เป็นต้น ได้รับการออกแบบมาเพื่อให้โมเดลการเขียนโปรแกรม Object Reactive เพื่อให้ทำงานได้ดีขึ้นในสภาพแวดล้อมที่มีเหตุการณ์ สตรีม และการโทรแบบอะซิงโครนัส

QBit ยังมีคลาส Reactor เพื่อประสานงานการโทรแบบอะซิงโครนัสโดยใช้การเขียนโปรแกรมเชิงโต้ตอบและใช้นิพจน์ Java 8 Lambda เพื่อช่วยในความพยายามนี้ QBit หรือ Java microservice lib เป็นสภาพแวดล้อมการเขียนโปรแกรมเชิงโต้ตอบแรกของ Java ที่เน้นที่เหตุการณ์ การค้นพบบริการ และไมโครเซอร์วิส มันใช้รูปแบบวัตถุที่ใช้งานอยู่ซึ่งคล้ายกับนักแสดงประเภท Akka ซึ่งเป็นบริการที่อยู่เบื้องหลังชุดของคิวเพื่อจัดการเหตุการณ์การเรียกใช้เมธอดการตอบกลับการโทรกลับ ฯลฯ บริการเหล่านี้มีความโปร่งใสของตำแหน่งเนื่องจากสามารถดำเนินการได้ บนโหนดเซิร์ฟเวอร์อื่นผ่าน WebSocket หรือบัสเหตุการณ์ ความยืดหยุ่นมาจากการจำลองแบบซึ่งสามารถทำได้โดยง่ายด้วยการค้นพบบริการและ