สถาปัตยกรรมแบบกระจาย
ในสถาปัตยกรรมแบบกระจายส่วนประกอบจะถูกนำเสนอบนแพลตฟอร์มที่แตกต่างกันและส่วนประกอบต่างๆสามารถทำงานร่วมกันผ่านเครือข่ายการสื่อสารเพื่อให้บรรลุวัตถุประสงค์หรือเป้าหมายที่เฉพาะเจาะจง
ในสถาปัตยกรรมนี้การประมวลผลข้อมูลไม่ได้ จำกัด อยู่ที่เครื่องเดียว แต่จะกระจายไปยังคอมพิวเตอร์อิสระหลายเครื่อง
ระบบกระจายสามารถแสดงให้เห็นได้โดยสถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์ซึ่งเป็นฐานสำหรับสถาปัตยกรรมหลายชั้น ทางเลือกอื่นคือสถาปัตยกรรมนายหน้าเช่น CORBA และสถาปัตยกรรมเชิงบริการ (SOA)
มีเฟรมเวิร์กเทคโนโลยีหลายอย่างเพื่อรองรับสถาปัตยกรรมแบบกระจาย ได้แก่ . NET, J2EE, CORBA, .NET Web services, AXIS Java Web services และ Globus Grid services
มิดเดิลแวร์เป็นโครงสร้างพื้นฐานที่รองรับการพัฒนาและการเรียกใช้แอปพลิเคชันแบบกระจายอย่างเหมาะสม มีบัฟเฟอร์ระหว่างแอปพลิเคชันและเครือข่าย
ตั้งอยู่ตรงกลางของระบบและจัดการหรือสนับสนุนส่วนประกอบต่างๆของระบบแบบกระจาย ตัวอย่าง ได้แก่ จอภาพการประมวลผลธุรกรรมตัวแปลงข้อมูลและตัวควบคุมการสื่อสารเป็นต้น
มิดเดิลแวร์เป็นโครงสร้างพื้นฐานสำหรับระบบกระจาย
พื้นฐานของสถาปัตยกรรมแบบกระจายคือความโปร่งใสความน่าเชื่อถือและความพร้อมใช้งาน
ตารางต่อไปนี้แสดงความโปร่งใสในรูปแบบต่างๆในระบบกระจาย -
ซีเนียร์ | ความโปร่งใสและคำอธิบาย |
---|---|
1 | Access ซ่อนวิธีการเข้าถึงทรัพยากรและความแตกต่างในแพลตฟอร์มข้อมูล |
2 | Location ซ่อนตำแหน่งของทรัพยากร |
3 | Technology ซ่อนเทคโนโลยีต่างๆเช่นภาษาโปรแกรมและระบบปฏิบัติการจากผู้ใช้ |
4 | Migration / Relocation ซ่อนทรัพยากรที่อาจถูกย้ายไปยังตำแหน่งอื่นที่ใช้งานอยู่ |
5 | Replication ซ่อนทรัพยากรที่อาจถูกคัดลอกในหลายตำแหน่ง |
6 | Concurrency ซ่อนทรัพยากรที่อาจแชร์กับผู้ใช้รายอื่น |
7 | Failure ซ่อนความล้มเหลวและการกู้คืนทรัพยากรจากผู้ใช้ |
8 | Persistence ซ่อนว่าทรัพยากร (ซอฟต์แวร์) อยู่ในหน่วยความจำหรือดิสก์ |
ข้อดี
Resource sharing - การแบ่งปันทรัพยากรฮาร์ดแวร์และซอฟต์แวร์
Openness - ความยืดหยุ่นในการใช้ฮาร์ดแวร์และซอฟต์แวร์ของผู้ขายที่แตกต่างกัน
Concurrency - การประมวลผลพร้อมกันเพื่อเพิ่มประสิทธิภาพ
Scalability - เพิ่มปริมาณงานโดยการเพิ่มทรัพยากรใหม่
Fault tolerance - ความสามารถในการทำงานต่อไปหลังจากเกิดข้อผิดพลาด
ข้อเสีย
Complexity - มีความซับซ้อนมากกว่าระบบรวมศูนย์
Security - ไวต่อการโจมตีจากภายนอกมากขึ้น
Manageability - ต้องใช้ความพยายามมากขึ้นในการจัดการระบบ
Unpredictability - การตอบสนองที่คาดเดาไม่ได้ขึ้นอยู่กับองค์กรของระบบและภาระของเครือข่าย
ระบบส่วนกลางเทียบกับระบบกระจาย
เกณฑ์ | ระบบรวมศูนย์ | ระบบกระจาย |
---|---|---|
เศรษฐศาสตร์ | ต่ำ | สูง |
ความพร้อมใช้งาน | ต่ำ | สูง |
ความซับซ้อน | ต่ำ | สูง |
ความสม่ำเสมอ | เรียบง่าย | สูง |
ความสามารถในการปรับขนาด | แย่ | ดี |
เทคโนโลยี | เป็นเนื้อเดียวกัน | ต่างกัน |
ความปลอดภัย | สูง | ต่ำ |
สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์
สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์เป็นสถาปัตยกรรมระบบแบบกระจายที่พบมากที่สุดซึ่งแยกย่อยระบบออกเป็นสองระบบย่อยหลักหรือกระบวนการทางตรรกะ -
Client - นี่เป็นกระบวนการแรกที่ส่งคำขอไปยังกระบวนการที่สองคือเซิร์ฟเวอร์
Server - นี่เป็นกระบวนการที่สองที่รับคำขอดำเนินการและส่งคำตอบกลับไปยังลูกค้า
ในสถาปัตยกรรมนี้แอปพลิเคชันถูกจำลองเป็นชุดของบริการที่จัดเตรียมโดยเซิร์ฟเวอร์และชุดไคลเอ็นต์ที่ใช้บริการเหล่านี้ เซิร์ฟเวอร์ไม่จำเป็นต้องรู้เกี่ยวกับไคลเอนต์ แต่ไคลเอนต์ต้องทราบข้อมูลประจำตัวของเซิร์ฟเวอร์และการแมปโปรเซสเซอร์กับโปรเซสไม่จำเป็นต้องเป็น 1: 1
สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์สามารถแบ่งออกเป็นสองรุ่นตามการทำงานของไคลเอนต์ -
รุ่น Thin-Client
ในรูปแบบไคลเอ็นต์แบบบางการประมวลผลแอปพลิเคชันและการจัดการข้อมูลทั้งหมดจะดำเนินการโดยเซิร์ฟเวอร์ ไคลเอนต์มีหน้าที่เพียงแค่เรียกใช้ซอฟต์แวร์การนำเสนอ
ใช้เมื่อระบบเดิมถูกโอนย้ายไปยังสถาปัตยกรรมเซิร์ฟเวอร์ไคลเอ็นต์ซึ่งระบบเดิมทำหน้าที่เป็นเซิร์ฟเวอร์ในสิทธิ์ของตนเองโดยมีอินเทอร์เฟซแบบกราฟิกที่ใช้กับไคลเอ็นต์
ข้อเสียที่สำคัญคือทำให้เกิดภาระการประมวลผลจำนวนมากทั้งบนเซิร์ฟเวอร์และเครือข่าย
รุ่นลูกค้าหนา / อ้วน
ในรุ่นไคลเอนต์แบบหนาเซิร์ฟเวอร์มีหน้าที่จัดการข้อมูลเท่านั้น ซอฟต์แวร์บนไคลเอ็นต์ใช้ตรรกะของแอปพลิเคชันและการโต้ตอบกับผู้ใช้ระบบ
เหมาะสมที่สุดสำหรับระบบ C / S ใหม่ที่ทราบความสามารถของระบบไคลเอนต์ล่วงหน้า
ซับซ้อนกว่าแบบจำลองไคลเอ็นต์แบบบางโดยเฉพาะสำหรับการจัดการ ต้องติดตั้งแอปพลิเคชันเวอร์ชันใหม่บนไคลเอนต์ทั้งหมด
ข้อดี
การแยกความรับผิดชอบเช่นการนำเสนอส่วนติดต่อผู้ใช้และการประมวลผลตรรกะทางธุรกิจ
การนำส่วนประกอบเซิร์ฟเวอร์กลับมาใช้ใหม่และศักยภาพในการทำงานพร้อมกัน
ลดความยุ่งยากในการออกแบบและการพัฒนาแอปพลิเคชันแบบกระจาย
ทำให้ง่ายต่อการโยกย้ายหรือรวมแอปพลิเคชันที่มีอยู่เข้ากับสภาพแวดล้อมแบบกระจาย
นอกจากนี้ยังใช้ทรัพยากรอย่างมีประสิทธิภาพเมื่อลูกค้าจำนวนมากเข้าถึงเซิร์ฟเวอร์ที่มีประสิทธิภาพสูง
ข้อเสีย
ขาดโครงสร้างพื้นฐานที่แตกต่างกันเพื่อรับมือกับการเปลี่ยนแปลงข้อกำหนด
ภาวะแทรกซ้อนด้านความปลอดภัย
ความพร้อมใช้งานของเซิร์ฟเวอร์ที่ จำกัด และความน่าเชื่อถือ
ความสามารถในการทดสอบและความยืดหยุ่นที่ จำกัด
ลูกค้าอ้วนด้วยการนำเสนอและตรรกะทางธุรกิจร่วมกัน
สถาปัตยกรรมหลายชั้น (สถาปัตยกรรม n-tier)
สถาปัตยกรรมหลายชั้นเป็นสถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์ซึ่งฟังก์ชันต่างๆเช่นการนำเสนอการประมวลผลแอปพลิเคชันและการจัดการข้อมูลจะแยกออกจากกัน เมื่อแยกแอปพลิเคชันออกเป็นระดับผู้พัฒนาจะมีตัวเลือกในการเปลี่ยนหรือเพิ่มเลเยอร์เฉพาะแทนที่จะทำซ้ำทั้งแอป เป็นแบบจำลองที่นักพัฒนาสามารถสร้างแอปพลิเคชันที่ยืดหยุ่นและใช้ซ้ำได้
การใช้สถาปัตยกรรมหลายชั้นโดยทั่วไปมากที่สุดคือสถาปัตยกรรมสามชั้น โดยทั่วไปสถาปัตยกรรมสามชั้นประกอบด้วยระดับการนำเสนอระดับแอปพลิเคชันและระดับการจัดเก็บข้อมูลและอาจดำเนินการบนโปรเซสเซอร์แยกต่างหาก
ระดับการนำเสนอ
เลเยอร์การนำเสนอเป็นระดับบนสุดของแอปพลิเคชันที่ผู้ใช้สามารถเข้าถึงได้โดยตรงเช่นเว็บเพจหรือระบบปฏิบัติการ GUI (อินเทอร์เฟซผู้ใช้แบบกราฟิก) หน้าที่หลักของเลเยอร์นี้คือการแปลงานและผลลัพธ์เป็นสิ่งที่ผู้ใช้สามารถเข้าใจได้ มันสื่อสารกับระดับอื่น ๆ เพื่อให้ผลลัพธ์ไปยังระดับเบราว์เซอร์ / ไคลเอนต์และระดับอื่น ๆ ทั้งหมดในเครือข่าย
ระดับแอปพลิเคชัน (Business Logic, Logic Tier หรือ Middle Tier)
ระดับแอปพลิเคชันจะประสานแอปพลิเคชันประมวลผลคำสั่งตัดสินใจเชิงตรรกะประเมินผลและทำการคำนวณ ควบคุมการทำงานของแอปพลิเคชันโดยดำเนินการประมวลผลโดยละเอียด นอกจากนี้ยังย้ายและประมวลผลข้อมูลระหว่างสองชั้นโดยรอบ
ชั้นข้อมูล
ในชั้นนี้ข้อมูลจะถูกจัดเก็บและเรียกใช้จากฐานข้อมูลหรือระบบไฟล์ จากนั้นข้อมูลจะถูกส่งกลับไปเพื่อประมวลผลแล้วกลับไปยังผู้ใช้ ประกอบด้วยกลไกการคงอยู่ของข้อมูล (เซิร์ฟเวอร์ฐานข้อมูลการแชร์ไฟล์ ฯลฯ ) และจัดเตรียม API (Application Programming Interface) ให้กับระดับแอปพลิเคชันซึ่งมีวิธีการจัดการข้อมูลที่จัดเก็บไว้
Advantages
ประสิทธิภาพที่ดีกว่าวิธีการสำหรับลูกค้ารายย่อยและง่ายกว่าในการจัดการมากกว่าแนวทางลูกค้ารายใหญ่
เพิ่มความสามารถในการนำกลับมาใช้ใหม่และความสามารถในการปรับขนาด - เมื่อความต้องการเพิ่มขึ้นสามารถเพิ่มเซิร์ฟเวอร์เพิ่มเติมได้
ให้การสนับสนุนมัลติเธรดและยังช่วยลดปริมาณการใช้งานเครือข่าย
ให้การบำรุงรักษาและความยืดหยุ่น
Disadvantages
ความสามารถในการทดสอบที่ไม่น่าพอใจเนื่องจากไม่มีเครื่องมือทดสอบ
ความน่าเชื่อถือและความพร้อมใช้งานของเซิร์ฟเวอร์ที่สำคัญยิ่งขึ้น
รูปแบบสถาปัตยกรรมนายหน้า
Broker Architectural Style เป็นสถาปัตยกรรมมิดเดิลแวร์ที่ใช้ในการประมวลผลแบบกระจายเพื่อประสานงานและเปิดใช้งานการสื่อสารระหว่างเซิร์ฟเวอร์ที่ลงทะเบียนและไคลเอนต์ ที่นี่การสื่อสารวัตถุเกิดขึ้นผ่านระบบมิดเดิลแวร์ที่เรียกว่านายหน้าคำขอวัตถุ (บัสซอฟต์แวร์)
ไคลเอนต์และเซิร์ฟเวอร์ไม่โต้ตอบกันโดยตรง ไคลเอนต์และเซิร์ฟเวอร์มีการเชื่อมต่อโดยตรงกับพร็อกซีซึ่งสื่อสารกับโบรกเกอร์คนกลาง
เซิร์ฟเวอร์ให้บริการโดยการลงทะเบียนและเผยแพร่อินเทอร์เฟซกับโบรกเกอร์และลูกค้าสามารถร้องขอบริการจากโบรกเกอร์แบบคงที่หรือแบบไดนามิกโดยการค้นหา
CORBA (Common Object Request Broker Architecture) เป็นตัวอย่างการใช้งานที่ดีของสถาปัตยกรรมนายหน้า
ส่วนประกอบของรูปแบบสถาปัตยกรรมนายหน้า
ส่วนประกอบของรูปแบบสถาปัตยกรรมนายหน้าจะกล่าวถึงผ่านหัวต่อไปนี้ -
Broker
นายหน้ามีหน้าที่ประสานงานการสื่อสารเช่นการส่งต่อและจัดส่งผลลัพธ์และข้อยกเว้น อาจเป็นได้ทั้งบริการที่มุ่งเน้นการร้องขอเอกสารหรือข้อความ - โบรกเกอร์ที่ลูกค้าส่งข้อความมา
มีหน้าที่รับผิดชอบในการนายหน้าคำขอบริการค้นหาเซิร์ฟเวอร์ที่เหมาะสมส่งคำขอและส่งคำตอบกลับไปยังลูกค้า
จะเก็บรักษาข้อมูลการลงทะเบียนของเซิร์ฟเวอร์รวมถึงฟังก์ชันการทำงานและบริการตลอดจนข้อมูลตำแหน่งที่ตั้ง
มี API สำหรับไคลเอ็นต์เพื่อร้องขอเซิร์ฟเวอร์เพื่อตอบสนองการลงทะเบียนหรือยกเลิกการลงทะเบียนส่วนประกอบเซิร์ฟเวอร์การถ่ายโอนข้อความและการระบุตำแหน่งเซิร์ฟเวอร์
Stub
Stubs ถูกสร้างขึ้นในเวลาคอมไพล์แบบคงที่จากนั้นปรับใช้กับฝั่งไคลเอ็นต์ซึ่งใช้เป็นพร็อกซีสำหรับไคลเอ็นต์ พร็อกซีฝั่งไคลเอ็นต์ทำหน้าที่เป็นสื่อกลางระหว่างลูกค้าและนายหน้าและให้ความโปร่งใสเพิ่มเติมระหว่างพวกเขาและลูกค้า วัตถุระยะไกลจะดูเหมือนเป็นวัตถุในเครื่อง
พร็อกซีจะซ่อน IPC (การสื่อสารระหว่างกระบวนการ) ที่ระดับโปรโตคอลและดำเนินการจัดเก็บค่าพารามิเตอร์และยกเลิกการจัดเก็บผลลัพธ์จากเซิร์ฟเวอร์
Skeleton
Skeleton ถูกสร้างขึ้นโดยการคอมไพล์เซอร์วิสอินเตอร์เฟสแล้วปรับใช้กับฝั่งเซิร์ฟเวอร์ซึ่งใช้เป็นพร็อกซีสำหรับเซิร์ฟเวอร์ พร็อกซีฝั่งเซิร์ฟเวอร์ห่อหุ้มฟังก์ชันเครือข่ายเฉพาะระบบระดับต่ำและจัดเตรียม API ระดับสูงเพื่อเป็นสื่อกลางระหว่างเซิร์ฟเวอร์และโบรกเกอร์
มันได้รับการร้องขอ, คลายแพ็กคำขอ, unmarshals อาร์กิวเมนต์ของเมธอด, เรียกใช้บริการที่เหมาะสมและยังรวบรวมผลลัพธ์ก่อนที่จะส่งกลับไปยังไคลเอนต์
Bridge
บริดจ์สามารถเชื่อมต่อเครือข่ายสองเครือข่ายที่แตกต่างกันโดยอาศัยโปรโตคอลการสื่อสารที่แตกต่างกัน เป็นสื่อกลางของโบรกเกอร์ต่างๆรวมถึงโบรกเกอร์ DCOM, .NET remote และ Java CORBA
บริดจ์เป็นส่วนประกอบที่เป็นทางเลือกซึ่งจะซ่อนรายละเอียดการใช้งานเมื่อโบรกเกอร์สองรายทำงานร่วมกันและรับคำขอและพารามิเตอร์ในรูปแบบเดียวและแปลเป็นรูปแบบอื่น
Broker implementation in CORBA
CORBA เป็นมาตรฐานสากลสำหรับ Object Request Broker ซึ่งเป็นตัวกลางในการจัดการการสื่อสารระหว่างอ็อบเจ็กต์แบบกระจายที่กำหนดโดย OMG (กลุ่มการจัดการอ็อบเจ็กต์)
สถาปัตยกรรมเชิงบริการ (SOA)
บริการเป็นองค์ประกอบหนึ่งของฟังก์ชันการทำงานทางธุรกิจที่กำหนดไว้อย่างดีมีอยู่ในตัวเป็นอิสระเผยแพร่และพร้อมใช้งานผ่านอินเทอร์เฟซการเขียนโปรแกรมมาตรฐาน การเชื่อมต่อระหว่างบริการจะดำเนินการโดยโปรโตคอลทั่วไปและแบบเน้นข้อความทั่วไปเช่นโปรโตคอลบริการเว็บ SOAP ซึ่งสามารถส่งคำขอและการตอบสนองระหว่างบริการได้อย่างหลวม ๆ
สถาปัตยกรรมเชิงบริการคือการออกแบบไคลเอนต์ / เซิร์ฟเวอร์ซึ่งสนับสนุนแนวทางด้านไอทีที่ขับเคลื่อนด้วยธุรกิจซึ่งแอปพลิเคชันประกอบด้วยบริการซอฟต์แวร์และผู้ใช้บริการซอฟต์แวร์ (หรือที่เรียกว่าไคลเอนต์หรือผู้ร้องขอบริการ)
คุณสมบัติของ SOA
สถาปัตยกรรมที่มุ่งเน้นบริการมีคุณสมบัติดังต่อไปนี้ -
Distributed Deployment - เปิดเผยข้อมูลขององค์กรและตรรกะทางธุรกิจเป็นหน่วยการทำงานที่เรียกว่าบริการอย่างหลวม ๆ คู่ค้นพบโครงสร้างเป็นไปตามมาตรฐานหยาบหยาบไร้สัญชาติ
Composability - รวบรวมกระบวนการใหม่จากบริการที่มีอยู่ซึ่งเปิดเผยในรายละเอียดที่ต้องการผ่านอินเทอร์เฟซการร้องเรียนที่กำหนดไว้อย่างดีเผยแพร่และมาตรฐาน
Interoperability - แบ่งปันความสามารถและนำบริการที่ใช้ร่วมกันมาใช้ซ้ำในเครือข่ายโดยไม่คำนึงถึงโปรโตคอลหรือเทคโนโลยีการใช้งาน
Reusability - เลือกผู้ให้บริการและเข้าถึงทรัพยากรที่มีอยู่ซึ่งเปิดเผยเป็นบริการ
การทำงานของ SOA
รูปต่อไปนี้แสดงให้เห็นว่า SOA ทำงานอย่างไร -
Advantages
การเชื่อมต่อแบบหลวม ๆ ของการวางแนวบริการทำให้เกิดความยืดหยุ่นอย่างมากสำหรับองค์กรในการใช้ประโยชน์จากแหล่งบริการทั้งหมดที่มีอยู่โดยไม่คำนึงถึงข้อ จำกัด ของแพลตฟอร์มและเทคโนโลยี
ส่วนประกอบของบริการแต่ละส่วนไม่ขึ้นอยู่กับบริการอื่น ๆ เนื่องจากคุณลักษณะของบริการไร้สัญชาติ
การใช้งานบริการจะไม่ส่งผลกระทบต่อการใช้บริการตราบเท่าที่ไม่มีการเปลี่ยนแปลงอินเทอร์เฟซที่เปิดเผย
ลูกค้าหรือบริการใด ๆ สามารถเข้าถึงบริการอื่น ๆ โดยไม่คำนึงถึงแพลตฟอร์มเทคโนโลยีผู้ขายหรือการใช้งานภาษา
การนำทรัพย์สินและบริการกลับมาใช้ใหม่ได้เนื่องจากลูกค้าของบริการจำเป็นต้องรู้จักอินเทอร์เฟซสาธารณะองค์ประกอบของบริการเท่านั้น
การพัฒนาแอปพลิเคชันทางธุรกิจที่ใช้ SOA นั้นมีประสิทธิภาพมากกว่าในแง่ของเวลาและต้นทุน
ช่วยเพิ่มความสามารถในการปรับขนาดและให้การเชื่อมต่อมาตรฐานระหว่างระบบ
การใช้ 'บริการทางธุรกิจ' อย่างมีประสิทธิภาพและประสิทธิผล
การรวมจะง่ายขึ้นมากและปรับปรุงความสามารถในการทำงานร่วมกันภายใน
ความซับซ้อนเชิงนามธรรมสำหรับนักพัฒนาและกระตุ้นให้กระบวนการทางธุรกิจใกล้ชิดกับผู้ใช้มากขึ้น