Đã xảy ra trước và thứ tự nhân quả


7

Tôi đang đọc "Thời gian, Đồng hồ và thứ tự các sự kiện trong một hệ thống phân tán" của Lamport và có một chi tiết làm tôi khó chịu.

Lamport định nghĩa thứ tự "xảy ra trước", mà tôi hiểu. Sau đó, ông nói rằng "Một cách khác để xem định nghĩa là nói rằng a -> b có nghĩa là sự kiện a có thể ảnh hưởng đến sự kiện b".

Bây giờ hãy xem xét hai sự kiện a và b là các thông báo tiếp nhận tại một quy trình P1, sao cho a xảy ra trước b. Hơn nữa, giả sử a và b là hai sự kiện duy nhất từng xảy ra tại P1. Theo định nghĩa quan hệ đã xảy ra trước khi xảy ra, chúng ta có một -> b (có nghĩa là vì P1 đã quan sát các sự kiện đó theo thứ tự này).

Tuy nhiên, tôi không thấy làm thế nào để sự kiện a có thể ảnh hưởng đến sự kiện b. Hai sự kiện đó hoàn toàn không liên quan và có thể đã xảy ra theo một thứ tự khác.

Tôi đang thiếu gì ở đây?

Câu trả lời:


3

Lưu ý rằng quan hệ nhân quả là một thuật ngữ không xác định trong bài báo. Lamport đang sử dụng nó trong một lời giải thích không chính thức. Anh ta cho rằng có thể ảnh hưởng đến nhân quả là một khái niệm trực quan sẽ có ý nghĩa tương tự với độc giả của anh ta cũng như đối với anh ta. Tôi nghĩ cho Lamportmột có thể gây ảnh hưởng bthực sự có nghĩa là một cái gì đó giống như thông tin có thể chảy từmột đến b hoặc là một có thể tác động đến hành vi của b, hơn cả ý tưởng Aristoteles cổ điển của b là hậu quả vật lý của một.

Ví dụ: giả sử một máy tính đang thực hiện một chương trình có hai câu lệnh:

a: X := 1
b: print X

Tôi nghĩ rằng tất cả chúng ta có thể đồng ý rằng tuyên bố đó a xảy ra trước đây b nhưng tôi sẽ không nói rằng "việc thực thi câu lệnh gán (sự kiện a) đã khiến chương trình thực thi printcâu lệnh (sự kiện b)". Mặt khác, tôi có thể nói điều gì đó hơi khác: "sự kiện a, (gán giá trị 1 cho X), ảnh hưởng đến giá trị được in bởi sự kiện b."

Bây giờ hãy lấy một ví dụ (có khả năng) gây tranh cãi hơn.

a: X := 1
b: Y := 1

a xảy ra trước đây b , nhưng tôi nghĩ hầu hết mọi người sẽ nói, "không có mối quan hệ nhân quả giữa ab." Nhưng trong bài báo này có một mối quan hệ nhân quả giữa ab . Tôi sẽ cố gắng giải thích điều này một cách ngắn gọn nhất có thể, nhưng nó sẽ dài dòng.

Bài viết về máy nhà nước

Dưới đây là những gì Lamport nói về bài báo trên trang chủ của mình :

Một hệ thống phân tán có thể được mô tả như một máy trạng thái tuần tự cụ thể được triển khai với một mạng các bộ xử lý. Khả năng hoàn toàn đặt hàng các yêu cầu đầu vào dẫn ngay đến một thuật toán để thực hiện một máy trạng thái tùy ý bởi một mạng các bộ xử lý, và do đó để thực hiện bất kỳ hệ thống phân tán nào. Vì vậy, tôi đã viết bài báo này, đó là về cách thực hiện một máy trạng thái phân tán tùy ý. ...

Đây là bài báo thường được trích dẫn nhất của tôi. ... Nhưng tôi hiếm khi gặp bất cứ ai biết rằng bài báo nói bất cứ điều gì về máy móc nhà nước. Mọi người dường như nghĩ rằng đó là về mối quan hệ nhân quả đối với các sự kiện trong một hệ thống phân tán hoặc vấn đề loại trừ lẫn nhau phân tán. Mọi người đã nhấn mạnh rằng không có gì về máy móc nhà nước trong bài báo. Tôi thậm chí đã phải quay lại và đọc lại nó để thuyết phục bản thân mình rằng tôi thực sự đã nhớ những gì tôi đã viết.

Mỗi quy trình là một máy trạng thái và thành phần của các quy trình thành một hệ thống / thuật toán phân tán là một máy trạng thái.

Lamport đang ngầm sử dụng một ký hiệu tay ngắn mà trong thiết kế kỹ thuật số, chúng tôi gọi là chuyển đăng ký và mỗi quy trình là (ngầm) một máy trạng thái thuật toán . Điều chúng tôi thực sự quan tâm là làm thế nào mỗi sự kiện ảnh hưởng đến toàn bộ trạng thái của mỗi quá trình. Mỗi câu lệnh chuyển đăng ký là một cách nói ngắn gọn về một tập hợp các trạng thái chuyển tiếp phụ thuộc vào trạng thái trước đó.

Vì vậy, trong ví dụ "gây tranh cãi" của chúng tôi, trạng thái của máy có hai phần X,Y. Tuyên bố chuyển đăng ký Y := 1là viết tắt cho bốn lần chuyển trạng thái khác nhau:0,00,1, 0,10,1, 1,01,11,11,1. Vì vậy, những gì đã xảy ra trong tuyên bố atác động rất nhiều đến trạng thái cuối cùng được tạo ra bởi tuyên bố b. Trong trường hợp của chúng tôi, chúng tôi biết rằng trạng thái cuối cùng là1,1, và đó sẽ không phải là trường hợp đã akhông được thực hiện, hoặc đã alà một đạo luật khác (như X := 0).

Bài viết nói về việc một trong những máy trạng thái phân tán có thể biết bao nhiêu về trạng thái của các máy trạng thái khác, vì vậy rất có vấn đề gì xảy ra với mọi thứ trên từng máy.


Đó cũng là cách tôi diễn giải định nghĩa không chính thức của Lamport về "nhân quả có thể". Nhưng trong ví dụ ban đầu của tôi, a và b là phần tiếp nhận tin nhắn. Vì vậy, không có cách nào có thể để a ảnh hưởng đến b.
Nemo

4

Như đã được chỉ ra bởi cả @kramthegram và @Wandering Logic, sự kiện một sự kiện "đã xảy ra trước đây" bkhông không ngụ ý rằngmột đã gây ra b (xảy ra).

Nhân quả như vậy được sử dụng trong bài báo của Lamport thường được gọi là quan hệ nhân quả tiềm năng . Nó nắm bắt tất cả các khả năng, thường tạo ra một biểu đồ nhân quả khổng lồ và trong thực tế, nó phá hỏng khả năng mở rộng / hiệu suất của các hệ thống phân tán.

Để giải quyết các vấn đề này, chúng ta có thể xem xét quan hệ nhân quả rõ ràng hoặc phụ thuộc nhân quả do ứng dụng chỉ định. Một ví dụ phổ biến là các ứng dụng mạng xã hội: Alice đã đọc 100 bình luận trong một chuỗi hội thoại và trả lời 5 trong số đó bằng một bình luận. Nhận xét của cô ấy ngay lập tức xảy ra - trước khi sự phụ thuộc chỉ có thể bao gồm 5 bình luận này (thay vì tất cả 100 bình luận này có quan hệ nhân quả tiềm năng ).

Đó là nhân quả tốt hơn ? Vâng, nó phụ thuộc. Ví dụ, quan hệ nhân quả tiềm năng chiếm ưu thế trong lĩnh vực nghiên cứu gỡ lỗi các chương trình đa luồng. Có hai lý do chính (theo ý kiến ​​của tôi): Thứ nhất, chúng tôi không có ngữ cảnh / ngữ nghĩa cho biết liệu hai sự kiện (đọc hoặc là viếthoạt động) có hiệu quả liên quan đến nhân quả hay không. Thứ hai, chúng tôi muốn nắm bắt tất cả các mối quan hệ nhân quả có thể có giữa các sự kiện và tiết lộ càng nhiều lỗi càng tốt.

Để biết thêm các cuộc thảo luận về quan hệ nhân quả tiềm năngquan hệ nhân quả rõ ràng , vui lòng tham khảo bài viết này: Những nguy cơ tiềm ẩn của tính nhất quán nguyên nhân và một giải pháp rõ ràng .


2

Thiếu của bạn việc lựa chọn từ có thể . Nó không có nghĩa là mối quan hệ thực sự là nhân quả, chỉ là nó có thể cho một có tác động nhân quả trên b . Những tuyên bố của anh ta không sai, bạn chỉ đọc nhiều về họ hơn là anh ta thực sự nói rõ. Chỉ vì nó có thể không có nghĩa là nó đúng. Câu lệnh mạnh hơn là nghịch đảo, nếu a không tiến hành b nó là bất khả thi đối với một để có một nguyên nhân ảnh hưởng đến b . Đó chỉ là vấn đề từ ngữ.


Nhưng ở đây, a và b không thể liên quan đến nhau một cách nhân quả (trừ khi tôi hiểu nhầm điều gì đó). Theo logic của bạn, mối quan hệ R liên quan đến tất cả các sự kiện sẽ phù hợp với định nghĩa của "R (a, b) có nghĩa là sự kiện a có thể ảnh hưởng đến sự kiện b" và bạn đồng ý với tôi rằng nó không đúng .
Nemo

1
Có thể, anh ta chỉ xem các sự kiện a và b là những điều xảy ra trong quá trình P1 và bỏ qua các thông tin bổ sung mà chúng gây ra bởi bối cảnh bên ngoài. Trong trường hợp đó, a có thể đã ảnh hưởng đến sự kiện b.
Nemo

Chính xác, tuyên bố không nói A chỉ có ảnh hưởng đến B mà A có thể có ảnh hưởng đến B. Nếu A xảy ra sau B thì quá trình không biết gì về trạng thái của A khi B xảy ra do đó không thể thực hiện quyết định về việc B sử dụng bất kỳ thông tin nào từ A. Tuy nhiên nếu A xảy ra trước B thì nó có thể có kiến ​​thức về A và do đó bị ảnh hưởng bởi nó.
cmaynard 4/03/2015

@Nemo Tôi chưa kiểm tra ví dụ trong bài báo gốc, nhưng từ những gì bạn đã nêu ở đây, có thể a sẽ ảnh hưởng đến b: nếu nhận được một nguyên nhân P bị sập hoặc bị đình trệ thì b sẽ không xảy ra. Hành vi này là không thể trong tất cả các mô hình.
Gilles 'SO- ngừng trở thành ác quỷ'
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.