Chính xác thì máy tính phân tán là gì? [đóng cửa]


14

Chính xác thì cái gì cấu thành tính toán phân tán và nó khác với tính toán song song / đồng thời như thế nào?

Có phải việc sử dụng mutexes và semaphores trong nhiều luồng song song cố gắng đồng bộ hóa để truy cập vào một tài nguyên có tạo thành một vấn đề trong lĩnh vực điện toán phân tán không?

Câu trả lời:


8

Chính xác những gì cấu thành tính toán phân tán?

Tính toán phân tán là một vốn thu song song của các yếu tố đó liên lạc với nhau để giải quyết một hoặc nhiều vấn đề chế biến. Các yếu tố xử lý này được tách biệt hoàn toàn với nhau mà không thực tế để xây dựng một kết cấu nhắn tin kịp thời và đáng tin cậy giữa chúng, và do đó không thể có kiến ​​thức toàn cầu về trạng thái của hệ thống. Các tính năng đặc biệt của nhắn tin với các hệ thống phân tán là tin nhắn sẽ bị mất, sẽ bị cắt xén, sẽ bị trì hoãn - các giải pháp trong không gian này phải tính đến điều này. Do đó, lập trình phân tán là về việc xử lý các mạng và thông điệp, song song và thiếu thông tin toàn cầu.

Phương pháp đơn giản nhất để giải quyết các vấn đề là làm cho một yếu tố xử lý duy nhất trở nên đặc biệt, nghĩa là có thẩm quyền đối với một phần thông tin cụ thể. Sau đó, các yếu tố khác có thể quay lại thông tin đó mỗi lần hoặc lưu trữ thông tin và hy vọng rằng nó không bị lỗi thời (vì họ không thể tin vào việc được thông báo về các thay đổi). Đây là kiến ​​trúc máy khách / máy chủ cổ điển.

Điện toán Internet điện toán phân tán, nhưng không có khả năng kiểm soát hầu hết các nút phân tán thực sự làm gì.

Do nhiều luồng song song cố gắng đồng bộ hóa để truy cập vào tài nguyên có phải là một vấn đề trong lĩnh vực điện toán phân tán không?

Chúng tạo thành một giải pháp khả thi hữu ích khi xây dựng mô hình máy khách / máy chủ, nhưng với chi phí gia tăng đáng kể trong sự tranh chấp tài nguyên. Đối với việc đọc, đó không phải là một vấn đề lớn (cung cấp đủ phần cứng) nhưng đối với việc viết thì đó thực sự là một vấn đề lớn.

Những gì bạn cố gắng tránh mặc dù là khóa phân phối. Việc thiếu tin nhắn kịp thời đáng tin cậy hoàn toàn làm chậm các giao thức quyết định phân tán, trừ khi bạn sử dụng một cái gì đó như giao thức Paxos , nhưng điều đó có rất nhiều cảnh báo. Vấn đề cơ bản với điện toán phân tán là "những thứ xấu xảy ra với tin nhắn". Các giao thức cấp độ tương đối thấp, như TCP, giảm bớt các vấn đề, nhưng bạn vẫn có thể không bị ảnh hưởng xấu.


6

Do nhiều luồng song song cố gắng đồng bộ hóa để truy cập vào tài nguyên có phải là một vấn đề trong lĩnh vực điện toán phân tán không?

Họ làm nếu các luồng đó có thể chạy trên các máy khác nhau hoặc ngay cả khi chúng chạy trên cùng một máy nhưng trong các quy trình khác nhau.


1
Các luồng chạy trên các máy khác nhau về cơ bản không thể được đồng bộ hóa theo cách truyền thống của mutexes và semaphores.
Jan Hudec

@JanHudec Tôi nghĩ đó là điểm của câu hỏi của người phỏng vấn. Nếu không có các hướng dẫn kiểm tra và thiết lập hoặc so sánh và trao đổi nguyên tử hoặc bộ nhớ dùng chung, máy tính phân tán phải dựa vào tin nhắn giữa các máy để đồng bộ hóa. May mắn thay, có những thuật toán thực hiện điều này.
Caleb

Tôi không đồng ý với "may mắn thay". Các thuật toán rất phức tạp và không có khả năng chịu lỗi, vì vậy chúng nên được tránh.
Jan Hudec

5

Điện toán phân tán là một hệ thống máy tính có quá trình xử lý xảy ra trên các máy tính khác nhau (tức là trên hệ thống phân tán). Các chương trình riêng lẻ giao tiếp với nhau thông qua một loạt các kênh truyền thông. Các kênh này thường là kết nối mạng (ví dụ: ổ cắm TCP), nhưng thường sử dụng các giao thức và thiết bị giao tiếp khác (như DeviceNET, BACNet, SECS-2, Modbus, v.v.) hoặc thậm chí các giao thức được tùy chỉnh cho một thiết bị cụ thể.

Các hệ thống phân tán thường phức tạp hơn nhiều so với các hệ thống được thiết kế để chạy trên một máy tính. Ngoài các vấn đề khóa đồng thời và khóa tài nguyên mà các ứng dụng đa luồng cần phải giải quyết, các hệ thống phân tán cần xử lý các lỗi giao tiếp và xử lý các lỗi nút. Các giao dịch (và rollback) yêu cầu nhiều bộ xử lý để thực hiện cũng có thể khó khăn.

Hệ thống phân tán có nhiều dạng và hiện đang được sử dụng trong nhiều ứng dụng. Các ứng dụng web là các hệ thống phân tán. Một hệ thống N-Tiered thường có ít nhất N bộ xử lý khác nhau (với các ứng dụng khác nhau). Hệ thống phân tán cũng được sử dụng trong nhiều hệ thống tự động hóa nhà máy là tốt.

Bài viết về điện toán phân tán trong Wikipedia đáng để đọc.

Trả lời cho bạn câu hỏi về việc một ứng dụng đa luồng có cấu thành một ứng dụng phân tán hay không - nếu các luồng đang chạy trên một máy tính, hệ thống không được phân phối. Nó phải giải quyết một số vấn đề cố hữu trong các hệ thống phân tán, nhưng không phải tất cả chúng.


3

Nói một cách chính xác "điện toán phân tán" là bất kỳ giải pháp nào liên quan đến việc xử lý một giao dịch / yêu cầu / tính toán trên nhiều máy tính.

Bạn cũng sẽ bắt gặp thuật ngữ "Hệ thống phân tán", một thuật ngữ bắt tất cả các cửa sổ, unix và các máy chủ hệ thống nhỏ khác ban đầu được triển khai bên ngoài trung tâm dữ liệu trung tâm. Mặc dù các hệ thống này được triển khai bên trong trung tâm dữ liệu ngày nay rất bình thường, thuật ngữ này đã bị kẹt.


3

Để trả lời câu hỏi chung của bạn về những gì cấu thành tính toán phân tán, tôi muốn giới thiệu bài viết Lưu ý về tính toán phân tán của Ann Wollrath, Geoff Wyant, Jim Waldo và Samuel C. Kendall . Nó bao gồm lịch sử gần đây của các hệ thống phân tán và những thất bại của nó, và nó đề xuất rằng điện toán phân tán đòi hỏi phải suy nghĩ khác về các vấn đề liên quan.

Mặc dù cả mutexes và semaphores đều không được đề cập trong bài báo, nó cung cấp cái nhìn sâu sắc có giá trị về kỹ thuật phù hợp của một hệ thống phần mềm phân tán.

Về lý do tại sao người phỏng vấn của bạn hỏi về mutexes và semaphores, tôi sẽ đồng ý với @Caleb:

Họ làm nếu các luồng đó có thể chạy trên các máy khác nhau hoặc ngay cả khi chúng chạy trên cùng một máy nhưng trong các quy trình khác nhau.

Điều duy nhất tôi muốn nói thêm là mutexes và semaphores là các nguyên hàm khóa mức thấp cho phép bạn phân phối công việc trên nhiều thiết bị máy tính và hoạt động của chúng (thường) rất quan trọng đối với sự thành công của ứng dụng. Rõ ràng, nó phụ thuộc vào ngôn ngữ và công nghệ được sử dụng. Nếu bạn đang sử dụng Erlang hoặc Scala, có thể bạn sẽ sử dụng đồng thời dựa trên mô hình Actor thay vì đồng thời dựa trên khóa, truyền thống.


2

Từ này nói lên tất cả. Bạn phải thực hiện một số thao tác tính toán và nếu bạn có thể phân phối các phần của máy tính này sao cho mỗi máy tính hoạt động không phân biệt máy tính khác và sau đó khi hoàn tất, bạn kết hợp kết quả của từng máy tính để có câu trả lời cho máy tính chính. Ví dụ sẽ là: Map-Giảm


1

Chúng tôi đã có một khóa học về "các hệ thống phân tán" và trong khi tôi không nhớ chính xác định nghĩa, nó đã đi theo hướng:

  1. có thể chạy trên nhiều nút riêng biệt giao tiếp qua tin nhắn (không thể chia sẻ bộ nhớ)
  2. các đối tượng có thể được di chuyển giữa các nút
  3. các đối tượng giữ danh tính của họ khi di chuyển và có thể được giải quyết trong suốt khi di chuyển
  4. các đối tượng không phụ thuộc vào nút tạo ra chúng
  5. hệ thống có thể xử lý thêm và loại bỏ các nút

(Tôi tin rằng có một số nữa và tôi không chắc chắn về điểm cuối cùng)

Bây giờ trong khóa học, chúng tôi đã học cách thực hiện giao dịch phân tán và khóa phân tán. Bài học là khóa phân tán về cơ bản được thực hiện bằng cách sử dụng giao dịch phân tán, đó là cách khác so với những gì bạn làm tại địa phương và nó vốn không phải là lỗi, thay vào đó là đánh bại mục đích của việc có hệ thống phân tán ở nơi đầu tiên.

Chỉnh sửa: Định nghĩa đó dành cho "hệ thống phân tán" theo nghĩa hẹp của hệ điều hành hoặc hệ thống cơ sở dữ liệu và trái ngược với hệ thống máy khách-máy chủ đơn thuần. Bất cứ điều gì thỏa mãn điều kiện đầu tiên có thể được gọi là phân phối trong một số bối cảnh.

Thật trùng hợp, định nghĩa phù hợp với sự khác biệt giữa các hệ thống kiểm soát phiên bản phân tán và phiên bản truyền thống, tất cả đều ít nhất là máy khách-máy chủ và thường được sao chép.


Đó thực sự là một phong cách đặc biệt của điện toán phân tán. Có những người khác, và điều duy nhất họ thực sự chia sẻ là điểm đầu tiên. Nhắn tin là rất quan trọng, những người khác không quá nhiều.
Donal Fellows

1
@DonalFellows: Chà, đây là hệ thống phân tán , theo nghĩa vận hành hoặc hệ thống cơ sở dữ liệu. Có sự di chuyển và khả năng chịu lỗi là những điểm chính để thực hiện chúng. "Điện toán" phân tán là bất cứ thứ gì chạy trên nhiều nút.
Jan Hudec

Chà, trong trường hợp đó lẽ ra nó phải bảo vệ doanh nghiệp đi đến quyết định. Đó là khó khăn trong một hệ thống phân tán. (Hơn nữa, hầu hết các giấy tờ học tập tôi đã nhìn thấy trên làm chủ đề giả định hoàn toàn không thực tế về đồ thị topo cơ bản, đưa ra kết luận hợp lệ nhưng vô ích.)
Donal Fellows

@DonalFellows: Tất nhiên tất nhiên là bao gồm cả việc đưa ra quyết định và tất cả những thứ phân xử và phân chia não bộ (không quá sâu, nó chỉ ở cấp độ giới thiệu). Nhưng đó không phải là tài sản của hệ thống phân tán. Nó chỉ đơn thuần là một trở ngại bạn phải nhảy nếu bạn muốn tạo ra nó.
Jan Hudec

0

Điện toán phân tán thuật ngữ "không đánh dấu" cho điện toán doanh nghiệp mà bạn có thể nghe nhiều hơn trong cuộc sống thực. Tuy nhiên, ý tưởng chung như được chỉ ra bởi những người khác là "bạn đang sử dụng nhiều máy tính để làm việc"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.