DISTRIBUTED COMPUTING LÀ GÌ

Ngày xưa, dịp new hợp tác vào làm dự án Penlook với mấy ông anh, Khi bàn về kiến trúc gồm đề ra chia sở hữu mang đến các server. Sau này đi làm việc bao gồm tay nghề rồi bắt đầu biết nó là gì. Giờ trên đây đưa ra quyết định ghi chú lại để dành gọi.

Bạn đang xem: Distributed computing là gì

*

Dẫn nhập

Giả sử sau khi cách tân và phát triển chấm dứt một trang web mua sắm nhạc cố, ta vẫn nghĩ về chỉ việc mướn 1 con server chạy là đủ rồi. Cấu hình trung bình 1 CPU, 1GB RAM, 25GB SSD, 1TB băng thông là được. Và ta đã host lên hệ thống cùng với domain name là https://instruments.com.

Khoảng 3 tháng thứ nhất có tác dụng ăn uống ko cải cách và phát triển lắm, khoảng 1000 lượt truy hỏi cập/ngày, tương đương 2 lượt truy vấn cập/phút. Bỗng một ngày đẹp mắt ttránh, các bạn nhập vè nhạc thay new vượt hot đi, phần đa bạn đổ xô vào web của công ty để mua hàng. Có thời điểm lên đến 1000 lượng truy vấn tại một thời điểm, rồi VPS bị sập. Sau đó, bạn bước đầu mày mò ngulặng nhân cùng biện pháp xử lý cho vấn đề trên.

*

Tìm hiểu vấn đề

Công cầm dễ dàng nhất nhằm mày mò con số requests dẫn mang lại sập hệ thống đó là Apache JMeter. Sau Lúc kiểm demo với nhiều kĩ năng thì sẽ phạt hiện nay tín hiệu của sự việc. Vấn đề sinh hoạt đấy là đến 1000 requests tại 1 thời điểm là VPS vẫn sập.

Cảm thấy hoang mang và sợ hãi, chúng ta lên Google tò mò và ra được giải pháp. Đó là Scale Up (xuất xắc Scale Vertically) và Scale Out (giỏi Scaling Horizontally).

Scale Up - Mục đích là nâng cấp performance của VPS ngày nay. Có 2 phía tiếp cận sẽ là tăng cấp phần cứng hoặc về tối ưu hoá mã nguồn. Scale Out - Mục đích là tăng con số VPS. Sau đó, sử dụng nguyên lý load balancing nhằm điều phối cho các hệ thống vẫn thông số kỹ thuật.
*

Scale Up

Nlỗi đang nói, phương thức Scale Up là tăng thêm tài nguim (RAM/CPU/DISK) đến server. Pmùi hương pháp này tương đối tốn kỉm ngân sách. Do kia, tín đồ ta gồm một giải pháp khác để tiết kiệm chi phí ngân sách sẽ là thực hiện technology ảo hoá (Virtualization). Có một trong những một số loại công nghệ ảo hoá sau:

Hardware Virtualization OS-level Virtualization Desktop Virtualization Application Virtualization Network Virtualization

Scale Out

Phương thơm pháp Scale Out là tạo thêm con số hệ thống. Pmùi hương pháp này ban sơ hơi tốn kém so với Scale Up tuy vậy sau này đang tiết kiệm ngân sách rộng. Đây là phiên bạn dạng đơn giản và dễ dàng của Distributed System. Vì những hiểu biết của Distributed System phức hợp hơn những cùng có nhiều vụ việc chuyên môn phải quan tâm rộng.

*

Tại sao buộc phải Distributed System?

Hệ thống của chúng ta cách xử trí các bước đề nghị tốn các tài nguyên ổn. Đôi khi vượt vượt kỹ năng của một hệ thống đề nghị các bạn sẽ rất cần phải Scale Out hệ thống. Lúc kia, khối hệ thống bạn phải bảo đảm các tiêu chuẩn sau:

Tốc độ của bộ nhớ Dung lượng to với vận tốc Input/Output cực nhanh Tốc độ cách xử lý tính toán thù (10, 100,.. thậm chí là cả ngàn core) Tin cậy, luôn luôn sẵn sàng, downtime gần bởi 0 Độ trễ tốt. Độ trễ được xác định như sau: result = query(all data in the system)

Do kia, cùng với Distributed System thì các bạn sẽ gồm phương pháp thực hiện tương xứng với công việc hơn. Sau đó là quan niệm.

A distributed system is a collection of independent computers that appears khổng lồ its users as a single coherent system. Andrew S.Tanenbaum

Có hai công việc cơ bản của một hệ thống máy vi tính chính là Lưu TrữTính Toán. Distributed System là nghệ thuật giải quyết vấn đề của một laptop trên các máy vi tính.

*

Mục tiêu của Distributed System

Để làm gì, cũng cần phải gồm mục tiêu của nó. Dưới đó là một vài phương châm mà họ yêu cầu cố gắng để tiến hành nó.

Dễ dàng tầm nã xuất tài nguyên

Cho phxay người dùng (ứng dụng) dễ ợt truy vấn xuất tài nguyên ổn tự xa.

Tính trong suốt

Ẩn giấu sự tách rạc của khối hệ thống so với người tiêu dùng. Theo nhỏng Andrew S.Tanenbaum và Maarten Van Steen ra mắt vào "Distributed Systems: Principles & Paradigms", tiêu chuẩn này được ghi ví dụ vào sệt tả ISO, năm 1995. Cụ thể thì bản thân trong rõ phiên bản như thế nào.

Access transparency - che giấu sự khác hoàn toàn về kiểu cách màn biểu diễn cùng giải pháp truy cập tài nguyên ổn Location transparency - bít giấu vị trí của tài nguyên ổn Migration transparency - bịt giấu tài năng gửi vị trí của tài ngulặng Relocation transparency - bít giấu bài toán dịch chuyển của tài nguim Lúc đang rất được thực hiện Replication transparency - bịt giấu chứng trạng chứng trạng thực hiện bạn dạng sao của tài nguyên Concurency transparency - che giấu sự chia sẻ tài nguyên bên cạnh đó Failure transparency - che giấu lỗi hệ thống ví như gồm

Về cường độ của tính nhìn trong suốt, chúng ta nên cân nhắc thực hiện nhưng mà chưa hẳn hoàn toàn ẩn không còn cùng với người dùng.

Xem thêm: Ngành Thiết Kế Đồ Họa: Học Nghề Đồ Họa Ở Đâu Và Cơ Hội Nghề Nghiệp?

Người dùng làm việc những chchâu âu khác biệt, múi giờ đang khác nhau. Hoàn toàn ẩn các lỗi mạng là thiết yếu (về thực tế lẫn lý thuyết), do: Không tách biệt máy tính lờ lững hay bị lỗi Không biết trước được máy vi tính có thực thụ triển khai dứt một làm việc trước khi xẩy ra sự nỗ lực Chi tiêu về tính năng giả dụ trong veo hoàn toàn. ví dụ như, bạn có nhu cầu in tài liệu từ bỏ máy vi tính cá nhân. Máy tính của công ty kết nối với tương đối nhiều vật dụng in. Nếu bạn biết đồ vật in như thế nào đang "rảnh" sẽ chọn nhằm tiết kiệm ngân sách và chi phí thời gian hơn.

Tính mở

Tính msinh hoạt của Distributed System đọc là rất có thể liên can cùng với những hình thức dịch vụ không giống tự hầu như khối hệ thống mlàm việc không giống, bất cứ môi trường xung quanh nền tảng gốc rễ.

Hệ thống bắt buộc hỗ trợ tính cầm tay của vận dụng Hệ thống buộc phải tiện lợi tương thích. Cụ thể hơn là dễ dàng cấu hình khối hệ thống thoát ra khỏi các yếu tắc khác nhau (should be easy khổng lồ configure the system out of different components). Cũng như thể thuận lợi phân phối hoặc thay thế một component ngẫu nhiên mà ko cách biệt khối hệ thống.

Để đã có được tính mlàm việc, ít nhất làm cho Distributed System hòa bình với tính không đồng bộ của môi trường thiên nhiên nền tảng gốc rễ.

Phần cứng Platsize Ngôn ngữ

Tính mngơi nghỉ rộng

Khi nói đến tính mở rộng, ta đã tối thiểu về 3 tiêu chí sau:

Size scalability - thêm node vào hệ thống để tăng tốc độ xử trí tuy vậy ko làm tăng cường độ trễ Geographic scalability - thực hiện những data center làm việc nhiều khu vực khác nhau nhằm sút thời gian đề nghị hồi mang đến người dùng, mặc dù bạn buộc phải giải pháp xử lý độ trễ cực kì phù hợp (khá như thể tư tưởng của CDN) Administrative scalability - thêm các node, nhưng mà không có tác dụng tăng ngân sách thống trị Những sự việc lúc không ngừng mở rộng hệ thốngcố gắng tập trung dịch vụ - Một VPS đến tất toàn bộ cơ thể dùng Sẽ gây ra triệu chứng thắt cổ cnhị (bottleneck) Tập trung dữ liệu - Một cuốn nắn sổ điện thoại trực tuyến Giả sử chúng ta lưu tên miền của toàn bộ các trang web hiện giờ vào trong 1 table trong database, sẽ như thế nào nếu như bạn gửi 1 request đến truy vấn thông tin? Một phiên bạn dạng thắt cổ cnhì khác tại database. Thuật toán tập trung đặc điểm của thuận toán vào Distributed System không giống với các thuật toán vào Centralized System ở phần đề xuất triệu tập tài liệu sẽ gây ra thừa mua 1 phần mạng. Các Điểm lưu ý kia bao gồm: Không gồm máy như thế nào có công bố vừa đủ về tâm lý của hệ thống Máy móc đưa ra đưa ra quyết định dựa vào báo cáo toàn thể Thất bại của một lắp thêm không tác động mang đến thuật tân oán Không bao gồm đưa định ngầm rằng đồng hồ đeo tay toàn thể lâu dài Các chuyên môn msinh hoạt rộng

Có 3 chuyên môn cơ phiên bản vào Việc mở rộng Distributed System đó là: ẩn thời gian chờ, phân tán với nhân bản.

Ẩn thời gian đợi (hiding communication latencies)

Tránh thời hạn đợi ý kiến quá lâu. Minh hoạ mang đến vấn đề này là bình chọn dữ liệu của người tiêu dùng. Ttuyệt vì ngóng phía server xử trí thì soát sổ trên client bằng JavaScript vẫn tiết kiệm ngân sách và chi phí thời gian rộng.

*

Hình (a) là kiểm soát trên phía server. Hình (b) là khám nghiệm tại phía client.

Phân tán (Distribution)

Ta hoàn toàn có thể gọi bí quyết này là partition, Tức là phân tách để trị. lấy một ví dụ về DNS là cụ thể nhất về tính chất phân tán bên trên mạng Internet. Những team domain được chia nhỏ ra thành từng vùng. Chẳng hạn, thương hiệu miền nl.vu.cs.flits. Ban đầu nó được giải pháp xử lý sinh sống vùng Z1, tiếp nối gửi quý phái vùng Z2 để còn vu.cs.flits rồi cho Z3 thành cs.flits.

*
Nhân bản (Replication)

Tức là ta vẫn coppy tài liệu ra các vị trí để tăng tốc độ cách xử trí. Điển hình là caching.

*

Tính sẵn sàng

Phần này bản thân thấy Mikito Takadomain authority tất cả nhắc đến tương đối thú vui, đề nghị thêm vào luôn luôn. Tính sẵn sàng biểu hiện làm việc Phần Trăm thời hạn khối hệ thống trong tinh thần vận động. Nếu người tiêu dùng tất yêu truy vấn vào hệ thống, Tức là nó ko chuẩn bị sẵn sàng. Distributed System được cho phép ta dành được phần đông tính năng mong muốn nhưng một máy lẻ không đáp ứng được. Vì nó là việc kết hợp từ nhiều vật dụng đề nghị có công dụng một vật dụng vào hệ thống bị sập. Distributed System là sự phối kết hợp của đa số mấy rất có thể sập bất kể lúc như thế nào với ta bắt buộc xây dựng một cơ đáng tin cậy bao hàm bọn chúng.

Tính sẵn sàng chuẩn bị nhìn ở khía cạnh kỹ thuật, sẽ là kỹ năng chịu lỗi. Bởi vì chưng tỷ lệ xẩy ra sự ráng tỉ trọng thuận với số lượng nguyên tố. Ta rất có thể lấy lệ đo đơn giản về tính chuẩn bị của khối hệ thống.

Công thức: Availability = uptime / (uptime + downtime)

*

Cạm bẫy

Có một trong những giả định sai lầm lúc cải cách và phát triển Distributed System. quý khách hãy loại bỏ nhé.

Mạng là đáng tin cậy Mạng là bảo mật thông tin Mạng là đồng bộ Cấu trúc links không biến đổi Độ trễ bằng không Băng thông là vô hạn giá thành tải bằng ko Chỉ có một quản lí trị viên

Tổng kết

Ban đầu bản thân nghĩ về Distributed System cũng chỉ cần Scale Out khối hệ thống solo thuần. Tuy nhiên, càng tò mò thì càng rối nùi vị để quản lý được hệ thống cần được có một số tiêu chuẩn cố định. Mình xem thêm một số trong những tài liệu nhằm giản lược, tuy nhiên khó khăn vượt thì vẫn đề nghị đọc "Distributed Systems: Principles và Paradigms" nhằm knhì sáng sủa, cùng cuốn nắn này hơi khó khăn nnhị. Tuy nhiên, nhằm dễ dàng cụ được nội dung thì chúng ta có thể tìm hiểu thêm "Distributed Systems for fun & profit" với "CSE 660 - An Introduction khổng lồ Distributed Systems".