1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề tài đồng bộ đồng hồ vật lý các máy tính trong hệ thống theo thuật toán berkeley

24 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồng Bộ Đồng Hồ Vật Lý Các Máy Tính Trong Hệ Thống Theo Thuật Toán Berkeley
Tác giả Nguyễn Vũ Quang, Nguyễn Thị Hiền, Nguyễn Thị Thu Hiền, Nguyễn Trọng Nhân, Nguyễn Dương Phi
Người hướng dẫn ThS. Lê Ngọc Bảo
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án cuối kỳ
Năm xuất bản 2023
Thành phố TPHCM
Định dạng
Số trang 24
Dung lượng 1,2 MB

Nội dung

Trong bối cảnh này, việc áp dụng thuật toán đồng bộ đồng hồ vật lý, đặc biệt là thuật toán Berkeley, trở nên hết sức quan trọng.Lý do chọn đề tài này xuất phát từ nhu cầu ngày càng tăng

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN

THEO THUẬT TOÁN BERKELEY

Giảng viên hướng dẫn : ThS LÊ NGỌC BẢO

Trang 2

LỜI CẢM ƠN

Em xin bày tỏ lòng biết ơn sâu sắc tới Học viện Công nghệ Bưu chính Viễn thông vì đã đưamôn học Các hệ thống phân tán vào chương trình học của chúng em Đồng thời, em muốn gửi lờicảm ơn chân thành đến Thầy Lê Ngọc Bảo, người đã dành thời gian và tâm huyết hướng dẫn chúng em trong suốt hành trình học tập

Thầy không chỉ là người hướng dẫn mà còn là nguồn động viên quan trọng, giúp em nhận thức rõ hơn về tầm quan trọng của các hệ thống phân tán trong lĩnh vực công nghệ thông tin Thầy đã chia sẻ những kiến thức sâu rộng và cung cấp ví dụ minh họa, giúp em tiếp cận môn học một cách linh hoạt và thú vị

Đặc biệt, em muốn biểu hiện lòng biết ơn đặc biệt đến tâm huyết của Thầy trong việc hướng dẫn về kỹ năng và kinh nghiệm cần thiết cho việc nghiên cứu và triển khai "Các hệ thống phân tán" Những kỹ năng này không chỉ là đòn bẩy cho quá trình học tập mà còn là nền tảng quan trọng cho sự phát triển nghề nghiệp trong tương lai

Em hy vọng rằng Học viện sẽ tiếp tục phát triển và cập nhật chương trình học với các môn học chất lượng như "Các hệ thống phân tán" Điều này sẽ mang lại cơ hội cho sinh viên như em

để nắm bắt và ứng dụng kiến thức một cách hiệu quả, từ đó nâng cao khả năng sáng tạo và ứng dụng trong thực tế

Cuối cùng, em trân trọng nhận định về tầm quan trọng của sự đánh giá và góp ý của Thầy

Lê Ngọc Bảo đối với bài luận của em Em coi đây là cơ hội quý báu để hoàn thiện bản thân và xin chân thành cảm ơn Thầy vì sự hỗ trợ và sự hướng dẫn chân thành trong quá trình học tập

Trang 3

1 GIỚI THIỆU CHUNG

1.1 Lý do chọn đề tài

Trong thời đại ngày nay, khi công nghệ thông tin ngày càng phát triển, hệ thống phân tán đóng một vai trò quan trọng trong việc xử lý và quản lý thông tin Các máy tính phân tán cần phảiduy trì đồng bộ về thời gian để đảm bảo tính nhất quán và đáng tin cậy của dữ liệu Trong bối cảnh này, việc áp dụng thuật toán đồng bộ đồng hồ vật lý, đặc biệt là thuật toán Berkeley, trở nên hết sức quan trọng

Lý do chọn đề tài này xuất phát từ nhu cầu ngày càng tăng về việc đảm bảo đồng bộ thời gian giữa các máy tính phân tán trong một hệ thống Một hệ thống phân tán hiệu quả không chỉ đòi hỏi sự tương tác chính xác giữa các thành phần mà còn đề cao tính nhất quán trong việc đánh dấu thời gian Thuật toán Berkeley, được thiết kế để giải quyết vấn đề đồng bộ hóa thời gian giữacác máy tính phân tán, trở thành sự chọn lựa lý tưởng để nghiên cứu và triển khai

Qua việc áp dụng thuật toán Berkeley, chúng ta có thể tối ưu hóa quá trình đồng bộ hóa thời gian, giảm thiểu độ trễ và tăng cường khả năng chịu lỗi của hệ thống Đồng thời, việc này còn mang lại những lợi ích to lớn cho việc phát triển các ứng dụng và dịch vụ phức tạp, nơi tính nhất quán và đáng tin cậy là chìa khóa của sự thành công

Trong bối cảnh hiện nay, khi các tổ chức và doanh nghiệp ngày càng chú trọng đến sự kết nối liền mạch giữa các thành phần hệ thống, nghiên cứu về áp dụng thuật toán Berkeley trở nên càng trở nên thiết thực và cần thiết Bài báo cáo này sẽ tập trung vào việc trình bày cơ sở lý thuyết và ứng dụng thực tế của thuật toán Berkeley trong bối cảnh các hệ thống phân tán, với hy vọng đóng góp vào sự hiểu biết và phát triển của lĩnh vực này

1.2 Giới thiệu về thuật toán Berkeley

1.2.1 Khái niệm

Thuật toán Berkeley là một phương pháp đồng bộ hóa đồng hồ trong tính toán phân tán, được phát triển bởi Gusella và Zatti tại Đại học California, Berkeley vào năm 1989 Thuật toán này được thiết kế để sử dụng trong mạng nội bộ, giả định rằng không có máy tính nào có nguồn thời gian chính xác Nó được thiết kế để sử dụng trong mạng nội bộ

1.2.2 Hướng tiếp cận

- Một máy chủ thời gian Server sẽ gửi thời gian của nó đến tất

cả các máy tính để thăm dò sự khác biệt thời gian

Lấy ví dụ: Giả sử có 3 đồng hồ T1,T2,T3 Trong đó T1 là

đồng hồ Server đang là 3h các đồng hồ còn lại là của

Clientvới T2 =2h50’, T3= 3h25’ theo như hình bên

Chú thích:

 Time daemon (còn gọi là "time server"), có nhiệm vụ

chính là duy trì thời gian chung cho toàn bộ hệ thống,

giúp đồng bộ hóa đồng hồ của các máy tính khác trong

mạng

Hình 1.1 Ví dụ thuật toán Berkeley (a)

Trang 4

 Network: hệ thống mạng nội bộ Gỉa sử độ trễ mạng

không đáng kể

- Các máy tính tính toán độ chênh lệch với thời gian mà máy

chủ gửi tới và sau đó trả lời lại máy chủ

Theo ví dụ ban đầu, T2 và T3 tính toán độ lệch thời gian và

gửi về cho Server lần lượt là: T1’ = -10’ và T2’ = +25’ (T1’,

T2’ lần lượt là độ lệch thời gian của các máy T2 và T3) Dấu

“-” biểu thị cho việc T2 trễ hơn T1 và “+” là T3 sớm hơn T1

- Máy chủ tính toán chênh lệch thời gian trung bình cho mỗi

máy tính: T = (0 + T1’ + T2’)/3 = (0 - 10 + 25)/3 = 5’

- Sau đó Server sẽ đặt thời gian của mình là: Tnew = 3h + 5’ Và

báo cho các máy Client T2 (+15') và T3 (-20')

Hình 1.2 Ví dụ thuật toán Berkeley (b)

Hình 1.3 Ví dụ thuật toán Berkeley (c)

Trang 5

2 NỘI DUNG THỰC HIỆN

2.1 Hướng tưởng thực hiện

Bài làm xây dựng một hệ thống có server và client kết nối vào server thông qua trang web đơn giản hiển thị thời gian của client khi truy cập vào trang web Server sẽ gửi yêu cầu thời gửi thời gian đến các client có trong hệ thống và các thiết bị trong hệ thống sẽ gửi cho server thời gian của mình Server lập tức tính toán để tìm ra thời gian đồng bộ cho toàn hệ thống và sau đó gửi lại yêu cầu đồng bộ thời gian kèm thời gian chuẩn mà nó đã tính toán cho các thiết bị khác

2.3 Công nghệ được sử dụng

2.3.1 JavaScript

JavaScript là ngôn ngữ lập trình được nhà phát triển sử dụng để tạo trang web tương tác Từlàm mới bảng tin trên trang mạng xã hội đến hiển thị hình ảnh động và bản đồ tương tác, các chức năng của JavaScript có thể cải thiện trải nghiệm người dùng của trang web Là ngôn ngữ kịch bản phía máy khách, JavaScript là một trong những công nghệ cốt lõi của World Wide Web

Ví dụ: khi duyệt internet, bất cứ khi nào bạn thấy quảng cáo quay vòng dạng hình ảnh, menu thả xuống nhấp để hiển thị hoặc màu sắc phần tử thay đổi động trên trang web cũng chính là lúc bạn thấy các hiệu ứng của JavaScript

Hình 2.4 Hình minh họa JavaScript

JavaScript có những ưu điểm sau:

- Dễ dàng học và sử dụng: Cú pháp của JavaScript được lấy cảm hứng từ ngôn ngữ lập trình Java, rất dễ để học và viết mã Các nhà phát triển sử dụng JavaScript trong hầu hết các trang web và ứng dụng di động để viết tập lệnh phía máy khách Node.js cũng đã trở nên hết sức phổ biến đối với việc viết mã backend trong thập kỷ qua Nhiều nền tảng phát trực tuyến và video phổ biến đã được viết mã bằng Node.js

- Có thể không phụ thuộc vào nền tảng: Không giống như các ngôn ngữ lập trình khác, có thể chèn JavaScript vào bất kỳ trang web nào và sử dụng với nhiều ngôn ngữ và khung phát triển

Trang 6

web khác Sau khi viết, bạn có thể chạy mã JavaScript trên bất kỳ máy nào Do đó, với

JavaScript, việc phát triển ứng dụng có thể không phụ thuộc vào nền tảng

- Giảm tải máy chủ: Có thể sử dụng JavaScript để giảm tải máy chủ và tắc nghẽn mạng vì JavaScript có thể chạy các phép toán logic và thực hiện nhiều công việc của máy chủ trên chính máy khách

- Cải thiện giao diện người dùng: JavaScript tạo ra các trang web tinh tế giúp thuận tiện trong việc tìm kiếm và xử lý thông tin phức tạp Các nhà phát triển áp dụng JavaScript để mở rộng chức năng và độ dễ đọc cũng như để tương tác giữa người dùng và trang web hiệu quả hơn

- Hỗ trợ đồng thời: JavaScript có thể chạy song song nhiều tập hợp hướng dẫn khác nhau Về phần backend, Node.js có thể giải quyết và xử lý các phản hồi của máy chủ được mở rộng quy

mô mà không tiêu tốn cùng một lượng băng thông để làm việc đó

Hình 2.5 Hình minh họa NodeJS

Tính mã nguồn mở của NodeJS mang lại sự minh bạch và cơ hội cho cộng đồng lập trình Mã nguồn này không chỉ được công bố một cách công khai mà còn được bảo dưỡng và phát triển bởi một đội ngũ đa dạng các đóng góp từ lập trình viên trên toàn thế giới

Một điểm nổi bật khác của NodeJS là khả năng hỗ trợ đa nền tảng Không phụ thuộc vào bất

kỳ hệ điều hành cụ thể nào, NodeJS có thể hoạt động mượt mà trên Linux, macOS, và

Windows, tạo điều kiện thuận lợi cho lập trình viên làm việc trong các môi trường đa dạng.NodeJS không chỉ là một môi trường thời gian chạy mã JavaScript truyền thống mà còn là cầunối giữa trình duyệt và server Trước khi sự xuất hiện của NodeJS, JavaScript chỉ có thể thực thi trong môi trường trình duyệt và chỉ dành cho việc phát triển ứng dụng front-end NodeJS

Trang 7

đã mở rộng giới hạn này bằng cách cung cấp môi trường thời gian chạy bên ngoài trình duyệt, được xây dựng trên cơ sở của công cụ JavaScript nổi tiếng của Chrome, V8 Engine Điều này giúp lập trình viên có khả năng xây dựng ứng dụng back-end bằng ngôn ngữ JavaScript quen thuộc, mở ra một thế giới mới của tính linh hoạt và hiệu suất trong phát triển ứng dụng web.

Gói là một công cụ do ai đó tạo và tải lên nền tảng npm Mỗi gói có một phiên bản Khi gói thay đổi, phiên bản gói sẽ cập nhật npm giúp dễ dàng cập nhật các gói và có thể chuyển đổi phiên bản bất kỳ lúc nào

2.3.2.2 Cài đặt NodeJS và npm

Các bước để thiết lập NodeJS (npm được phân phối chung với NodeJS, khi cài đặt NodeJS thì npm sẽ được cài đặt theo):

- Bước 1: Truy cập trang web chính thức của NodeJS: Node.js (nodejs.org)

Hình 2.6 Giao diện trang web NodeJS

- Bước 2: Chọn phiên bản thích hợp để tải về cài đặt (1 trong 2 nút theo mũi tên bên trên)

Trang web tự động phát hiện hệ điều hành máy tính Có thể nhấp vào nút phiên bản “LTS”

được đề xuất cho hầu hết người dùng hoặc nút còn lại là phiên bản mới nhất tính đến lúc truy

cập trang web Dù bằng cách nào thì nó cũng sẽ tải xuống tệp cài đặt có phần mở rộng msi.

LTS là viết tắt của “Hỗ trợ dài hạn” Nó được khuyến khích cho hầu hết người dùng Nếu

muốn triển khai ứng dụng của mình vào môi trường sản xuất, hãy sử dụng phiên bản LTS

Ngoài ra, có thể tải và sử dụng những phiên bản khác bằng cách chọn “Other Downloads”:

Trang 8

Hình 2.7 Giao diện download các phiên bản của NodeJS

Tệp thiết lập có sẵn để tải xuống cho các nền tảng khác nhau như macOS hay Linux cũng như

ở các định dạng khác nhau như msi và zip

- Bước 3: Tệp được lưu về theo đường dẫn mặc định của thiết bị Tệp để cài đặt có dạng như sau:

Nhấp đúp chuột để thực thi Thao tác này sẽ mở ra cửa sổ chào mừng để cài đặt Node.js Bấm

vào nút Tiếp theo (Next) để bắt đầu quá trình cài đặt Sau khi nhất Next sẽ đến thỏa thuận cấp

phép người dùng cuối Sau khi đọc và đôngy ý cài đặt, nhấn chọn ô “I accept the terms in the

License Agreement” một lần và nhấn Next.

Hình 2.8 Cài đặt NodeJS (1)

- Bước 4: Chọn thư mục đích để cài đặt Node.js Có thể thay đổi thư mục đích bằng cách nhấp

vào nút Thay đổi… (Change…) Nhấn Next để tiếp tục.

Trang 9

Hình 2.9 Cài đặt NodeJS (2)

- Bước 5: Có thể thay đổi cách cài đặt các tính năng bằng cách nhấn vào biểu tượng trong cây bên dưới để thay đổi Nếu không chúng sẽ được cài đặt theo mặc định

Hình 2.10 Cài đặt NodeJS (3)

Sau đó nhấn Next để chuyển sang bước tiếp theo của quá trình cài đặt.

- Bước 6: Đến bước này, cửa sổ thiết lập công cụ cho module gốc hiện ra Có thể không chọn vì

nó không bắt buộc Tiếp tục nhấn Next.

Trang 11

Hình 2.13 Cài đặt NodeJS (6)

Sau khi quá trình cài đặt hoàn tất, chọn Finish để kết thúc quá trình thiệt lập:

Hình 2.14 Cài đặt NodeJS (7)

Để kiểm tra xem việc thiết lập NodeJS đã hoàn toàn thành công hay chưa có thể nhập lệnh sau

vào terminal: node –version

Tương tự với npm: npm version

Nếu có thông báo như sau thì đã thành công:

Trang 12

Hình 2.15 Cài đặt NodeJS (8)

2.3.3 Visual Studio Code

Visual Studio Code là một trình biên tập mã được phát triển bởi Microsoft dành cho

Windows, Linux và macOS Nó hỗ trợ chức năng debug, đi kèm với Git, có syntax highlighting,

tự hoàn thành mã thông minh, snippets (đoạn trích), và cải tiến mã nguồn Nó cũng cho phép tùy chỉnh, do đó, người dùng có thể thay đổi theme (chủ đề), phím tắt, và các tùy chọn khác Visual Studio Code miễn phí và là phần mềm mã nguồn mở

Visual Studio Code được cài đặt theo các bước:

- Bước 1: Truy cập vào trang web của tổ chức theo đường dẫn: https://code.visualstudio.com/

Hình 2.16 Cài đặt Visual Studio Code (1)

Chọn Download for free để tải về phiên bản mới nhất hoặc chọn cụ thể một phiên bản theo

yêu cầu theo mũi tên bên cạnh

- Bước 2: Sau khi đã tải về, nhấn đúp chuột vào tệp vừa tải về để tiến hành cài đặt:

- Bước 3:

Trang 13

Hình 2.17 Cài đặt Visual Studio Code (2)

Tích chọn “I accept the agreement” để đồng ý các điều khoản của Visual Studio Code Sau

đó nhấn Next.

- Bước 4:

Hình 2.18 Cài đặt Visual Studio Code (3)

Tích chọn những ô trong Other theo nhu cầu sử dụng và nhấn Next (lưu ý “Add to PATH” là một lựa chọn cần thiết) Cũng nhấn Next ở các ô tiếp theo.

- Bước 5: Nhấn Install khi đã hoàn tất chọn lựa các phần cần thiết, sau khi đã cài đặt hoàn tất thì chọn Finish.

Trang 14

2.4 Giải quyết bài toán

Hệ thống được xây dựng không quá phức tạp, xây dựng dựa theo mô hình Server/Client gồm có 2tệp JavaScript được xây dựng là server.js và client.js có chức năng tương ứng

2.4.1 Mô tả công việc của Server

Như đã trình bày ở phần giới thiệu đề tài, một thiết bị sẽ đóng vai trò như một server để chạy ứng dụng Có nghĩa là khi ứng dụng bắt đầu chạy từ thiết bị này, tệp server.js sẽ được kích hoạt và server sẽ được hoạt động theo trình tự như sau:

2.4.1.1 Tạo webserver

Sử dụng thư viện Express (một framework phổ biến trong việc xây dựng ứng dụng web bằng Node.js) và Socket.IO (Socket.IO là một thư viện cho phép giao tiếp hai chiều (real-time) giữa máy chủ và trình duyệt, giúp xây dựng các ứng dụng web thời gian thực) trong Node.js để tạo một máy chủ web (web server) và cổng kết nối (port) mà máy chủ sẽ lắng nghe

“const express = require("express");”: Sử dụng require để import thư viện Express vào

trong chương trình Node.js

“const io = require("socket.io");”: Tương tự bên trên, import thư viện Socket.IO

“const port = process.env[2] || 5500;”: Đoạn này đặt giá trị của biến port bằng cách kiểm tra

xem có giá trị được đặt trong biến môi trường process.env[2] hay không Nếu không có, mặc định sẽ là cổng 5500 Cổng này là nơi mà máy chủ sẽ lắng nghe các yêu cầu (requests).

Tiếp tục khởi tạo một ứng dụng Express và kết nối nó với Socket.IO để hỗ trợ giao tiếp thờigian thực giữa máy chủ và các clients (trình duyệt):

“const app = express();”: Tạo một đối tượng ứng dụng Express bằng cách gọi hàm

express() “app” sẽ đại diện cho ứng dụng web được xây dựng bằng Express.

“const http = require("http").Server(app);”: Tạo một máy chủ HTTP bằng cách truyền đối

tượng ứng dụng “app” vào hàm Server() của module “http” Điều này làm cho ứng dụng

Express có thể chạy trên một máy chủ HTTP

“let socket = io(http);”: Tạo một đối tượng “socket” bằng cách gọi hàm io() của thư viện

Socket.IO và truyền vào đối tượng máy chủ HTTP “http” Điều này thiết lập kết nối thời

gian thực giữa máy chủ và trình duyệt thông qua Socket.IO

Trang 15

Sử dụng “http.listen” để lắng nghe các kết nối đến máy chủ HTTP Khi máy chủ được khởi

động và lắng nghe trên cổng được chỉ định, hiển thị một thông điệp ứng dụng đang được chạy trên port đã được định nghĩa trước đó:

2.4.1.2 Xây dựng ứng dụng web

Đầu tiên, thiết lập middleware để phục vụ các tệp tĩnh từ thư mục "public", giúp ứng

dụng có khả năng truy cập và hiển thị các tệp tĩnh này khi được yêu cầu từ trình duyệt (khi các client muốn truy cập vào hệ thống):

Tiếp theo, khai báo các biến toàn cục sẽ được sử dụng trong toàn bộ ứng dụng, bao gồm

danh sách nodes (mỗi thiết bị không phải là server khi truy cập vào ứng dung web sẽ được gọi là một node) chứa thông tin về các node kết nối, clients là số lượng node đang kết nối,

master_time là thời gian của node chủ đạo, synchronized_time là thời gian được đồng bộ hóa,

và các biến khác liên quan đến thuật toán Berkeley:

2.4.1.3 Xử lý sự kiện khi có một client kết nối tới server

Sử dụng sự kiện connection của Socket.IO để lắng nghe kết nối từ các nút trong mạng Mỗi

khi một nút kết nối, thông tin của nó được thêm vào mảng nodes Khi số lượng nút bằng số lượng

kết nối trong phòng time room thuật toán Berkeley được gọi và sau đó một sự kiện synchronize

được phát ra để thông báo thời gian đã đồng bộ

Ngày đăng: 30/01/2024, 04:55

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w