คำถามติดแท็ก microservices

Microservices เป็นกระบวนการอิสระขนาดเล็กที่สื่อสารกันเพื่อสร้างแอพพลิเคชั่นที่ซับซ้อนซึ่งใช้ภาษาที่ไม่เชื่อเรื่องพระเจ้า บริการเหล่านี้เป็นหน่วยการสร้างขนาดเล็กแยกออกอย่างมากและมุ่งเน้นไปที่การทำงานขนาดเล็กอำนวยความสะดวกวิธีการแบบแยกส่วนเพื่อการสร้างระบบ

5
การเปลี่ยนเป็นไมโครไซต์ช่วยสร้างปัญหารันไทม์อย่างไร
ผู้วิจารณ์ต่อไปนี้เขียน : Microservices เปลี่ยนความผิดปกติขององค์กรของคุณจากปัญหาเวลารวบรวมเป็นปัญหาเวลาทำงาน นักวิจารณ์คนนี้ขยายปัญหาที่กล่าวว่า: คุณสมบัติไม่ได้เป็นข้อบกพร่อง ปัญหารันไทม์ => prod problems => แข็งแกร่งและรวดเร็วยิ่งขึ้นเกี่ยวกับความผิดปกติของผู้ที่รับผิดชอบ ตอนนี้ฉันเข้าใจแล้วด้วยmicroservices you: อาจเพิ่มเวลาในการตอบสนองของคุณซึ่งเป็นข้อกังวลเกี่ยวกับการผลิตและเวลาทำงาน เพิ่มจำนวนของ“ เครือข่ายอินเทอร์เฟซ” ในรหัสของคุณซึ่งอาจมีข้อผิดพลาดรันไทม์ของการแยกวิเคราะห์ อาจทำให้การปรับใช้สีฟ้าสีเขียว สิ่งเหล่านั้นอาจถูกระงับโดยอินเตอร์เฟสไม่ตรงกัน (ดูอินเตอร์เฟสเครือข่าย) แต่ถ้าการปรับใช้สีน้ำเงินเป็นสีเขียวนั้นเป็นเรื่องของเวลาทำงานมากกว่า คำถามของฉันคืออะไรการเปลี่ยนเป็นไมโครไซต์ทำให้เกิดปัญหาในเวลาทำงาน

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

7
สถาปัตยกรรมระบบ microservice หลีกเลี่ยงปัญหาคอขวดของเครือข่ายได้อย่างไร
ฉันอ่านมากเกี่ยวกับสถาปัตยกรรม microservice สำหรับแอพพลิเคชันเซิร์ฟเวอร์และสงสัยว่าการใช้เครือข่ายภายในไม่ใช่คอขวดหรือข้อเสียที่สำคัญเมื่อเทียบกับสถาปัตยกรรมเสาหิน เพื่อความแม่นยำนี่เป็นการตีความคำสองคำของฉัน: สถาปัตยกรรม Monolith:แอปพลิเคชั่นหนึ่งเดียวในภาษาเดียวที่จัดการฟังก์ชันการทำงานข้อมูลและอื่น ๆ ตัวโหลดบาลานซ์จะกระจายการร้องขอจากผู้ใช้ทั่วทั้งเครื่องหลายเครื่อง สถาปัตยกรรม Microservice:แอปพลิเคชั่นจำนวนมาก (ไมโครซอฟท์) จัดการส่วนเล็ก ๆ ของฟังก์ชั่นและข้อมูล microservice แต่ละอันจะเปิดเผย API ทั่วไปที่เข้าถึงได้ผ่านเครือข่าย (ตรงข้ามกับการสื่อสารระหว่างกระบวนการหรือหน่วยความจำที่ใช้ร่วมกันบนเครื่องเดียวกัน) การเรียกใช้ API ส่วนใหญ่จะติดอยู่บนเซิร์ฟเวอร์เพื่อสร้างหน้าเว็บแม้ว่าบางงานอาจดำเนินการโดยไคลเอนต์ที่สอบถามไมโครไซต์แต่ละรายการ สำหรับจินตนาการที่ไร้เดียงสาของฉันดูเหมือนว่าสถาปัตยกรรมไมโครไซต์ใช้การรับส่งข้อมูลเครือข่ายที่ช้าเมื่อเทียบกับทรัพยากรที่รวดเร็วกว่าบนเครื่องเดียวกัน (หน่วยความจำและดิสก์) วิธีการหนึ่งทำให้มั่นใจได้ว่าการสืบค้น API ผ่านเครือข่ายภายในจะไม่ทำให้เวลาตอบสนองโดยรวมช้าลง

5
เหตุใดจึงไม่ดีในการอ่านข้อมูลจากฐานข้อมูล“ เป็นเจ้าของ” โดย microservice ที่แตกต่างกัน
ฉันเพิ่งอ่านบทความที่ยอดเยี่ยมนี้ในสถาปัตยกรรม microservice: http://www.infoq.com/articles/microservices-intro มันระบุว่าเมื่อคุณโหลดหน้าเว็บใน Amazon แล้วไมโครไซต์กว่า 100 รายการจะร่วมมือเพื่อให้บริการหน้านั้น บทความนั้นอธิบายว่าการสื่อสารระหว่างไมโครไซต์ทั้งหมดสามารถทำได้ผ่าน API เท่านั้น คำถามของฉันคือเหตุผลที่ไม่ดีที่จะบอกว่าการเขียนฐานข้อมูลทั้งหมดสามารถทำได้ผ่าน API เท่านั้น แต่คุณสามารถอ่านได้โดยตรงจากฐานข้อมูลของบริการไมโครต่างๆ ตัวอย่างเช่นสามารถพูดได้ว่ามีเพียงไม่กี่มุมมองฐานข้อมูลที่สามารถเข้าถึงได้นอกบริการไมโครเพื่อให้ทีมที่ดูแลบริการไมโครรู้ว่าตราบใดที่พวกเขารักษามุมมองเหล่านี้เหมือนเดิมแล้วพวกเขาสามารถเปลี่ยนโครงสร้างฐานข้อมูลของบริการไมโคร ต้องการ. ฉันทำอะไรบางอย่างหายไปหรือเปล่า มีเหตุผลอื่นอีกไหมทำไมข้อมูลควรอ่านผ่าน API เท่านั้น? บริษัท ของฉันเล็กกว่า Amazon อย่างมาก (และจะเป็นเสมอ) และจำนวนผู้ใช้สูงสุดที่เราสามารถมีได้ประมาณ 5 ล้านคน

5
โดเมนแบบแบ่งใช้ระหว่างไมโครไซต์ต่างๆ
ลองนึกภาพสถานการณ์ของ microservices สองแบบ หนึ่งในการจัดการรับรองความถูกต้องภายในบริการอื่น ๆ จะดูแลการจัดการผู้ใช้ พวกเขาทั้งสองมีแนวคิดของผู้ใช้และจะพูดคุยเกี่ยวกับผู้ใช้ผ่านการโทรหากัน รูปแบบโดเมนของ "ผู้ใช้" จะอยู่ที่ไหน พวกเขาทั้งสองจะมีการแสดงที่แตกต่างกันของสิ่งที่ผู้ใช้อยู่ในระดับของฐานข้อมูลหรือไม่ เมื่อเรามี UserDTO ที่จะใช้ในการโทร API พวกเขาทั้งสองจะมีหนึ่งอันสำหรับ API ที่เกี่ยวข้องหรือไม่ อะไรคือทางออกที่ยอมรับกันโดยทั่วไปสำหรับปัญหาสถาปัตยกรรมประเภทนี้?

6
ใน microservice เป็นฐานข้อมูลเดียวหรือฐานข้อมูลเดียวสำหรับแต่ละบริการหรือไม่
ฉันเข้าใจว่าแต่ละบริการในสถาปัตยกรรม microservice ควรมีฐานข้อมูลของตัวเอง อย่างไรก็ตามด้วยการมีฐานข้อมูลของตัวเองมันหมายถึงการมีฐานข้อมูลอื่นในอินสแตนซ์ฐานข้อมูลเดียวกันหรือมีอินสแตนซ์ฐานข้อมูลอื่นอยู่ใช่หรือไม่ โดยสิ่งนี้ฉันไม่ได้หมายถึงการแชร์ฐานข้อมูลซึ่งไม่ใช่ข้อยกเว้น แต่เป็นอินสแตนซ์ฐานข้อมูล ตัวอย่างเช่นถ้าฉันใช้ AWS และมีบริการ 3 รายการฉันจะสร้างฐานข้อมูล 3 รายการสำหรับบริการแต่ละรายการในอินสแตนซ์ RDS เดียวหรือฉันจะสร้างอินสแตนซ์ RDS 3 รายการแต่ละรายการมีฐานข้อมูลซึ่งใช้บริการแต่ละบริการอย่างอิสระหรือไม่ หากการใช้ฐานข้อมูลหลาย ๆ ตัวบนอินสแตนซ์ RDS เดียวเป็นความคิดที่ดีกว่ามันจะเอาชนะวัตถุประสงค์ของการมีบริการที่เป็นอิสระเพราะ: ทรัพยากรของอินสแตนซ์ RDS จะถูกแชร์ระหว่างบริการต่างๆ Service A ซึ่งอาจมีการใช้งานฐานข้อมูลจำนวนมากในบางช่วงเวลาจะส่งผลกระทบต่อบริการ B ซึ่งใช้ฐานข้อมูลอื่น แต่ในอินสแตนซ์ RDS เดียวกันหรือไม่ บริการทั้งหมดจะขึ้นอยู่กับรุ่นฐานข้อมูลของอินสแตนซ์ RDS นั้น

2
คุณจัดการกับแนวคิดที่แบ่งใช้ในสถาปัตยกรรม microservice ได้อย่างไร?
ฉันกำลังค้นคว้ารูปแบบสถาปัตยกรรมสำหรับแอปพลิเคชันที่ฉันกำลังพัฒนาและวิธีการบริการไมโครดูเหมือนว่าจะเป็นทางเลือกที่ดี แต่ฉันไม่แน่ใจว่าจะจัดการกับการโต้ตอบระหว่างบริการได้อย่างไร แอปพลิเคชั่นจะเกี่ยวข้องกับผู้ใช้โปรไฟล์ที่ผู้ใช้เป็นเจ้าของรูปถ่ายและแท็กที่แสดงโปรไฟล์หนึ่งถึงหลายโปรไฟล์ในภาพถ่าย อาจเป็นไปได้ว่ามีวิธีการส่งคืนรูปภาพที่อัพโหลดโดยผู้ใช้ส่งคืนรูปภาพที่มีโปรไฟล์ที่ติดแท็ก ฯลฯ นี่คือการแทงครั้งแรกของฉันในการออกแบบสถาปัตยกรรมที่ใช้ microservice และฉันมาจากรูปแบบโดเมนเสาหินที่ได้แรงบันดาลใจจากประวัติศาสตร์ ในโลกนั้นผู้ควบคุมจะต่อวัตถุโดเมนเหล่านี้เข้าด้วยกัน แต่ฉันมีปัญหาในการคาดหัวว่ามันจะทำงานได้อย่างไรในแบบไมโครวินาที

5
Microservices และขั้นตอนการจัดเก็บ
กระบวนงานที่เก็บไว้ถูกพิจารณาว่าเป็นการปฏิบัติที่ไม่ดีในสถาปัตยกรรม microservice หรือไม่ นี่คือความคิดของฉัน: หนังสือส่วนใหญ่ใน microservices แนะนำหนึ่งฐานข้อมูลต่อ microservice ขั้นตอนการจัดเก็บมักจะทำงานบนฐานข้อมูลเสาหิน อีกครั้งหนังสือสถาปัตยกรรมไมโครบริการส่วนใหญ่ระบุว่าพวกเขาควรจะเป็นอิสระและควบคู่กันอย่างอิสระ การใช้ขั้นตอนการจัดเก็บที่เขียนไว้พูดเฉพาะใน Oracle คู่หูกับบริการไมโครสโคปกับเทคโนโลยีนั้นอย่างแน่นหนา หนังสือสถาปัตยกรรม microservice ส่วนใหญ่ (ที่ฉันได้อ่าน) แนะนำว่า microservices ควรเป็นเชิงธุรกิจ (ออกแบบโดยใช้การออกแบบที่ขับเคลื่อนด้วยโดเมน (DDD)) โดยการย้ายตรรกะทางธุรกิจไปยังกระบวนงานที่เก็บไว้ในฐานข้อมูลจะไม่เป็นเช่นนั้นอีกต่อไป ความคิดใด ๆ เกี่ยวกับเรื่องนี้?

3
วิธีแบ่งปัน DTO ในไมโครไซต์หรือไม่
สถานการณ์ของฉันเป็นดังนี้ ฉันกำลังออกแบบระบบที่ออกแบบมาเพื่อรับข้อมูลจากเซ็นเซอร์ประเภทต่างๆและแปลงแล้วยืนยันให้ใช้กับส่วนหน้าและบริการวิเคราะห์ต่างๆในภายหลัง ฉันพยายามออกแบบทุกบริการให้มีความเป็นอิสระมากที่สุด แต่ฉันมีปัญหา ทีมได้ตัดสินใจใช้ DTO ที่เราต้องการใช้ บริการภายนอก (ผู้รับข้อมูลเซ็นเซอร์) จะรับข้อมูลด้วยวิธีที่ไม่ซ้ำกันจากนั้นแปลงเป็นวัตถุ JSON (DTO) และส่งออกไปยัง Message Broker ผู้บริโภคของข้อความจะรู้วิธีอ่านข้อความข้อมูลเซ็นเซอร์อย่างแม่นยำ ปัญหาคือฉันใช้ DTO เดียวกันในบริการต่าง ๆ ต้องมีการอัปเดตในหลายตำแหน่ง เห็นได้ชัดว่าเราได้ออกแบบในลักษณะที่มีเขตข้อมูลพิเศษหรือขาดหายไปเล็กน้อยใน DTO ที่นี่และมีปัญหาไม่มากจนกระทั่งบริการได้รับการอัปเดต แต่ก็ยังทำให้ฉันรู้สึกเหมือนฉัน ทำผิดพลาด มันอาจกลายเป็นปวดหัวได้ง่าย ฉันจะสร้างระบบผิดหรือเปล่า? ถ้าไม่เป็นเช่นนั้นวิธีใดบ้างหรืออย่างน้อยที่สุดเพื่อบรรเทาความกังวลของฉัน

1
เมื่อพัฒนาระบบด้วยตัวเองฉันควรใช้ microservices หรือไม่
ฉันเริ่มต้นโครงการใหม่ในที่ทำงานและน่าจะเป็นผู้พัฒนาโครงการเพียงคนเดียว แต่ผู้พัฒนารายอื่นหนึ่งหรือสองรายจะต้องรวมแอปพลิเคชันที่มีอยู่หรือสคริปต์อย่างง่ายเข้ากับโครงการหลัก โครงการจำเป็นต้องจัดการกับปริมาณขนาดเล็กและการส่งผ่านข้อมูล / การประมวลผลและการประมวลผลรหัสตามเหตุการณ์และตามความต้องการ บางส่วนของเฟรมเวิร์กจะมี CPU ผูกไว้อย่างแน่นหนาและบางส่วนอาจถูกผูกไว้กับ I / O อย่างหนัก ข้อมูลส่วนใหญ่จะต้องอยู่บนเครื่องเดียว แต่เราสามารถสร้างคลัสเตอร์และเชื่อมต่อ VM เพื่อเพิ่มพลังการคำนวณที่มีอยู่ อาจจะมีเว็บแอปพลิเคชั่นขนาดเล็กหนึ่งรายการหรือมากกว่านั้นซึ่งขึ้นอยู่กับบริการที่ให้กรอบงานหลักนี้ ภาษาหลักจะเป็น Python สำหรับทุกสิ่ง คำถามของฉันคือฉันควรใช้วิธีไมโครไซต์เพื่อพยายามทำสิ่งนี้หรือใช้แอพพลิเคชั่นแบบเสาหินเนื่องจากฉันจะทำการพัฒนาส่วนใหญ่ด้วยตัวเอง ความคิดของฉันคือ microservices (โดยใช้ Nameko) ให้การแยกโดยธรรมชาติระหว่างองค์ประกอบของกรอบงานที่มีรูปแบบการดำเนินการที่แตกต่างกัน (ไปป์ไลน์ข้อมูล, กิจกรรมที่เปิดตัว, ตามคำขอ, เว็บแอปพลิเคชั่น ฯลฯ ) และวิธีที่ชัดเจน การสื่อสารข้ามหลายกระบวนการ ความกังวลของฉันคือฉันอาจท้ายด้วยกลุ่ม Kubernetes เพื่อจัดการ (ฉันคุ้นเคยกับ Docker แต่ยังค่อนข้างใหม่กับ Kubernetes), บริการหลายอย่าง (rabbitmq, redis และอื่น ๆ ) ที่จำเป็นเพียงเพื่ออำนวยความสะดวกในการใช้งานระบบ และอาจมีโค้ดขนาดเล็กจำนวนมากที่จะใช้ความสามารถที่จำเป็นทั้งหมดที่เรามีอยู่จริง สำหรับโครงการที่มีผู้พัฒนามากกว่าหนึ่งรายเล็กน้อย …

4
Microservices ควรพูดคุยกันหรือไม่?
ฉันออกแบบแอปพลิเคชันด้วยบริการไมโครและฉันไม่แน่ใจเกี่ยวกับกลไกที่ดีที่สุดที่จะใช้ในการรวบรวมข้อมูลจากบริการที่หลากหลาย ฉันเชื่อว่ามีสองตัวเลือก: บูรณาการกลไกการสื่อสาร 'บริการระหว่าง' ที่ช่วยให้บริการที่จะพูดคุยโดยตรง API เกตเวย์จะเรียกใช้บริการส่วนบุคคลซึ่งจะเรียกบริการอื่น ๆ เพื่อรวบรวมข้อมูลก่อนส่งคืนการตอบกลับแบบรวมไปยัง API เกตเวย์ จากนั้น API จะส่งคืนการตอบกลับไปยังผู้โทร (สิ่งนี้จะต้องเป็นการโทรแบบซิงโครนัสเมื่อการเรียกใช้บริการ serviceB ต้องการการตอบสนองจาก serviceA. IE แยกคนและบริการที่อยู่) ให้ API เกตเวย์โทรไปยังแต่ละบริการโดยตรงและรวบรวมข้อมูลภายใน API ก่อนที่จะตอบกลับ ฉันเอนตัวไปสู่ทางเลือกที่สองเนื่องจากการให้บริการพูดคุยกันจะแนะนำการมีเพศสัมพันธ์ซึ่งในกรณีนี้ฉันก็อาจสร้างแอพพลิเคชั่นแบบเสาหิน อย่างไรก็ตามมีข้อเสียร้ายแรงบางประการที่ฉันสามารถคิดได้จากส่วนหัวของฉันด้วยตัวเลือกนี้: การให้ API ดำเนินการเรียกหลายครั้งไปยังหลายบริการจะช่วยเพิ่มภาระให้กับเซิร์ฟเวอร์ API โดยเฉพาะอย่างยิ่งเมื่อการโทรบางส่วนกำลังปิดกั้น วิธีนี้จะหมายความว่า API จะต้อง 'ตระหนักถึง' สิ่งที่แอปพลิเคชันพยายามทำ (IE Logic จะต้องถูกตั้งโปรแกรมไว้ใน API เพื่อจัดการกับการเรียกใช้บริการในทางกลับกันและรวมข้อมูลแล้ว) ทำหน้าที่เป็น 'ปลายทาง' โง่สำหรับบริการไมโคร ฉันต้องการทราบว่าแนวทางมาตรฐานสำหรับปัญหานี้คืออะไรและหากมีตัวเลือกที่สามที่ฉันพลาด

4
Microservices และการจัดเก็บข้อมูล
ฉันกำลังพิจารณาที่จะย้าย REST API แบบเสาหินไปยังสถาปัตยกรรม microservice และฉันสับสนเล็กน้อยเกี่ยวกับที่เก็บข้อมูล ตามที่ฉันเห็นประโยชน์บางประการของ microservices คือ: ปรับขนาดได้ในแนวนอน - ฉันสามารถเรียกใช้สำเนาบริการซ้ำซ้อนหลายชุดเพื่อจัดการกับโหลดและ / หรือเซิร์ฟเวอร์หยุดทำงาน การเชื่อมโยงอย่างหลวม - ฉันสามารถเปลี่ยนการใช้งานภายในของไมโครไซต์โดยไม่ต้องเปลี่ยนไมโครซอฟท์และฉันสามารถปรับใช้และเปลี่ยนแปลงได้อย่างอิสระ ... ปัญหาของฉันอยู่ที่การจัดเก็บข้อมูล เท่าที่ฉันเห็นมันมีหลายตัวเลือก: บริการฐานข้อมูลเดียวที่ใช้ร่วมกันโดย microservices ทั้งหมด - นี่ดูเหมือนจะขจัดข้อได้เปรียบของการมีเพศสัมพันธ์แบบหลวม ๆ อย่างสมบูรณ์ อินสแตนซ์ฐานข้อมูลที่ติดตั้งในเครื่องบนไมโครไซต์แต่ละบริการ - ฉันไม่เห็นวิธีการปรับขนาดแนวนอนดังนั้นฉันไม่คิดว่ามันจะเป็นตัวเลือก microservice แต่ละตัวมีบริการฐานข้อมูลของตัวเอง - ซึ่งเป็นวิธีที่มีแนวโน้มมากที่สุดเนื่องจากจะรักษาประโยชน์ของข้อต่อหลวมและการขยายตามแนวนอน (โดยใช้สำเนาฐานข้อมูลที่ซ้ำซ้อนและ / หรือทำให้เกิดปัญหาหลายอย่าง) สำหรับฉันตัวเลือกที่สามน่าจะเป็นตัวเลือกเดียว แต่ดูเหมือนว่าฉันจะมีน้ำหนักมากอย่างไม่น่าเชื่อและเป็นวิธีแก้ปัญหาที่มีการปรับแก้มากเกินไป ถ้าฉันเข้าใจถูกต้องแล้วสำหรับแอปพลิเคชันธรรมดาที่มี 4-5 microservices ฉันต้องใช้เซิร์ฟเวอร์ 16-20 - สองอินสแตนซ์ microservice จริงสองต่อ microservice (ในกรณีที่เซิร์ฟเวอร์ล้มเหลวและสำหรับการปรับใช้โดยไม่ต้องหยุดทำงาน) …

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

3
การจัดการข้อมูลแบบกระจายอำนาจ - ห่อหุ้มฐานข้อมูลลงในไมโครไซต์บริการ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเพิ่งเรียนหลักสูตรการออกแบบซอฟต์แวร์และมีการอภิปราย / ข้อเสนอแนะล่าสุดเกี่ยวกับการใช้แบบจำลอง 'บริการขนาดเล็ก' โดยที่ส่วนประกอบของบริการจะถูกแยกออกเป็นส่วนย่อยของบริการ microservice ที่เป็นอิสระที่สุด ส่วนหนึ่งที่ถูกกล่าวถึงนั้นแทนที่จะทำตามรูปแบบที่เห็นได้บ่อยมากของการมีฐานข้อมูลเดียวที่ไมโครไซต์ทั้งหมดพูดถึงคุณจะมีฐานข้อมูลแยกต่างหากที่ทำงานสำหรับไมโครไซต์แต่ละรายการ คุณสามารถอ่านคำอธิบายที่ละเอียดและมีรายละเอียดมากขึ้นเกี่ยวกับสิ่งนี้ได้ที่นี่: http://martinfowler.com/articles/microservices.htmlภายใต้หัวข้อการจัดการข้อมูลแบบกระจายอำนาจ ส่วนที่สำคัญที่สุดที่พูดนี้: Microservices ต้องการให้แต่ละบริการจัดการฐานข้อมูลของตัวเองไม่ว่าจะเป็นอินสแตนซ์ที่แตกต่างกันของเทคโนโลยีฐานข้อมูลเดียวกันหรือระบบฐานข้อมูลที่แตกต่างกันโดยสิ้นเชิง - แนวทางที่เรียกว่า Polyglot Persistence คุณสามารถใช้การคงอยู่หลายภาษาในหินใหญ่ก้อนเดียว แต่ปรากฏขึ้นบ่อยครั้งด้วย microservices รูปที่ 4 ฉันชอบแนวคิดนี้และในหลาย ๆ สิ่งเห็นว่าการปรับปรุงที่ดีในการบำรุงรักษาและการมีโครงการที่มีหลายคนทำงานอยู่ ที่กล่าวว่าฉันไม่เคยมีประสบการณ์สถาปนิกซอฟต์แวร์ มีใครเคยลองใช้บ้างไหม คุณได้ประโยชน์อะไรและอุปสรรคอะไรบ้าง?

4
การถ่ายโอนไฟล์ / ข้อมูลขนาดใหญ่ในสถาปัตยกรรม Microservice
บริษัท ของฉันกำลังทำงานเกี่ยวกับการใช้สถาปัตยกรรมไมโครเซอร์วิส แต่เรากำลังเผชิญกับความเจ็บปวดที่เพิ่มขึ้นเรื่อย ๆ หนึ่งในประเด็นสำคัญที่เราเผชิญคือการสื่อสารข้อมูลจำนวนมากระหว่างบริการต่างๆของเรา ในฐานะที่เป็นพื้นหลังเรามีที่เก็บเอกสารที่ทำหน้าที่เป็นที่เก็บเอกสารใด ๆ ที่เราอาจต้องจัดการข้าม บริษัท การโต้ตอบกับร้านค้าดังกล่าวจะกระทำผ่านบริการที่ให้ลูกค้ามี ID ที่ไม่ซ้ำกันและสถานที่ในการสตรีมเอกสาร ตำแหน่งของเอกสารสามารถเข้าถึงได้ในภายหลังผ่านการค้นหาด้วย ID ที่ระบุ ปัญหาคือสิ่งนี้ - มันสมเหตุสมผลหรือไม่ที่ microservices ของเราทั้งหมดจะยอมรับ ID ที่ไม่ซ้ำกันนี้เป็นส่วนหนึ่งของ API ของพวกเขาเพื่อวัตถุประสงค์ในการโต้ตอบกับเอกสารหรือไม่? สำหรับฉันนี้รู้สึกผิดโดยเนื้อแท้ - บริการไม่เป็นอิสระอีกต่อไปและพึ่งพาบริการของที่เก็บเอกสาร ในขณะที่ฉันยอมรับว่าสิ่งนี้อาจทำให้การออกแบบ API ง่ายขึ้นและบางทีอาจมีประสิทธิภาพบางอย่างที่ทำให้เกิดการเชื่อมโยงมากกว่าผลประโยชน์ถ่วงดุล ไม่มีใครรู้ว่ารุ้งยูนิคอร์น (Netflix, Amazon, Google, ฯลฯ ) จัดการกับไฟล์ / การแลกเปลี่ยนข้อมูลขนาดใหญ่ระหว่างบริการของพวกเขา?

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