ทั้งคู่ดูเหมือนเครือข่าย MPI ที่สื่อสารกันแบบขนานของกระบวนการ ฉันระบุนักแสดงด้วยบริการ นักแสดงมีพลังมากขึ้น (คุณสามารถสร้างและฆ่าขณะหายใจขณะที่เครือข่ายบริการคงที่มากกว่า) หรืออะไร
ทั้งคู่ดูเหมือนเครือข่าย MPI ที่สื่อสารกันแบบขนานของกระบวนการ ฉันระบุนักแสดงด้วยบริการ นักแสดงมีพลังมากขึ้น (คุณสามารถสร้างและฆ่าขณะหายใจขณะที่เครือข่ายบริการคงที่มากกว่า) หรืออะไร
คำตอบ:
นักแสดงรุ่น - เป็นแบบจำลองทางคณิตศาสตร์สำหรับการคำนวณพร้อมกันและ microservices - การดำเนินงานของสถาปัตยกรรมที่มุ่งเน้นบริการ ความคล้ายคลึงกันค่อนข้างบังเอิญ
แน่นอนว่าเป็นไปได้ที่จะสร้าง microservices ตามโมเดลนักแสดงบางคนและโมเดลสถาปัตยกรรมไมโครเซอร์วิสบางอย่างกับ model model แต่ไม่ได้หมายความว่าสิ่งเหล่านี้เทียบเท่ากัน แทนที่ "ระบบไมโครบริการ" ด้วย "ระบบอีเมล" และจะยังคงเป็นจริง แทนที่ "นักแสดงนางแบบ" ด้วย "กระบวนการสื่อสารตามลำดับ" (CSP) และมันก็จะเป็น "จริง" เพราะ CSP และระบบนางแบบนักแสดงสามารถเป็นแบบอย่างกันได้
จากโมเดลนักแสดงคุณสามารถไปและนำไปใช้งานได้โดยใช้ microservices หรือ SOA หรือแม้กระทั่งอีเมล แต่ก็ไม่ได้หมายความว่าพวกเขาอยู่ในระดับเดียวกับสิ่งที่เป็นนามธรรมเพื่อเปรียบเทียบอย่างแท้จริง
นอกจากนี้รูปแบบนักแสดงเน้นบัฟเฟอร์ (อาจถูกมองว่าเป็นคิวข้อความในโลกของบริการ) ดังนั้นนักแสดง / บริการไมโครบางคนอาจไม่พร้อมในขณะที่การสื่อสารแบบอะซิงโครนัสโดยเนื้อแท้ยังคงเป็นไปได้
กล่าวอีกนัยหนึ่งการเปรียบเทียบกับแบบจำลองของนักแสดงสามารถนำข้อมูลเชิงลึกเชิงสร้างสรรค์มาพิจารณาในระดับสูงมาก แต่ส่วนใหญ่เป็นแอปเปิ้ลกับส้ม
หากเป้าหมายคือการเปรียบเทียบแบบจำลองทางคณิตศาสตร์ของ SOA / microservices กับแบบจำลองของนักแสดงแล้วมันก็ไม่สำคัญเพราะ: 1) ไม่มีการตกลงแบบจำลองทางคณิตศาสตร์สำหรับ SOA, 2) แบบจำลองมักจะรวมถึงวัตถุประสงค์ และการสร้างแบบจำลอง SOA / microservices นั้นแตกต่างจากจุดประสงค์ของแบบจำลองของนักแสดง ตัวอย่างหนึ่งของความพยายามที่จะจำลอง SOA ที่นี่
แน่นอนว่าเราสามารถสร้างระบบจำลองของนักแสดงด้วย microservices และเรียกบริการแต่ละตัวว่าเป็นนักแสดง แต่นี่ไม่ได้หมายความว่าจะมีความสัมพันธ์ที่มีความหมายระหว่างทั้งสองโดยทั่วไป
Microservices เป็นวิธีการจัดระเบียบซอฟต์แวร์โดยแยกแต่ละส่วนของข้อกังวลออกเป็นส่วนที่สามารถนำไปใช้งานได้เอง (ปฏิบัติการ, สคริปต์, JAR, WAR, ฯลฯ ) สิ่งนี้จะช่วยให้คุณมีความยืดหยุ่นตัวอย่างเช่นช่วยให้คุณสามารถปรับขนาดได้โดยการปรับใช้อินสแตนซ์เพิ่มเติมตามที่ต้องการ สมมติว่าผู้ใช้ใช้เวลามากขึ้นในการดูแคตตาล็อกของคุณมากกว่าการเพิ่มรายการลงในตะกร้าสินค้า หนึ่งสิ่งที่สามารถนำไปใช้จัดการกับฟังก์ชั่นแคตตาล็อกและอีกอย่างหนึ่งก็คือฟังก์ชั่นตะกร้าสินค้าคุณสามารถเรียกใช้บริการแคตตาล็อกเพิ่มเติมเพื่อจัดการกับโหลด
มันยังแยกพวกมันออกจากการเปลี่ยนแปลงภายใน สมมติว่าคุณย้ายจากฐานข้อมูลเชิงสัมพันธ์ไปยังฐานข้อมูลเอกสารสำหรับจัดเก็บข้อมูลผลิตภัณฑ์อัตราต่อรองคือบริการตะกร้าสินค้าของคุณไม่จำเป็นต้องเปลี่ยน
โมเดลนักแสดงอยู่ในระดับที่ต่ำกว่าสิ่งประดิษฐ์ที่ปรับใช้ได้เพิ่มเติมเกี่ยวกับประเภทของวัตถุที่คุณใช้บริการด้วย ต่อจากตัวอย่างข้างต้นคุณอาจมีตะกร้าสินค้าในระบบของคุณที่แสดงโดยนักแสดงดังนั้นรถเข็นของผู้ใช้ทุกคนเป็นนักแสดงที่แตกต่างกันและข้อความบอกให้เพิ่มรายการลบรายการตอบสนองกับเนื้อหาปัจจุบันเพิ่มการจัดส่งเช็ค เป็นต้นในกรณีนี้คุณยังคงมีบริการไมโครสโคป
ฉันจะบอกว่าความแตกต่างที่สำคัญคือหนึ่งในเม็ดเล็ก ๆ
สำหรับโมเดลของนักแสดงมันค่อนข้างละเอียดในการที่นักแสดงมีแนวโน้มที่จะเป็นตัวแทนของวัตถุหนึ่งชิ้นใน OOP
สำหรับบริการไมโครมันค่อนข้างหยาบในการที่บริการไมโครเดียวอาจประกอบด้วยนักแสดงหรือวัตถุจำนวนมาก
โปรดทราบว่าคุณไม่จำเป็นต้องยืดจินตนาการของคุณออกไปไกลเกินกว่าที่จะบอกได้ว่าเว็บสมัยใหม่นั้นเป็นสิ่งเดียวกันที่มีความละเอียดมากกว่า ("บริการมาโคร") และที่ (เช่น) เซิร์ฟเวอร์ HTTP เป็นบริการมาโคร, เซิร์ฟเวอร์ฐานข้อมูลเป็นบริการมาโคร, เว็บเบราว์เซอร์เป็นบริการมาโครเป็นต้น
มันคือชิ้นส่วนที่แยกตัวออกมาซึ่งสื่อสารกัน เป็นเพียงขนาดของชิ้นส่วน (และจำนวนชิ้น) ที่เปลี่ยนไป
Microservicesไต่ระดับแนวนอนโดยการสร้างแบบจำลองหลายอันแต่ละอันสามารถให้บริการการร้องขอได้เนื่องจากลักษณะของการให้บริการไร้สัญชาติ พวกเขามีความยืดหยุ่นต่อความล้มเหลวโดยอาศัยธรรมชาติไร้สัญชาติของพวกเขา
นักแสดงขยายโดยการย้ายพาร์ติชั่นไปที่พาร์ติชั่นที่มีโหลดน้อยกว่าหรือมีทรัพยากรมากขึ้น พวกเขาเป็นstateful พวกเขามีความยืดหยุ่นต่อความล้มเหลวเพราะ - ขึ้นอยู่กับกรอบของนักแสดง - นักแสดงคนอื่นอาจหมุนตัวแบบไดนามิกหรืออาจมีการสำรองข้อมูลที่ร้อนแรงของนักแสดงอยู่ตลอดเวลาเพื่อจัดการกับนักแสดงหลักที่ล้มเหลว
อีกครั้ง Microservices อาจเป็น stateful เกินไป แต่มันขัดกับหลักการออกแบบของ microservices