Xử lý phân tán hiện tại

Một phần của tài liệu Nghiên cứu các thuật toán giám sát và xử lý cạnh tranh giữa các thành phần phần mềm trên môi trường phân tán (Trang 70 - 71)

Trong bài luận văn này, chúng ta quan tâm đến vấn đề thuật toán giải quyết vấn đề xung đột khi nhiều hơn một thẻ ATM cùng giao dịch trên một tài khoản.

Lúc ban đầu, hệ thống không quản lý về vấn đề này mà chỉ quan tâm đến vấn đề là khách hàng có thể gửi tiền bất kỳ điểm giao dịch nào của ngân hàng và cũng có thể rút tiền tại bất kỳ điểm giao dịch nào cũng như tại bất kỳ máy ATM nào của hệ thống. Tuy nhiên hệ thống lúc đó lại không giả quyết vấn đề tương tranh xảy ra khi có nhiều thẻ ATM cùng giao dịch trên một tài khoản và đã xảy ra hiện tượng hai thẻ ATM cùng rút tiền và số tiền rút vượt quá số tiền của khách hàng trong tài khoản và như vậy ngân hàng đã bị mất tiền. Sau đó, để giải quyết vấn đề này, người ta đã đưa ra giải pháp thêm một trường trạng thái vào bảng cơ sở dữ liệu tài khoản khách hàng. Khi có một giao dịch trên tài khoản, trường trạng thái chuyển sang chế độ bận để không có một giao dịch khác có thể truy cập vào được, sau khi giao dịch hoàn tất thì trường trạng thái được trả lại chế độ rỗi, cho phép các giao dịch khác thực hiện. Như vậy khi có hai giao dịch rút tiền trên một tài khoản thì giao dịch nào truy cập vào trước sẽ đổi trường trạng thái sang chế độ bận, giao dịch rút tiền thứ hai sẽ nhận được thông báo “Account in use” để thông báo cho khách hàng biết là tài khoản đang bận và có một giao dịch khác đang được thực hiện trên tài khoản đó. Khách hàng thực hiện giao dịch rút tiền

sau sẽ đợi cho đến khi giao dịch rút tiền trước hoàn tất thì có thể rút tiền được. Với giải pháp này, ngân hàng không còn bị mất tiền như trước nữa.

Giải thuật áp dụng hiện tại cho ngân hàng đã đảm bảo cho ngân hàng không còn bị mất tiền như trước nữa, tuy nhiên nó vẫn không đảm bảo hoàn toàn là hệ thống hoạt động tốt vì các nguyên nhân sau đâu :

Thứ nhất là việc kết nối tới cơ sở dữ liệu một cách liên tục để lấy ra trạng thái của tài khoản sẽ góp phần làm chậm quá trình xử lý giao dịch.

Thứ hai là với cách giải quyết như trên, khi khách hàng nhận được thông báo là “Account in use” thì sẽ cố gắng thử lại giao dịch và do đó lượng thông điệp trên đường truyền sẽ tăng lên, gây ảnh hưởng đến sự lưu thông trên đường truyền. Ngân hàng đã bị xảy ra hiện tượng nghẽn mạng với lí do này.

Thứ ba, ta hãy xét trường hợp khi một giao dịch trên tài khoản đang thực hiện giữa chừng thì bị lỗi (ví dụ trường hợp xấu nhất là máy chủ ngừng hoạt động), giao dịch đó không thực hiện việc thiết lập lại trường trạng thái về chế độ rỗi. Như vậy, tất cả các giao dịch rút tiền, chuyển khoản… sau đó truy cập vào tài khoản này đều nhận được thông báo “Account in use” và không thực hiện được. Khi đó, để thiết lập lại trạng thái cho tài khoản, khách hàng là chủ tài khoản phải viết đơn đề nghị với ngân hàng. Lúc đó phía ngân hàng thực hiện thao tác thiết đặt lại trạng thái và khi đó khách hàng mới thực hiện lại được giao dịch. Tất nhiên, đây là cách giải quyết có thể chấp nhận được với nguyên nhân là đảm bảo ngân hàng thiết lập lại trạng thái cho đúng tài khoản đang bị lỗi chứ không phải là tài khoản đang giao dịch. Tuy nhiên đây chính là điều phiền toái cho khách hàng, gây ra sự khó chịu cho khách hàng, bởi vì hệ thống bị lỗi là do phía ngân hàng chứ không phải do phía khách hàng.

Một phần của tài liệu Nghiên cứu các thuật toán giám sát và xử lý cạnh tranh giữa các thành phần phần mềm trên môi trường phân tán (Trang 70 - 71)