อะไรคือความแตกต่างระหว่างโมเดลนักแสดงกับ Microservices?


23

ทั้งคู่ดูเหมือนเครือข่าย MPI ที่สื่อสารกันแบบขนานของกระบวนการ ฉันระบุนักแสดงด้วยบริการ นักแสดงมีพลังมากขึ้น (คุณสามารถสร้างและฆ่าขณะหายใจขณะที่เครือข่ายบริการคงที่มากกว่า) หรืออะไร


คำตอบ:


11

นักแสดงรุ่น - เป็นแบบจำลองทางคณิตศาสตร์สำหรับการคำนวณพร้อมกันและ microservices - การดำเนินงานของสถาปัตยกรรมที่มุ่งเน้นบริการ ความคล้ายคลึงกันค่อนข้างบังเอิญ

แน่นอนว่าเป็นไปได้ที่จะสร้าง microservices ตามโมเดลนักแสดงบางคนและโมเดลสถาปัตยกรรมไมโครเซอร์วิสบางอย่างกับ model model แต่ไม่ได้หมายความว่าสิ่งเหล่านี้เทียบเท่ากัน แทนที่ "ระบบไมโครบริการ" ด้วย "ระบบอีเมล" และจะยังคงเป็นจริง แทนที่ "นักแสดงนางแบบ" ด้วย "กระบวนการสื่อสารตามลำดับ" (CSP) และมันก็จะเป็น "จริง" เพราะ CSP และระบบนางแบบนักแสดงสามารถเป็นแบบอย่างกันได้

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

นอกจากนี้รูปแบบนักแสดงเน้นบัฟเฟอร์ (อาจถูกมองว่าเป็นคิวข้อความในโลกของบริการ) ดังนั้นนักแสดง / บริการไมโครบางคนอาจไม่พร้อมในขณะที่การสื่อสารแบบอะซิงโครนัสโดยเนื้อแท้ยังคงเป็นไปได้

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

หากเป้าหมายคือการเปรียบเทียบแบบจำลองทางคณิตศาสตร์ของ SOA / microservices กับแบบจำลองของนักแสดงแล้วมันก็ไม่สำคัญเพราะ: 1) ไม่มีการตกลงแบบจำลองทางคณิตศาสตร์สำหรับ SOA, 2) แบบจำลองมักจะรวมถึงวัตถุประสงค์ และการสร้างแบบจำลอง SOA / microservices นั้นแตกต่างจากจุดประสงค์ของแบบจำลองของนักแสดง ตัวอย่างหนึ่งของความพยายามที่จะจำลอง SOA ที่นี่

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


ฉันหมายความว่าโมเดลนักแสดงไม่สามารถเปรียบเทียบกับ microservices ในระดับเดียวกันได้ ให้ฉันอัปเดตคำตอบของฉัน
Roman Susi

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

ขออภัยก่อนอื่นฉันได้อ่านว่านักแสดงเป็นแบบจำลองทางคณิตศาสตร์และใช้ uServices (โมเดลนั้น) ฉันไม่ได้สังเกตว่าพวกเขาใช้สถาปัตยกรรมบริการ ดังนั้นคำถามของฉันคือแบบจำลองทางคณิตศาสตร์สองแบบคือ Actors และ SOA เปรียบเทียบกัน บริการคือสิ่งที่มีลูปข้อความซึ่งยอมรับการร้องขอและสร้างข้อความตอบกลับ นี่คือสิ่งที่นักแสดง / ทำ microservice ใน SOA แตกต่างกันอย่างไร ในคำพูดที่มากขึ้นเมื่อฉันมีเครือข่ายการให้บริการแบบกระจายฉันควรอ้างถึงพวกเขาว่าเป็นไมโครไซต์หรือนักแสดง?
Little Alien

โปรดทราบว่านี่เป็นเว็บไซต์คำถามและคำตอบไม่ใช่ฟอรัมหรือฟีดข่าว Monikers เช่น UPDATE และ EDIT นั้นไม่จำเป็น โพสต์ทุกรายการใน Stack Exchange มีประวัติการแก้ไขโดยละเอียดที่ทุกคนสามารถดูได้
Robert Harvey

1

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

มันยังแยกพวกมันออกจากการเปลี่ยนแปลงภายใน สมมติว่าคุณย้ายจากฐานข้อมูลเชิงสัมพันธ์ไปยังฐานข้อมูลเอกสารสำหรับจัดเก็บข้อมูลผลิตภัณฑ์อัตราต่อรองคือบริการตะกร้าสินค้าของคุณไม่จำเป็นต้องเปลี่ยน

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


เมื่อคุณบอกว่าคุณสามารถใช้บริการเดียวกันได้หลายอินสแตนซ์ฉันเริ่มคิดว่ามันตรงกันข้าม: บริการเป็นประเภทหนึ่งในขณะที่นักแสดงเป็นวัตถุ :)
เลี่ยนน้อย

นักแสดงไม่สามารถปรับใช้ทีละรายการ? คุณแน่ใจไหม? dotnet.github.io/orleans/Documentation/Grain-Versioning/…
Daffy Punk

สำหรับฉันดูเหมือนว่ามีการใช้งานที่ชาญฉลาดอาจเป็นบิตของการบรรจบกันที่เกิดขึ้นระหว่างแนวคิดทั้งสอง ...
Daffy Punk

1

ฉันจะบอกว่าความแตกต่างที่สำคัญคือหนึ่งในเม็ดเล็ก ๆ

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

สำหรับบริการไมโครมันค่อนข้างหยาบในการที่บริการไมโครเดียวอาจประกอบด้วยนักแสดงหรือวัตถุจำนวนมาก

โปรดทราบว่าคุณไม่จำเป็นต้องยืดจินตนาการของคุณออกไปไกลเกินกว่าที่จะบอกได้ว่าเว็บสมัยใหม่นั้นเป็นสิ่งเดียวกันที่มีความละเอียดมากกว่า ("บริการมาโคร") และที่ (เช่น) เซิร์ฟเวอร์ HTTP เป็นบริการมาโคร, เซิร์ฟเวอร์ฐานข้อมูลเป็นบริการมาโคร, เว็บเบราว์เซอร์เป็นบริการมาโครเป็นต้น

มันคือชิ้นส่วนที่แยกตัวออกมาซึ่งสื่อสารกัน เป็นเพียงขนาดของชิ้นส่วน (และจำนวนชิ้น) ที่เปลี่ยนไป


แอปพลิเคชัน java ทุกตัวไม่ว่าจะมีขนาดใหญ่เท่าใดก็เป็นวัตถุเดียว วัตถุนั้นทำจากวัตถุอื่นและสามารถขยายใหญ่ขึ้นเรื่อย ๆ ฉันเดาว่า uServices เป็นแอปพลิเคชั่นชนิดหนึ่งที่ทำจากวัตถุอื่น
เลี่ยนน้อย

0

Microservicesไต่ระดับแนวนอนโดยการสร้างแบบจำลองหลายอันแต่ละอันสามารถให้บริการการร้องขอได้เนื่องจากลักษณะของการให้บริการไร้สัญชาติ พวกเขามีความยืดหยุ่นต่อความล้มเหลวโดยอาศัยธรรมชาติไร้สัญชาติของพวกเขา

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

อีกครั้ง Microservices อาจเป็น stateful เกินไป แต่มันขัดกับหลักการออกแบบของ microservices

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.