Mô hình nâng cấp

Một phần của tài liệu (Luận văn thạc sĩ) nâng cấp động các thành phần của hệ thống phân tán (Trang 26 - 31)

Với hệ thống phân tán (dựa trên mô hình nhƣ bộ nhớ dùng chung, đối tƣợng phân tán, hệ thống file phân tán) tự động nâng cấp đƣợc hiểu nhƣ là định nghĩa nâng cấp tại một vị trí trung tâm, từ đó hệ thống tự động triển khai nâng cấp và cài đặt trên các nút khác của hệ thống. Trong quá trình đó luôn phải kiểm soát đƣợc các nút nâng cấp với độ chính xác nhƣ điều khiển nâng cấp bằng tay. Để đảm bảo tốt việc kiểm soát này có thể thử nghiệm nâng cấp trên một vài nút trƣớc khi cài đặt nó ở khắp mọi nơi; hay nâng cấp trên bản sao của hệ thống. Từ đó đặt ra vấn đề, việc nâng cấp mặc dù có kiểm soát nhƣng vẫn không đồng bộ, nghĩa là các nút có thể nâng cấp một cách độc lập và xẩy ra bất cứ khi nào. Khi đó sẽ có khoảng thời gian dài hệ thống sẽ chạy trong trong chế độ hỗn tạp giữa các phiên bản bởi một số nút đã đƣợc nâng cấp, còn một số nút thì không. Bởi vậy, hệ thống muốn nâng cấp cần phải cung cấp dịch vụ ngay cả khi nâng cấp không tƣơng thích, một cơ chế hoạt động không hạn chế các loại thay đổi một nâng cấp có thể xảy ra.

Nâng cấp một lớp là chuyển đổi lƣợc đồ các lớp cũ, và các lớp cũ đƣợc thay bởi lớp mới. Nâng cấp xẩy ra khi nào đƣợc thể hiện ở hình 3.4 trong [17]

Hình trên, biểu diễn nhƣ là một chuỗi của các trạng thái của một node. Mũi tên lớn chỉ ra chuyển trạng thái. Trong mỗi trạng thái, hình chữ nhật là đối tƣợng hiện tại của nút, và các vòng tròn là các hệ thống. Phiên bản mới hơn là bên phải. Đối tƣợng có thể chỉ các cuộc gọi đƣợc chỉ ra bởi các mũi tên nhỏ. Nút xử lý cuộc gọi này cho các phiên bản 1, 2, và 3, nhƣng chỉ có "nút nâng cấp lên phiên bản 2" dịch vụ chuyển tiếp thực sự phá vỡ nút.

Nâng cấp 1 lớp bao gồm 6 thành phần <oldClassID, newClassID, TF, SF, pastSO, futureSO>. Trong đó: OldClassID định danh các lớp cũ; newClassID định danh các lớp mà để thay thế ;TF định danh một hàm chuyển đổi để phát sinh trạng thái ổn định ban đầu cho các đối tƣợng mới từ trạng thái ổn định của đối tƣợng cũ;SF định danh 1 hàm lịch trìnhtrình để bảo với một nút khi nó cần nâng cấp;PastSO và futureSO định danh các lớp cho các đối tƣợng mô phỏng cho phép các nút để tƣơng thích trên các phiên bản.

Một đối tƣợng futureSO cho phép một nút hỗ trợ hành vi của lớp mới trƣớc khi nâng cấp. Một đối tƣợng pastSO cho phép một nút để hỗ trợ hành vi của lớp cũ sau khi nâng cấp

Thiết kế này cho phép nâng cấp các nút để hoạt động với các nút không phải nâng cấp. Trong thực tế, một loạt các đối tƣợng mô phỏng có thể kích hoạt các nút đƣợc phân cách bởi một số phiên bản tƣơng thích, đó là điều quan trọng khi nâng cấp xảy ra từ từ hoặc khi các nút có thể bị ngắt kết nối trong thời gian dài. thiết kế này là mô-đun hóa: xác định các thành phần của một lớp nâng cấp đòi hỏi một sự hiểu biết về lớp mới và lớp cũ, bất kể có bao nhiêu phiên bản đã tồn tại và có bao nhiêu phiên bản riêng biệt có các nút truyền thông với nhau.

Việc nâng cấp hệ thống đƣợc cài đặt, nâng cấp tại máy chủ. Sau khi xong cá nút đang đƣợc cung cấp dịch vụ phát hiện ra các phiên bản mới thông qua việc bỏ phiếu hay tin đồn. Sau đó các nút riêng lẻ sẽ nâng cấp theo đúng lịch trình có sẵn. Hình 3.4 dƣới đây thể hiện việc nâng cấp giữa 2 nút từ phiên bản V lên phiên bản V+1. Khi có yêu cầu cài đặt nâng cấp theo đúng lịch trình, tại mỗi nút sẽ đƣợc cài đặt đối tƣợng mô

phỏng của phiên bản V + 1. Khi một nút đƣợc nâng cấp lên phiên bản V + 1, giả sử là nút B trong hình. Đồng thời sẽ phát sinh ra một đối tƣợng mô phỏng của phiên bản B (việc điều phối đối tƣợng mô phỏng sẽ trình bầy kĩ ở phần sau) để tiếp tục cung cấp dịch vụ cho nút A và không ảnh hƣởng tới các chƣơng trình đang đƣợc cung cấp của nút B. Khi nút A nâng cấp thành công lên phiên bản V+1 thì cũng nhƣ nút B, có một đối tƣợng mô phỏng của nút A để cung cấp dịch vụ cho các nút khác cần dịch vụ của A.

Nhƣ vậy, tại mỗi nút việc điều khiển các cuộc gọi qua phiên bản thông qua đối tƣợng mô phỏng (SOs). PastSOs xử lý các phiên bản cũ; FutureSOs xử lý các phiên bản mới hơn. Mỗi một nút là một đối tƣợng, là thể hiện của một lớp.

Hình 3.5 Nâng cấp 2 nút từ phiên bản V lên phiên bản V+1

Với nhiều hơn 2 nút việc nâng cấp cũng diễn ra tƣơng tự nhƣ hình 3.5. Note A [V] Note B [V] V+1 V+1 Note A [V] Note B [V] Note A [V] Note B [V+1] V+1 V Note A [V+1] Note B [V+1] V V Note A [V+1] Note B [V+1]

Hình 3.6 Nâng cấp 4 nút từ phiên bản V lên phiên bản V+1

Các cơ sở hạ tầng nâng cấp là không nhìn thấy đối với hệ thống đang đƣợc nâng cấp. Cơ sở hạ tầng nói về thông tin nâng cấp các nút trong hệ thống, chọn các nút để nâng cấp phần mềm vào các thời điểm thích hợp, và cho phép các nút chạy các phiên bản khác nhau để tƣơng thích.

Để nâng cấp một nút, thì tại mỗi nút khi nâng cấp cần xác định những yêu cầu sau để đảm bảo cho hệ thống vẫn luôn chạy ổn định mà không cần phải tạm ngƣng hay xẩy ra những xung đột giữa các phiên bản:

 Mỗi nút điều khiển các cuộc gọi giữa cá nút trong hệ thống thông qua phiên bản đối tƣợng mô phỏng (SOs), SOs sẽ có nhiệm vụ cung cấp các dịch vụ, tài nguyên khi các nút đang trong qúa trình nâng cấp.

 PastSOs xử lý các phiên bản cũ, cung cấp các dịch vụ cho các nút liên kết mà chƣa kịp thời nâng cấp;

 FutureSOs xử lý các phiên bản mới hơn, cung cấp dịch vụ cho các nút mà đã nâng cấp khi.

Việc nâng cấp tại mỗi nút sẽ tiến hành theo lịch trình sau:  Cài đặt futureSO để hỗ trợ các phiên bản mới;

 Chờ cho đến khi lịch trình cho phép nút để nâng cấp;

 Chạy hàm chuyển trạng thái;

 Cài đặt pastSO để hỗ trợ các phiên bản cũ;  Bắt đầu phần mềm nút mới.

Các thành phần futureSO, pastSO, hàm lịch trình, hàm chuyển trạng thái khi nâng cấp sẽ đƣợc trình bầy ở các phần tiếp theo.

3.3 Hàm lịch trình

Hàm lịch trình (SF) là thủ tục đƣợc xác định bởi trình nâng cấp để liên cho các nút biết khi nào nâng cấp.Khi mỗi nút cần nâng cấp nó sẽ kiểm tra và chờ tới lịch trình để bắt đầu thực thi.Với hàm lịch trìnhcho phép chạy trên chính các nút nó đang thực thi, do vậy nó có thể đáp ứng việc thay đổi trên các môi trƣờng khác nhau không giống nhƣ các hệ thống nâng cấp tập trung đang tồn tại [14][15].

Chức năng lập lịch trình có thể yêu cầu một số thông tin để quyết định khi nào tín hiệu có hiệu lực thực thi. Đầu tiên, SF có thể cần thông tin cơ bản về các nút vật lý mà trên đó nó chạy. Tiếp theo, SF có thể cần biết thông tin về trạng thái của đối tƣợng nút có sẵng sàng hay không. Cuối cùng, SF có thể cần thông tin về các nút khác trong hệ thống, và đặc biệt là các nút mà nút của nó đang giao tiếp.

Một chức năng lập lịch là có thể xem xét trạng thái của các nút vật lý mà trên đó nó cƣ trú, chẳng hạn nhƣ vị trí vật lý hiện thời, tải CPU, tải mạng, và thời giancục bộ. SF truy cập vào tài nguyên thông qua hệ thống giao tiếp. Thêm vào đó, hệ thống điều hành cung cấp truy cập ngẫu nhiên vào máy và tính giờ định kỳ cho phép.

Một chức năng lập kế hoạch có thể xem xét trạng thái của đối tƣợng hiện tại. Nói chung, có thể dự đoán một phầntrạng thái của một đối tƣợng một SF có thể cần. Thay vào đó, SF chỉ đọc khi truy cập vào tất cả các trạng thái của một nút khác.

Để có thể nâng cấp thành công, một hàm lập lịch trình cần có những chức năng cơ bản sau:

1. SF phải có tín hiệu cuối cùng, tức là, khi hoàn thành công việc tại một nút nó không phải phụ thuộc vào cuộc gọi lỗi hoặc bế tắc. (Một SF vẫn có thể thực hiện cuộc gọi nhƣ vậy, nhƣng nó phải đƣợc chuẩn bị sẵn sàng cho họ thất bại)

2. Một SF nên hạn chế gián đoạn dịch vụ bằng cách: nâng cấp các nút cung cấp dự phòng cho một dịch vụ ở những lần khác nhau, nâng cấp các nút cung cấp một dịch vụ mới trƣớc khi nâng cấp các nút mà sẽ sử dụng nó, nâng cấp các nút sử dụng một dịch vụ chƣa cung cấp hiện thời trƣớc khi nâng cấp nhữngngƣời cung cấp cho nó.

3. Một SF nên tín hiệu càng sớm càng tốt

Một phần của tài liệu (Luận văn thạc sĩ) nâng cấp động các thành phần của hệ thống phân tán (Trang 26 - 31)