c7

Màu nền
Font chữ
Font size
Chiều cao dòng

NHÂN BẢN VÀ NHẤT QUÁN

Có 2 lý do chính để thực hiện việc nhân bản dữ liệu.

Để tăng tín tin cậy cho hệ thống : Trong quá trình đọc hoặc ghi dữ liệu , nếu một bản sao bị hỏng hoặc vì lý do nào đấy nó không sẵn sàng để dùng thì ta có thể sử dụng một bản khác. Tránh việc sử dụng dữ liệu sai lạc, không chính xác. 

Để tăng hiệu năng của hệ thống : Tăng quy mô của hệ thống cả về số lượng lẫn phạm vi địa lý. 

Ví dụ như nếu số lượng máy tăng => tải trên mỗi máy trong hệ phân tán cũng ko tăng lên nhiều hơnphạm vi địa lý tăng => có thể sử dụng các bản nhân bản gần khu vực địa lý đó .

Một cái giá phải trả cho việc nhân bản dữ liệu đấy là phải chắc chắn rằng khi một bản sao được cập nhật thì tất cả những bản còn lại cũng phải được cập nhật theo để đảm bảo tính nhất quán của dữ liệu. Điều này ảnh hưởng rất lớn đến hiệu năng của hệ thống.

Ví dụ : khi sử dụng các chương trình xem web => dữ liệu được ghi vào bộ nhớ máy tính ( bản sao ) ,nếu trang web nội dung thay đổi . người dùng vẫn chỉ xem nội dung trên máy => cũ . Vấn đề đồng bộ dữ liệu trên máy khách và trên máy chủ .

Có 2 hướng tiếp cận cho việc nhân bản đối tượng. 

Ứng dụng tự chịu trách nhiệm nhân bản. Do đó ứng dụng cần giải quyết được vấn đề nhất quán.

•Hệ thống (middleware) đảm trách việc nhân bản. Vì thế vấn đề nhất quán do middleware đảm trách. Hướng này đơn giản hóa cho việc phát triển ứng dụng nhưng lại khiến các giải 

1. Các mô hình nhất quán lấy dữ liệu làm trung tâm.

Mô hình nhất quán được sử dụng rộng rãi nhất là mô hình lấy dữ liệu làm trung tâm. Trong mô hình này, bất kì người sử dụng nào truy cập vào kho dữ liệu cũng sẽ nhìn thấy các thao tác được sắp xếp theo mô hình. Điều này trái ngược với các mô hình lấy client làm trung tâm nơi client được yêu cầu một mô hình nhất quán cụ thể và các client khác nhau sẽ nhìn thấy các thao tác theo những trật tự khác nhau.

•Kho dữ liệu có thể được đọc hay ghi bởi bất cứ tiến trình nào trong một hệ phân tán. Tuy nhiên dữ liệu ghi vào một bản sao cục bộ phải đảm bảo cũng được truyền tới tất cả các bản sao ở xa. Vì nguyên nhân này mà các mô hình nhất quán đã ra đời, mục đích là để giúp chúng ta có thể hiểu rõ về các cơ chế khác nhau được sử dụng để thực hiện phần việc này.

•Một mô hình nhất quán có thể được coi là một bản hợp đồng giữa một kho dữ liệu của hệ phân tán với các các tiến trình của nó. Nếu các tiến trình đồng ý với các điều khoản của hợp đồng thì kho dữ liệu sẽ hoạt động đúng như tiến trình mong muốn.

 1.1 Nhất quán tuyến tính 

Phương pháp này hoạt động dựa trên việc xác định xem việc ko nhất quán nào là có thể chấp nhận được dựa vào việc xác định các thông tin sau : 

•Độ lệch bằng số giữa các bản sao 

•Độ lệch theo trạng thái giữa các bản sao 

•Độ lệch trong thứ tự các lần cập nhật 

Như vậy trong hệ thống sẽ quy định một độ lệch giữa các bản sao . Nếu một phiên bản được cập nhật mà độ lệch chưa đạt tới giá trị quy định thì giữa bản sao đó và các bản sao khác vẫn được coi là nhất quán và ko phải thực hiện cập nhật .

- Độ lệch bằng số giữa các bản sao : thường sử dụng với các chương trình có dữ liệu là số . Có 2 dạng của độ lệch này là độ lệch tương đối và độ lệch tuyệt đối .Có thể xác định số này có thể xác định là số lượng bản cập nhật cho 1 bản sao nào đó .

- Độ lệch về trạng thái giữa các bản sao : liên quan đến thời gian cuối cùng 1 bản sao đã được cập nhật . Với 1 số ứng dụng thì nó có thể chấp nhận dữ liệu cũ , miễn là ko quá cũ . vd : trong dự báo thời tiết , máy chủ liên tục nhận được các thông tin về thời tiết nhưng chỉ đồng bồ 30’ 1 lần …

- Độ lệch trong thứ tự cập nhật : thứ tự cập nhật được phép khác nhau ở các bản khác nhau khi sự khác nhau vẫn trong giới hạn . Khi nhận được yêu cầu cập nhật , thì bản sao tạm thời cập nhật và chờ sự đồng ý của các bản sao khác về quá trình cập nhật . Như vậy cần có thêm 1 bản sao phụ để nếu không nhận được sự đồng ý cập nhật của các bản sao khác thì quay lại bản cũ . Có thể sau nhiều lần cập nhật tạm thời thì bản sao mới được cập nhật lâu dài 

Tóm lại , các bản sao có thể vẫn được sử dụng nếu sự khác nhau vẫn nằm trong giới hạn được chấp thuận . Một cách khác nữa là khi 1 bản sao được cập nhật thì nó sẽ chờ để được xác nhận trước khi cập nhật lên tất cả các bản sao khác . => thứ tự cập nhật rắc rối . Cách làm này cần lưu trữ thêm 1 bản để có thể quay lại nếu bản cập nhật không được chấp thuận . 

1.2 Nhất quán theo thứ tự thực hiện

Các mô hình nhất quán ở mục này sẽ đề cập đến : khi 1 bản sao cập nhật tạm cần được đồng bộ ở 1 bản sao , nó sẽ yêu cầu 1 sự đồng ý ở trên “ thứ tự cập nhật chung “ hoặc cần sự đồng ý cho sự cập nhật của mình ( thứ tự cập nhật của bản này )

a.Nhất quán tuần tự

Một kho dữ liệu được gọi là nhất quán tuần tự nếu nó thỏa mãn yêu cầu sau  : “Kết quả của bất kì sự thực hiện nào là như nhau nếu các thao tác (đọc và ghi) của tất cả các tiến trình lên dữ liệu đượcthực hiện môt cách tuần tự và các thao tác của mỗi tiến trình xuất hiện trong chuỗi thao tác này phải theo thứ tự đã được chỉ ra trong chương trình của nó” 

b.Mô hình nhất quán nhân quả

Nhất quán nhân quả là mô hình yếu hơn nhất quán tuần tự, mô hình này chỉ quan tâm đến các thao tác ghi có quan hệ nhân quả với nhau. “Các thao tác ghi có quan hệ nhân quả tiềm năng phải được nhìn thấy bởi tất cả các tiến trình theo cùng một trật tự, còn các thao tác ghi đồng thời có thể được nhận biết theo thứ tự  khác nhau trên những máy khác nhau”. 

Hai thao tác ghi được coi là có quan hệ nhân qủa với nhau nếu việc thực hiện một thao tác có khả năng gây ảnh hưởng đến dữ liệu được ghi bởi thao tác kia.

Đặc biệt,  hai thao tác bất kì được coi là có quan hệ nhân quả với nhau nếu:

•Một thao tác đọc có quan hệ nhân quả với thao tác ghi cung cấp dữ liệu cho nó.

•Một thao tác ghi có quan hệ nhân quả với một thao tác đọc xảy ra trước nó trong cùng một tiến trình.

•Nếu write1 ® read và read ® write2 thì write1 ® write2.

•Nếu các thao tác không có quan hệ nhân quả với nhau thì chúng được coi là xảy ra đồng thời. Các thao tác đọc đồng thời có thể được thực hiện theo bất kì trật tự nào miễn là chúng tuân theo trình tự của chương trình. 

c. Nhóm hoạt động

•Một thao tác yêu cầu để truy cập vào một biến đồng bộ hóa không được phép thực hiện trong một tiến trình cho đến khi tất cả các cập nhật lên dữ liệu bị gác trong tiến trình đó được thực hiện.

•Trước khi một truy cập trong chế độ dành riêng của một tiến trình tới một biến đồng bộ hóa được phép thực hiện thì không tiến trình nào khác còn được giữ các biến đồng bộ hóa, trong chế độkhông dành riêng thì không cần yêu cầu như vậy.

•Sau khi một truy cập trong chế độ dành riêng lên một biến đồng bộ hóa được thực hiện thì bất kì sự truy cập của tiến trình nào khác trong chế độ không dành riêng lên biến đó cũng không được thực hiện cho đến khi chủ nhân của biến đồng bộ thực hiện xong việc truy cập của mình.

Điều kiện đầu tiên nói rằng : Khi 1 tiến trình nào đó có 1 yêu cầu thì yêu cầu này có thể không được thực hiện cho đến khi tất cả các cập nhật được thực hiện trên các dữ liệu chia sẻ . Nói cách khác là các dữ liệu phải được đồng bộ trước khi thực hiện 1 yêu cầu nào đó .

Điều kiện thứ 2 nói rằng trong quá trình cập nhật thì tiến trình thực hiện cập nhật sẽ chuyển sang 1 chế độ độc quyền để không cho phép bất kỳ tiến trình nào khác có thể can thiệp vào quá trình cập nhật ( tiến trình cập nhật khác … )

Điều kiện thứ ba nói rằng nếu một quá trình muốn vào một khu vực quan trọng trong chế độ không độc quyền, nó trước tiên phải kiểm tra với chủ sở hữu của biến đồng bộ hóa đang bảo vệ khu vực quan trọng để lấy các bản sao gần đây nhất của chia sẻ dữ liệu bảo vệ. 

2. Nhất quán hướng người dùng (Mô hình nhất quán lấy client làm trung tâm)

Tất cả các mô hình nhất quán hướng dữ liệu đều cho rằng số thao tác đọc là xấp xỉ với số thao tác ghi và các thao tác ghi đồng thời thì xảy ra thường xuyên. Trái lại, các mô hình nhất quán hướng người dùng lại cho rằng client thực hiện các thao tác đọc thường xuyên hơn các thao tác ghi và có rất ít các thao tác ghi xảy ra đồng thời.

 Mục đích của nhất quán hướng người dùng là tập trung vào những gì mà client muốn chứ không phải những gì do server đề ra. Các mô hình này cũng cho phép người dùng linh động trong việc có thể kết nối tới nhiều bản sao khác nhau trong quá trình thực hiện của mình. 

Trong phần này chúng ta cũng được làm quen với khái niệm tập các thao tác ghi (WS-write set). Một tập các thao tác ghi chứa lịch sử các thao tác ghi mà dẫn đến một giá trị các định của một mục dữ liệu xác định trên một bản sao xác định. 

Ở mục này chúng ta sẽ xem xét 1 lớp đặc biệt của lưu trữ dữ liệu phân tán . Yêu cầu về sự nhất quán là yếu , nó xẩy ra rất nhiều sự không nhất quán . Các mô hình nhất quán hướng người dùng tương đối rẻ để xây dựng trong thực tế. 

2.1 Nhất quán cuối cùng

Yêu cầu duy nhất của mô hinh này là tất cả các bản sao cuối cùng rồi sẽ phải giống nhau. Tất cả các cập nhật phải đảm bảo là cuối cùng cũng sẽ được truyền tới tất cả các bản sao khác. Yêu cầu này sẽ được thực hiện tốt nếu mỗi client luôn chịu khó cập nhật cho các bản sao. Nhưng vấn đề sẽ xẩy ra nếu quá trình đó diễn ra liên tục và sẽ làm ảnh hưởng đến hiệu năng của hệ thống => giải pháp là chỉ áp dụng với các hệ phân tán chỉ đọc và ít cập nhật . Các bản cập nhật sẽ được cập nhật tuy nhiên tiến trình của người dùng sẽ truy cập được vào bản cập nhật này sau 1 thời gian nhất định , để đảm bảo ko có vấn đề lỗi khi 1 tiến trình đang ghi trong lúc 1 tiến trình khác đọc .

Tuy nhiên mô hinh này sẽ gặp một chút khó khăn nếu các client là di động.  

Khi người dùng cập nhật tại 1 địa điểm ( ghi dữ liệu vào database chẳng hạn )

( Trong 1 khoảng thời gian đủ ngắn ) Rồi đến 1 địa điểm khác , truy cập vào dữ liệu đó . Người đó sẽ tương tác với 1 cơ sở dữ liệu khác , và sẽ thấy rằng công việc mình làm hôm nay biến mất .

2.2 Nhất quán chỉ đọc : 

Mô hình nhất quán đọc đều đảm bảo rằng một client sẽ luôn nhìn thấy những dữ liệu mới hơn và không bao giờ phải nhìn thấy những dữ liệu cũ hơn những gì mà mình đã đọc trước đó. Điều đó có nghĩa là khi một client thực hiện một thao tác đọc trên một bản sao rồi tiếp theo lại đọc trên một bản sao khác thì bản sao thứ hai kia ít nhất cũng phải được ghi giống với bản sao đầu tiên.

Vd : Hòm mail , thì mô hình này đảm bảo nếu ở nhà mà mở ra được 10 cái thư , thì đến cơ quan ít nhất vẫn mở ra được 10 cái thư đó ( nếu chưa có thư nào thêm và ko xóa thư đi ) 

Để đảm bảo đây là nhất quán chỉ đọc , thì tất cả các hoạt động ghi WS(x1) ở L1 cần phải được chuyển sang L2 trước khi thực hiện quá trình đọc . Việc WS(x1) đã được chuyển sang L2 thể hiện qua WS(x1;x2) . Ở đây chỉ có 1 tiến trình P đọc dữ liệu từ x ở L1 và L2 .

(b) không có gì đảm bảo là WS(x2) có chứa các cập nhật ở L1 => đây không phải là nhất quán chỉ đọc 

2.3 Nhất quán chỉ ghi

Mô hình nhất quán ghi đều đảm bảo rằng một thao tác ghi lên một mục dữ liệu xác định sẽ được hoàn tất trước khi có bất kì tao tác ghi nào khác lên mục dữ liệu đó bởi cùng một client. Nói cách khác thì các thao tác ghi lên một mục dữ liệu sẽ được sắp xếp một cách có trật tự. 

Hình (a) Kho dữ liệu theo mô hình nhất quán ghi đều (b) Kho dữ liệu không theo mô hình nhất quán ghi đều.

Giống như nhất quán chỉ đọc , nhất quán chỉ ghi cần đảm bảo rằng các thao tác cập nhật trên L1 cần được chuyển sang L2 trước khi P thực hiện tiếp thao tác ghi W(x2) .

2.4 Nhất quán đọc kết quả ghi

Trong mô hình nhất quán này, người dùng được đảm bảo rằng sẽ luôn được nhìn thấy những kết quả ghi mới nhất. 

“Tác động của một thao tác ghi của một tiến trình lên mục dữ liệu x sẽ luôn được nhìn thấy bởi một thao tác đọc lần lượt trên x của cùng tiến trình đó”.

Tiến trình nhận nhiệm vụ ghi thì sẽ đảm trách luôn việc đọc như vậy thì quá trình ghi bắt buộc sẽ phải hoàn tất trước khi việc đọc được thực hiện => người dùng sẽ nhìn thấy kết quả ghi mới nhất

Vd : đồng bộ mật khẩu hoặc xem 1 trang web ( khi web browser sử dụng cache ) 

2.5 Nhất quán ghi theo sau đọc

Mô hình nhất quán này ngược với nhất quán đọc kết quả ghi, nó đảm bảo rằng một người dùng sẽ luôn thực hiện thao tác ghi lên một phiên bản dữ liệu mà ít nhất cũng phải mới bằng phiên bản cuối cùng của nó.

“Tác động bởi một thao tác ghi của một tiến trình lên mục dữ liệu x sẽ luôn được nhìn thấy bởi một thao tác đọc liên tiếp lên x của cùng tiến trình đó”. 

Bạn đang đọc truyện trên: Truyen2U.Pro

#windy